|
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); |