The Javascript D3.Js geoOrthographic() function gives us the azimuthal orthographic projection. It is useful when we want to see earth as 3D object and its hemispheres separately.
Syntax:
d3.geoOrthographic()
Parameters: This method does not accept any parameters.
Return Value: This method creates and returns geoOrthographic() projection from given JSON data.
Let us look at an example to understand how we can use geoOrthographic() function.
Example 1: Orthographic projection having no rotation
HTML
<!DOCTYPE html> < html lang = "en" >     < head >     < meta charset = "UTF-8" />     < meta name = "viewport" content=" width = device -width,                 initial-scale = 1 .0" />             < script src =     </ script > </ head >     < body >     < div >         < svg width = "1200" height = "850" >         </ svg >     </ div >         < script >         var svg = d3.select("svg"),             width = +svg.attr("width"),             height = +svg.attr("height");             // The orthographic Earth projection         // Center(0,0) and no rotation         var projection = d3.geoOrthographic()             .center([0, 0])             .scale(250)             .clipAngle(90 )             .translate([width / 2, height / 3])             .rotate([0,0])          // Loading data from json        d3.json("https://raw.githubusercontent.com/"            +"epistler999/GeoLocation/master/world.json",            function (data) {                                  // Draw the map                 svg.append("g")                     .selectAll("path")                     .data(data.features)                     .enter().append("path")                     .attr("fill", "green")                     .attr("d", d3.geoPath()                         .projection(projection)                     )                     .style("stroke", "#ffff")             })     </ script > </ body >     </ html > |
Output:
Example 2: Orthographic projection having Rotation
HTML
<!DOCTYPE html> < html lang = "en" >     < head >     < meta charset = "UTF-8" />     < meta name = "viewport" content =         "width=device-width,initial-scale=1.0" />     < script src =     </ script >  </ head >   < body >     < div >         < svg width = "1200" height = "850" >         </ svg >     </ div >         < script >         var svg = d3.select("svg"),             width = +svg.attr("width"),             height = +svg.attr("height");           const config = {             speed: 0.010,             verticalTilted: -10,             horizontalTilted: 0         }           // The orthographic Earth projection         // Center(0,0) and no rotation         var projection = d3.geoOrthographic()             .center([0, 0])             .scale(250)             .clipAngle(90 )             .translate([width / 2, height / 3])             .rotate([0,0])               const path = d3.geoPath().projection(projection);           // Calling rotate() function for rotation of globe         Rotate();           // Loading data from json         d3.json("https://raw.githubusercontent.com/"             +"epistler999/GeoLocation/master/world.json",             function (data) {                   // Draw the map                 svg.append("g")                     .selectAll("path")                     .data(data.features)                     .enter().append("path")                     .attr("fill", "grey")                     .attr("d", d3.geoPath()                         .projection(projection)                     )                     .style("stroke", "#ffff")         })           // Function to rotate() projection of globe.         function Rotate() {             d3.timer(function (elapsed) {                 projection.rotate(                     [config.speed*elapsed-120,                     config.verticalTilted,                     config.horizontalTilted]);                     svg.selectAll("path").attr("d", path);                 });             }       </ script > </ body >     </ html > |
Output: