toolkit/exemples/couple/javascript/d3/test/geo/azimuthal-test.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     1 require("../env");
       
     2 require("../../d3");
       
     3 require("../../d3.geo");
       
     4 
       
     5 var vows = require("vows"),
       
     6     assert = require("assert");
       
     7 
       
     8 var suite = vows.describe("d3.geo.azimuthal");
       
     9 
       
    10 suite.addBatch({
       
    11   "azimuthal.stereographic": {
       
    12     topic: function() {
       
    13       return d3.geo.azimuthal().mode("stereographic").translate([0, 0]).scale(100);
       
    14     },
       
    15     "origin": function(azimuthal) {
       
    16       var coords = azimuthal([0, 0]);
       
    17       assert.inDelta(coords[0], 0, 1e-6);
       
    18       assert.inDelta(coords[1], 0, 1e-6);
       
    19       var lonlat = azimuthal.invert(coords);
       
    20       assert.inDelta(lonlat[0], 0, 1e-6);
       
    21       assert.inDelta(lonlat[1], 0, 1e-6);
       
    22     },
       
    23     "Arctic": function(azimuthal) {
       
    24       var coords = azimuthal([0, 85]);
       
    25       assert.inDelta(coords[0], 0, 1e-6);
       
    26       assert.inDelta(coords[1], -91.633117, 1e-6);
       
    27       var lonlat = azimuthal.invert(coords);
       
    28       assert.inDelta(lonlat[0], 0, 1e-6);
       
    29       assert.inDelta(lonlat[1], 85, 1e-6);
       
    30     },
       
    31     "Antarctic": function(azimuthal) {
       
    32       var coords = azimuthal([0, -85]);
       
    33       assert.inDelta(coords[0], 0, 1e-6);
       
    34       assert.inDelta(coords[1], 91.633117, 1e-6);
       
    35       var lonlat = azimuthal.invert(coords);
       
    36       assert.inDelta(lonlat[0], 0, 1e-6);
       
    37       assert.inDelta(lonlat[1], -85, 1e-6);
       
    38     },
       
    39     "Hawaii": function(azimuthal) {
       
    40       var coords = azimuthal([-180, 0]);
       
    41       assert.equal(coords[0], -Infinity);
       
    42       assert.isTrue(isNaN(coords[1]));
       
    43     },
       
    44     "Phillipines": function(azimuthal) {
       
    45       var coords = azimuthal([180, 0]);
       
    46       assert.equal(coords[0], Infinity);
       
    47       assert.isTrue(isNaN(coords[1]));
       
    48     },
       
    49     "Inversion works for non-zero translation": function() {
       
    50       var azimuthal = d3.geo.azimuthal().mode("stereographic").translate([123, 99]).scale(100),
       
    51           coords = azimuthal([0, 85]),
       
    52           lonlat = azimuthal.invert(coords);
       
    53       assert.inDelta(lonlat[0], 0, 1e-6);
       
    54       assert.inDelta(lonlat[1], 85, 1e-6);
       
    55     }
       
    56   },
       
    57   "azimuthal.orthographic": {
       
    58     topic: function() {
       
    59       return d3.geo.azimuthal().mode("orthographic").translate([0, 0]).scale(100);
       
    60     },
       
    61     "origin": function(azimuthal) {
       
    62       var coords = azimuthal([0, 0]);
       
    63       assert.inDelta(coords[0], 0, 1e-6);
       
    64       assert.inDelta(coords[1], 0, 1e-6);
       
    65       var lonlat = azimuthal.invert(coords);
       
    66       assert.inDelta(lonlat[0], 0, 1e-6);
       
    67       assert.inDelta(lonlat[1], 0, 1e-6);
       
    68     },
       
    69     "Arctic": function(azimuthal) {
       
    70       var coords = azimuthal([0, 85]);
       
    71       assert.inDelta(coords[0], 0, 1e-6);
       
    72       assert.inDelta(coords[1], -99.619469, 1e-6);
       
    73       var lonlat = azimuthal.invert(coords);
       
    74       assert.inDelta(lonlat[0], 0, 1e-6);
       
    75       assert.inDelta(lonlat[1], 85, 1e-6);
       
    76     },
       
    77     "Antarctic": function(azimuthal) {
       
    78       var coords = azimuthal([0, -85]);
       
    79       assert.inDelta(coords[0], 0, 1e-6);
       
    80       assert.inDelta(coords[1], 99.619469, 1e-6);
       
    81       var lonlat = azimuthal.invert(coords);
       
    82       assert.inDelta(lonlat[0], 0, 1e-6);
       
    83       assert.inDelta(lonlat[1], -85, 1e-6);
       
    84     },
       
    85     "Hawaii": function(azimuthal) {
       
    86       var coords = azimuthal([-180, 0]);
       
    87       assert.inDelta(coords[0], 0, 1e-6);
       
    88       assert.inDelta(coords[1], 0, 1e-6);
       
    89       var lonlat = azimuthal.invert(coords);
       
    90       assert.inDelta(lonlat[0], 0, 1e-6);
       
    91       assert.inDelta(lonlat[1], 0, 1e-6);
       
    92     },
       
    93     "Phillipines": function(azimuthal) {
       
    94       var coords = azimuthal([180, 0]);
       
    95       assert.inDelta(coords[0], 0, 1e-6);
       
    96       assert.inDelta(coords[1], 0, 1e-6);
       
    97       var lonlat = azimuthal.invert(coords);
       
    98       assert.inDelta(lonlat[0], 0, 1e-6);
       
    99       assert.inDelta(lonlat[1], 0, 1e-6);
       
   100     },
       
   101     "Inversion works for non-zero translation": function() {
       
   102       var azimuthal = d3.geo.azimuthal().mode("orthographic").translate([123, 99]).scale(100),
       
   103           coords = azimuthal([0, 85]),
       
   104           lonlat = azimuthal.invert(coords);
       
   105       assert.inDelta(lonlat[0], 0, 1e-6);
       
   106       assert.inDelta(lonlat[1], 85, 1e-6);
       
   107     }
       
   108   },
       
   109   "azimuthal.gnomonic": {
       
   110     topic: function() {
       
   111       return d3.geo.azimuthal().mode("gnomonic").translate([0, 0]).scale(100);
       
   112     },
       
   113     "origin": function(azimuthal) {
       
   114       var coords = azimuthal([0, 0]);
       
   115       assert.inDelta(coords[0], 0, 1e-6);
       
   116       assert.inDelta(coords[1], 0, 1e-6);
       
   117       var lonlat = azimuthal.invert(coords);
       
   118       assert.inDelta(lonlat[0], 0, 1e-6);
       
   119       assert.inDelta(lonlat[1], 0, 1e-6);
       
   120     },
       
   121     "Arctic": function(azimuthal) {
       
   122       var coords = azimuthal([0, 85]);
       
   123       assert.inDelta(coords[0], 0, 1e-6);
       
   124       assert.inDelta(coords[1], -1143.005230, 1e-6);
       
   125       var lonlat = azimuthal.invert(coords);
       
   126       assert.inDelta(lonlat[0], 0, 1e-6);
       
   127       assert.inDelta(lonlat[1], 85, 1e-6);
       
   128     },
       
   129     "Antarctic": function(azimuthal) {
       
   130       var coords = azimuthal([0, -85]);
       
   131       assert.inDelta(coords[0], 0, 1e-6);
       
   132       assert.inDelta(coords[1], 1143.005230, 1e-6);
       
   133       var lonlat = azimuthal.invert(coords);
       
   134       assert.inDelta(lonlat[0], 0, 1e-6);
       
   135       assert.inDelta(lonlat[1], -85, 1e-6);
       
   136     },
       
   137     "Hawaii": function(azimuthal) {
       
   138       var coords = azimuthal([-180, 0]);
       
   139       assert.inDelta(coords[0], 0, 1e-6);
       
   140       assert.inDelta(coords[1], 0, 1e-6);
       
   141       var lonlat = azimuthal.invert(coords);
       
   142       assert.inDelta(lonlat[0], 0, 1e-6);
       
   143       assert.inDelta(lonlat[1], 0, 1e-6);
       
   144     },
       
   145     "Phillipines": function(azimuthal) {
       
   146       var coords = azimuthal([180, 0]);
       
   147       assert.inDelta(coords[0], 0, 1e-6);
       
   148       assert.inDelta(coords[1], 0, 1e-6);
       
   149       var lonlat = azimuthal.invert(coords);
       
   150       assert.inDelta(lonlat[0], 0, 1e-6);
       
   151       assert.inDelta(lonlat[1], 0, 1e-6);
       
   152     },
       
   153     "Inversion works for non-zero translation": function() {
       
   154       var azimuthal = d3.geo.azimuthal().mode("stereographic").translate([123, 99]).scale(100),
       
   155           coords = azimuthal([0, 85]),
       
   156           lonlat = azimuthal.invert(coords);
       
   157       assert.inDelta(lonlat[0], 0, 1e-6);
       
   158       assert.inDelta(lonlat[1], 85, 1e-6);
       
   159     }
       
   160   },
       
   161   "azimuthal.equidistant": {
       
   162     topic: function() {
       
   163       return d3.geo.azimuthal().mode("equidistant").translate([0, 0]).scale(100);
       
   164     },
       
   165     "origin": function(azimuthal) {
       
   166       var coords = azimuthal([0, 0]);
       
   167       assert.inDelta(coords[0], 0, 1e-6);
       
   168       assert.inDelta(coords[1], 0, 1e-6);
       
   169       var lonlat = azimuthal.invert(coords);
       
   170       assert.inDelta(lonlat[0], 0, 1e-6);
       
   171       assert.inDelta(lonlat[1], 0, 1e-6);
       
   172     },
       
   173     "Arctic": function(azimuthal) {
       
   174       var coords = azimuthal([0, 85]);
       
   175       assert.inDelta(coords[0], 0, 1e-6);
       
   176       assert.inDelta(coords[1], -148.352986, 1e-6);
       
   177       var lonlat = azimuthal.invert(coords);
       
   178       assert.inDelta(lonlat[0], 0, 1e-6);
       
   179       assert.inDelta(lonlat[1], 85, 1e-6);
       
   180     },
       
   181     "Antarctic": function(azimuthal) {
       
   182       var coords = azimuthal([0, -90]);
       
   183       assert.inDelta(coords[0], 0, 1e-6);
       
   184       assert.inDelta(coords[1], 157.079632, 1e-6);
       
   185       var lonlat = azimuthal.invert(coords);
       
   186       assert.inDelta(lonlat[0], 0, 1e-6);
       
   187       assert.inDelta(lonlat[1], -90, 1e-6);
       
   188     },
       
   189     "Hawaii": function(azimuthal) {
       
   190       var coords = azimuthal([-180, 0]);
       
   191       assert.inDelta(coords[0], -314.159265, 1e-6);
       
   192       assert.inDelta(coords[1], 0, 1e-6);
       
   193       var lonlat = azimuthal.invert(coords);
       
   194       assert.inDelta(lonlat[0], -180, 1e-6);
       
   195       assert.inDelta(lonlat[1], 0, 1e-6);
       
   196     },
       
   197     "Phillipines": function(azimuthal) {
       
   198       var coords = azimuthal([180, 0]);
       
   199       assert.inDelta(coords[0], 314.159265, 1e-6);
       
   200       assert.inDelta(coords[1], 0, 1e-6);
       
   201       var lonlat = azimuthal.invert(coords);
       
   202       assert.inDelta(lonlat[0], 180, 1e-6);
       
   203       assert.inDelta(lonlat[1], 0, 1e-6);
       
   204     },
       
   205     "Inversion works for non-zero translation": function() {
       
   206       var azimuthal = d3.geo.azimuthal().mode("stereographic").translate([123, 99]).scale(100),
       
   207           coords = azimuthal([0, 85]),
       
   208           lonlat = azimuthal.invert(coords);
       
   209       assert.inDelta(lonlat[0], 0, 1e-6);
       
   210       assert.inDelta(lonlat[1], 85, 1e-6);
       
   211     }
       
   212   },
       
   213   "azimuthal.equalarea": {
       
   214     topic: function() {
       
   215       return d3.geo.azimuthal().mode("equalarea").translate([0, 0]).scale(100);
       
   216     },
       
   217     "origin": function(azimuthal) {
       
   218       var coords = azimuthal([0, 0]);
       
   219       assert.inDelta(coords[0], 0, 1e-6);
       
   220       assert.inDelta(coords[1], 0, 1e-6);
       
   221       var lonlat = azimuthal.invert(coords);
       
   222       assert.inDelta(lonlat[0], 0, 1e-6);
       
   223       assert.inDelta(lonlat[1], 0, 1e-6);
       
   224     },
       
   225     "Arctic": function(azimuthal) {
       
   226       var coords = azimuthal([0, 85]);
       
   227       assert.inDelta(coords[0], 0, 1e-6);
       
   228       assert.inDelta(coords[1], -135.118041, 1e-6);
       
   229       var lonlat = azimuthal.invert(coords);
       
   230       assert.inDelta(lonlat[0], 0, 1e-6);
       
   231       assert.inDelta(lonlat[1], 85, 1e-6);
       
   232     },
       
   233     "Antarctic": function(azimuthal) {
       
   234       var coords = azimuthal([0, -90]);
       
   235       assert.inDelta(coords[0], 0, 1e-6);
       
   236       assert.inDelta(coords[1], 141.421356, 1e-6);
       
   237       var lonlat = azimuthal.invert(coords);
       
   238       assert.inDelta(lonlat[0], 180, 1e-6);
       
   239       assert.inDelta(lonlat[1], -90, 1e-6);
       
   240     },
       
   241     "Hawaii": function(azimuthal) {
       
   242       var coords = azimuthal([-180, 0]);
       
   243       assert.equal(coords[0], -Infinity);
       
   244       assert.isTrue(isNaN(coords[1]));
       
   245     },
       
   246     "Phillipines": function(azimuthal) {
       
   247       var coords = azimuthal([180, 0]);
       
   248       assert.equal(coords[0], Infinity);
       
   249       assert.isTrue(isNaN(coords[1]));
       
   250     },
       
   251     "Inversion works for non-zero translation": function() {
       
   252       var azimuthal = d3.geo.azimuthal().mode("stereographic").translate([123, 99]).scale(100),
       
   253           coords = azimuthal([0, 85]),
       
   254           lonlat = azimuthal.invert(coords);
       
   255       assert.inDelta(lonlat[0], 0, 1e-6);
       
   256       assert.inDelta(lonlat[1], 85, 1e-6);
       
   257     }
       
   258   }
       
   259 });
       
   260 
       
   261 suite.export(module);