]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/geometry/test/strategies/segment_intersection_geo.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / geometry / test / strategies / segment_intersection_geo.cpp
1 // Boost.Geometry
2 // Unit Test
3
4 // Copyright (c) 2016, Oracle and/or its affiliates.
5 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
6
7 // Use, modification and distribution is subject to the Boost Software License,
8 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
9 // http://www.boost.org/LICENSE_1_0.txt)
10
11
12 #include "segment_intersection_geo.hpp"
13
14
15 template <typename T>
16 void test_geographic()
17 {
18 typedef bg::model::point<double, 2, bg::cs::geographic<bg::degree> > point_t;
19 typedef bg::model::segment<point_t> segment_t;
20
21 test_all_strategies<segment_t, point_t>(
22 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-1 -2, -1 -1)", 'a', "POINT(-1 -1)");
23 test_all_strategies<segment_t, point_t>(
24 "SEGMENT(-1 -2, 1 1)", "SEGMENT(-1 -2, -1 -1)", 'f', "POINT(-1 -2)");
25 test_all_strategies<segment_t, point_t>(
26 "SEGMENT(1 1, -1 -1)", "SEGMENT(-1 -2, -1 -1)", 't', "POINT(-1 -1)");
27 test_all_strategies<segment_t, point_t>(
28 "SEGMENT(1 1, -1 -2)", "SEGMENT(-1 -2, -1 -1)", 'a', "POINT(-1 -2)");
29 test_all_strategies<segment_t, point_t>(
30 "SEGMENT(-1 -2, -1 -1)", "SEGMENT(-1 -1, 1 1)", 'a', "POINT(-1 -1)");
31 test_all_strategies<segment_t, point_t>(
32 "SEGMENT(-1 -2, -1 -1)", "SEGMENT(-1 -2, 1 1)", 'f', "POINT(-1 -2)");
33 test_all_strategies<segment_t, point_t>(
34 "SEGMENT(-1 -2, -1 -1)", "SEGMENT(1 1, -1 -1)", 't', "POINT(-1 -1)");
35 test_all_strategies<segment_t, point_t>(
36 "SEGMENT(-1 -2, -1 -1)", "SEGMENT(1 1, -1 -2)", 'a', "POINT(-1 -2)");
37
38 test_strategies<segment_t, point_t>(
39 "SEGMENT(-1 -2, -1 2)", "SEGMENT(-2 -2, 2 2)",
40 great_elliptic('i', "POINT(-1 -1.000457053724121)"),
41 geodesic_vincenty('i', "POINT(-1 -1.000459099991114)"),
42 geodesic_andoyer('i', "POINT(-1 -1.000453510849886)"));
43 test_strategies<segment_t, point_t>(
44 "SEGMENT(-2 -2, 2 2)", "SEGMENT(-1 -2, -1 2)",
45 great_elliptic('i', "POINT(-1 -1.000457053724121)"),
46 geodesic_vincenty('i', "POINT(-1 -1.000459099991114)"),
47 geodesic_andoyer('i', "POINT(-1 -1.000453510849886)"));
48
49 // crossing X
50 test_strategies<segment_t, point_t>(
51 "SEGMENT(-45 -45, 45 45)", "SEGMENT(-45 45, 45 -45)",
52 great_elliptic('i', "POINT(0 0)"),
53 geodesic_vincenty('i', "POINT(0 -0.0000000019543337739)"),
54 geodesic_andoyer('i', "POINT(0 0.0003512140328446071)"));
55 test_strategies<segment_t, point_t>(
56 "SEGMENT(-45 -45, 45 45)", "SEGMENT(45 -45, -45 45)",
57 great_elliptic('i', "POINT(0 0)"),
58 geodesic_vincenty('i', "POINT(0 -0.0000000019543337739)"),
59 geodesic_andoyer('i', "POINT(0 0.0003512140328446071)"));
60 test_strategies<segment_t, point_t>(
61 "SEGMENT(45 45, -45 -45)", "SEGMENT(-45 45, 45 -45)",
62 great_elliptic('i', "POINT(0 0)"),
63 geodesic_vincenty('i', "POINT(0 -0.0000000019543337739)"),
64 geodesic_andoyer('i', "POINT(0 0.0003512140328446071)"));
65 test_strategies<segment_t, point_t>(
66 "SEGMENT(45 45, -45 -45)", "SEGMENT(45 -45, -45 45)",
67 great_elliptic('i', "POINT(0 0)"),
68 geodesic_vincenty('i', "POINT(0 -0.0000000019543337739)"),
69 geodesic_andoyer('i', "POINT(0 0.0003512140328446071)"));
70
71 // crossing X
72 test_strategies<segment_t, point_t>(
73 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-1 1, 1 -1)",
74 great_elliptic('i', "POINT(0 0)"),
75 geodesic_vincenty('i', "POINT(0.000000000000000596354 -0.0000000000626626779)"),
76 geodesic_andoyer('i', "POINT(-0.000000000000000596354 0.0000055787431347552)"));
77 test_strategies<segment_t, point_t>(
78 "SEGMENT(-1 -1, 1 1)", "SEGMENT(1 -1, -1 1)",
79 great_elliptic('i', "POINT(0 0)"),
80 geodesic_vincenty('i', "POINT(0.000000000000000596354 -0.0000000000626626779)"),
81 geodesic_andoyer('i', "POINT(-0.000000000000000596354 0.0000055787431347552)"));
82 test_strategies<segment_t, point_t>(
83 "SEGMENT(1 1, -1 -1)", "SEGMENT(-1 1, 1 -1)",
84 great_elliptic('i', "POINT(0 0)"),
85 geodesic_vincenty('i', "POINT(0.000000000000000596354 -0.0000000000626626779)"),
86 geodesic_andoyer('i', "POINT(-0.000000000000000596354 0.0000055787431347552)"));
87 test_strategies<segment_t, point_t>(
88 "SEGMENT(1 1, -1 -1)", "SEGMENT(1 -1, -1 1)",
89 great_elliptic('i', "POINT(0 0)"),
90 geodesic_vincenty('i', "POINT(0.000000000000000596354 -0.0000000000626626779)"),
91 geodesic_andoyer('i', "POINT(-0.000000000000000596354 0.0000055787431347552)"));
92
93 // equal
94 // //
95 test_all_strategies<segment_t, point_t>(
96 "SEGMENT(-45 -45, 45 45)", "SEGMENT(-45 -45, 45 45)", 'e', "POINT(-45 -45)", "POINT(45 45)", false);
97 // //
98 test_all_strategies<segment_t, point_t>(
99 "SEGMENT(-45 -45, 45 45)", "SEGMENT(45 45, -45 -45)", 'e', "POINT(-45 -45)", "POINT(45 45)", true);
100
101 // starting outside s1
102 // /
103 // |
104 test_all_strategies<segment_t, point_t>(
105 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-2 -2, -1 -1)", 'a', "POINT(-1 -1)");
106 // /
107 // /|
108 test_all_strategies<segment_t, point_t>(
109 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-2 -2, 0 0)", 'm', "POINT(0 0)");
110 // /|
111 // / |
112 test_all_strategies<segment_t, point_t>(
113 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-2 -2, 1 1)", 't', "POINT(1 1)");
114 // |/
115 // /|
116 test_strategies<segment_t, point_t>(
117 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-2 -2, 2 2)",
118 great_elliptic('i', "POINT(0 0)"),
119 geodesic_vincenty('i', "POINT(0.00000013628420059 0.00000013624239008)"),
120 geodesic_thomas('i', "POINT(-0.00004079969079346 -0.00004078714535240)"),
121 geodesic_andoyer('i', "POINT(-0.01217344899138908 -0.01216980051876599)"));
122 // ------
123 // ------
124 test_all_strategies<segment_t, point_t>(
125 "SEGMENT(-1 0, 1 0)", "SEGMENT(-2 0, -1 0)", 'a', "POINT(-1 0)");
126 // ------
127 // ------
128 test_all_strategies<segment_t, point_t>(
129 "SEGMENT(-1 0, 1 0)", "SEGMENT(-2 0, 0 0)", 'c', "POINT(-1 0)", "POINT(0 0)", false);
130 test_all_strategies<segment_t, point_t>(
131 "SEGMENT(-1 0, 1 0)", "SEGMENT(0 0, -2 0)", 'c', "POINT(-1 0)", "POINT(0 0)", true);
132 test_all_strategies<segment_t, point_t>(
133 "SEGMENT(1 0, -1 0)", "SEGMENT(-2 0, 0 0)", 'c', "POINT(0 0)", "POINT(-1 0)", true);
134 test_all_strategies<segment_t, point_t>(
135 "SEGMENT(1 0, -1 0)", "SEGMENT(0 0, -2 0)", 'c', "POINT(0 0)", "POINT(-1 0)", false);
136 // ------
137 // ---------
138 test_all_strategies<segment_t, point_t>(
139 "SEGMENT(-1 0, 1 0)", "SEGMENT(-2 0, 1 0)", 'c', "POINT(-1 0)", "POINT(1 0)", false);
140 test_all_strategies<segment_t, point_t>(
141 "SEGMENT(-1 0, 1 0)", "SEGMENT(1 0, -2 0)", 'c', "POINT(-1 0)", "POINT(1 0)", true);
142 test_all_strategies<segment_t, point_t>(
143 "SEGMENT(1 0, -1 0)", "SEGMENT(-2 0, 1 0)", 'c', "POINT(1 0)", "POINT(-1 0)", true);
144 test_all_strategies<segment_t, point_t>(
145 "SEGMENT(1 0, -1 0)", "SEGMENT(1 0, -2 0)", 'c', "POINT(1 0)", "POINT(-1 0)", false);
146 // ------
147 // ------------
148 test_all_strategies<segment_t, point_t>(
149 "SEGMENT(-1 0, 1 0)", "SEGMENT(-2 0, 2 0)", 'c', "POINT(-1 0)", "POINT(1 0)", false);
150
151 // starting at s1
152 // /
153 // //
154 test_all_strategies<segment_t, point_t>(
155 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-1 -1, 0 0)", 'c', "POINT(-1 -1)", "POINT(0 0)", false);
156 // //
157 // //
158 test_all_strategies<segment_t, point_t>(
159 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-1 -1, 1 1)", 'e', "POINT(-1 -1)", "POINT(1 1)", false);
160 // | /
161 // |/
162 test_all_strategies<segment_t, point_t>(
163 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-1 -1, 2 2)", 'f', "POINT(-1 -1)");
164 // ------
165 // ---
166 test_all_strategies<segment_t, point_t>(
167 "SEGMENT(-1 0, 1 0)", "SEGMENT(-1 0, 0 0)", 'c', "POINT(-1 0)", "POINT(0 0)", false);
168 // ------
169 // ------
170 test_all_strategies<segment_t, point_t>(
171 "SEGMENT(-1 0, 1 0)", "SEGMENT(-1 0, 1 0)", 'e', "POINT(-1 0)", "POINT(1 0)", false);
172 // ------
173 // ---------
174 test_all_strategies<segment_t, point_t>(
175 "SEGMENT(-1 0, 1 0)", "SEGMENT(-1 0, 2 0)", 'c', "POINT(-1 0)", "POINT(1 0)", false);
176
177 // starting inside
178 // //
179 // /
180 test_all_strategies<segment_t, point_t>(
181 "SEGMENT(-1 -1, 1 1)", "SEGMENT(0 0, 1 1)", 'c', "POINT(0 0)", "POINT(1 1)", false);
182 test_all_strategies<segment_t, point_t>(
183 "SEGMENT(-1 -1, 1 1)", "SEGMENT(1 1, 0 0)", 'c', "POINT(0 0)", "POINT(1 1)", true);
184 test_all_strategies<segment_t, point_t>(
185 "SEGMENT(1 1, -1 -1)", "SEGMENT(0 0, 1 1)", 'c', "POINT(1 1)", "POINT(0 0)", true);
186 test_all_strategies<segment_t, point_t>(
187 "SEGMENT(1 1, -1 -1)", "SEGMENT(1 1, 0 0)", 'c', "POINT(1 1)", "POINT(0 0)", false);
188 test_all_strategies<segment_t, point_t>(
189 "SEGMENT(0 0, 1 1)", "SEGMENT(-1 -1, 1 1)", 'c', "POINT(0 0)", "POINT(1 1)", false);
190 test_all_strategies<segment_t, point_t>(
191 "SEGMENT(1 1, 0 0)", "SEGMENT(-1 -1, 1 1)", 'c', "POINT(1 1)", "POINT(0 0)", true);
192 test_all_strategies<segment_t, point_t>(
193 "SEGMENT(0 0, 1 1)", "SEGMENT(1 1, -1 -1)", 'c', "POINT(0 0)", "POINT(1 1)", true);
194 test_all_strategies<segment_t, point_t>(
195 "SEGMENT(1 1, 0 0)", "SEGMENT(1 1, -1 -1)", 'c', "POINT(1 1)", "POINT(0 0)", false);
196 // |/
197 // /
198 test_all_strategies<segment_t, point_t>(
199 "SEGMENT(-1 -1, 1 1)", "SEGMENT(0 0, 2 2)", 's', "POINT(0 0)");
200 // ------
201 // ---
202 test_all_strategies<segment_t, point_t>(
203 "SEGMENT(-1 0, 1 0)", "SEGMENT(0 0, 1 0)", 'c', "POINT(0 0)", "POINT(1 0)", false);
204 // ------
205 // ------
206 test_all_strategies<segment_t, point_t>(
207 "SEGMENT(-1 0, 1 0)", "SEGMENT(0 0, 2 0)", 'c', "POINT(0 0)", "POINT(1 0)", false);
208
209 // starting at p2
210 // |
211 // /
212 test_all_strategies<segment_t, point_t>(
213 "SEGMENT(-1 -1, 1 1)", "SEGMENT(1 1, 2 2)", 'a', "POINT(1 1)");
214 // ------
215 // ---
216 test_all_strategies<segment_t, point_t>(
217 "SEGMENT(-1 0, 1 0)", "SEGMENT(1 0, 2 0)", 'a', "POINT(1 0)");
218
219 // disjoint, crossing
220 // /
221 // |
222 test_all_strategies<segment_t, point_t>(
223 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-3 -3, -2 -2)", 'd');
224 // |
225 // /
226 test_all_strategies<segment_t, point_t>(
227 "SEGMENT(-1 -1, 1 1)", "SEGMENT(2 2, 3 3)", 'd');
228 // disjoint, collinear
229 // ------
230 // ------
231 test_all_strategies<segment_t, point_t>(
232 "SEGMENT(-1 0, 1 0)", "SEGMENT(-3 0, -2 0)", 'd');
233 // ------
234 // ------
235 test_all_strategies<segment_t, point_t>(
236 "SEGMENT(-1 0, 1 0)", "SEGMENT(2 0, 3 0)", 'd');
237
238 // degenerated
239 // /
240 // *
241 test_all_strategies<segment_t, point_t>(
242 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-2 -2, -2 -2)", 'd');
243 // /
244 // *
245 test_all_strategies<segment_t, point_t>(
246 "SEGMENT(-1 -1, 1 1)", "SEGMENT(-1 -1, -1 -1)", '0', "POINT(-1 -1)");
247 // /
248 // *
249 // /
250 test_all_strategies<segment_t, point_t>(
251 "SEGMENT(-1 -1, 1 1)", "SEGMENT(0 0, 0 0)", '0', "POINT(0 0)");
252 // *
253 // /
254 test_all_strategies<segment_t, point_t>(
255 "SEGMENT(-1 -1, 1 1)", "SEGMENT(1 1, 1 1)", '0', "POINT(1 1)");
256 // *
257 // /
258 test_all_strategies<segment_t, point_t>(
259 "SEGMENT(-1 -1, 1 1)", "SEGMENT(2 2, 2 2)", 'd');
260 // similar to above, collinear
261 // * ------
262 test_all_strategies<segment_t, point_t>(
263 "SEGMENT(-1 0, 1 0)", "SEGMENT(-2 0, -2 0)", 'd');
264 // *------
265 test_all_strategies<segment_t, point_t>(
266 "SEGMENT(-1 0, 1 0)", "SEGMENT(-1 0, -1 0)", '0', "POINT(-1 0)");
267 // ---*---
268 test_all_strategies<segment_t, point_t>(
269 "SEGMENT(-1 0, 1 0)", "SEGMENT(0 0, 0 0)", '0', "POINT(0 0)");
270 // ------*
271 test_all_strategies<segment_t, point_t>(
272 "SEGMENT(-1 0, 1 0)", "SEGMENT(1 0, 1 0)", '0', "POINT(1 0)");
273 // ------ *
274 test_all_strategies<segment_t, point_t>(
275 "SEGMENT(-1 0, 1 0)", "SEGMENT(2 0, 2 0)", 'd');
276
277 // Northern hemisphere
278 // --- ------
279 test_all_strategies<segment_t, point_t>(
280 "SEGMENT(-1 50, 1 50)", "SEGMENT(-3 50, -2 50)", 'd');
281 // ------
282 // ---
283 test_all_strategies<segment_t, point_t>(
284 "SEGMENT(-1 50, 1 50)", "SEGMENT(-2 50, -1 50)", 'a', "POINT(-1 50)");
285 // \/
286 // /\ (avoid multi-line comment)
287 test_strategies<segment_t, point_t>(
288 "SEGMENT(-1 50, 1 50)", "SEGMENT(-2 50, 0 50)",
289 great_elliptic('i', "POINT(-0.5 50.0032229484023)"),
290 geodesic_vincenty('i', "POINT(-0.4999999996073994 50.00323192256208)"),
291 geodesic_thomas('i', "POINT(-0.4999999963998482 50.00323192258598)"),
292 geodesic_andoyer('i', "POINT(-0.4999990340391772 50.00323192463806)"));
293 // ________
294 // / _____\ (avoid multi-line comment)
295 test_all_strategies<segment_t, point_t>(
296 "SEGMENT(-1 50, 1 50)", "SEGMENT(-2 50, 1 50)", 't', "POINT(1 50)");
297 // _________
298 // / _____ \ (avoid multi-line comment)
299 test_all_strategies<segment_t, point_t>(
300 "SEGMENT(-1 50, 1 50)", "SEGMENT(-2 50, 2 50)", 'd');
301 // ______
302 // /___ \ (avoid multi-line comment)
303 test_all_strategies<segment_t, point_t>(
304 "SEGMENT(-1 50, 1 50)", "SEGMENT(-1 50, 0 50)", 'f', "POINT(-1 50)");
305 // ------
306 // ------
307 test_all_strategies<segment_t, point_t>(
308 "SEGMENT(-1 50, 1 50)", "SEGMENT(-1 50, 1 50)", 'e', "POINT(-1 50)", "POINT(1 50)", false);
309 // ________
310 // /_____ \ (avoid multi-line comment)
311 test_all_strategies<segment_t, point_t>(
312 "SEGMENT(-1 50, 1 50)", "SEGMENT(-1 50, 2 50)", 'f', "POINT(-1 50)");
313 // ______
314 // / ___\ (avoid multi-line comment)
315 test_all_strategies<segment_t, point_t>(
316 "SEGMENT(-1 50, 1 50)", "SEGMENT(0 50, 1 50)", 't', "POINT(1 50)");
317 // \/
318 // /\ (avoid multi-line comment)
319 test_strategies<segment_t, point_t>(
320 "SEGMENT(-1 50, 1 50)", "SEGMENT(0 50, 2 50)",
321 great_elliptic('i', "POINT(0.5 50.0032229484023)"),
322 geodesic_vincenty('i', "POINT(0.4999999996112415 50.00323192256208)"),
323 geodesic_thomas('i', "POINT(0.5000000051005989 50.00323192258598)"),
324 geodesic_andoyer('i', "POINT(0.5000009655139563 50.00323192463806)"));
325 // ------
326 // ---
327 test_all_strategies<segment_t, point_t>(
328 "SEGMENT(-1 50, 1 50)", "SEGMENT(1 50, 2 50)", 'a', "POINT(1 50)");
329 // ------ ---
330 test_all_strategies<segment_t, point_t>(
331 "SEGMENT(-1 50, 1 50)", "SEGMENT(2 50, 3 50)", 'd');
332
333 // ___|
334 test_all_strategies<segment_t, point_t>(
335 "SEGMENT(0 0, 1 0)", "SEGMENT(1 0, 1 1)", 'a', "POINT(1 0)");
336 // ___|
337 test_all_strategies<segment_t, point_t>(
338 "SEGMENT(1 0, 1 1)", "SEGMENT(0 0, 1 0)", 'a', "POINT(1 0)");
339
340 // |/
341 // /|
342 test_strategies<segment_t, point_t>(
343 "SEGMENT(10 -1, 20 1)", "SEGMENT(12.5 -1, 12.5 1)",
344 great_elliptic('i', "POINT(12.5 -0.50051443471392)"),
345 geodesic_vincenty('i', "POINT(12.5 -0.5005177749487734)"),
346 geodesic_thomas('i', "POINT(12.5 -0.5005177654827411)"),
347 geodesic_andoyer('i', "POINT(12.5 -0.500525380045163)"));
348 // |/
349 // /|
350 test_strategies<segment_t, point_t>(
351 "SEGMENT(10 -1, 20 1)", "SEGMENT(17.5 -1, 17.5 1)",
352 great_elliptic('i', "POINT(17.5 0.50051443471392)"),
353 geodesic_vincenty('i', "POINT(17.5 0.5005177748229335)"),
354 geodesic_thomas('i', "POINT(17.5 0.5005178030678186)"),
355 geodesic_andoyer('i', "POINT(17.5 0.5004949944844279)"));
356
357 // vertical, crossing at the pole or disjoint
358 test_all_strategies<segment_t, point_t>(
359 "SEGMENT(90 45, -90 60)", "SEGMENT(0 50, 180 70)", 'i', "POINT(0 90)");
360 test_all_strategies<segment_t, point_t>(
361 "SEGMENT(90 -45, -90 -60)", "SEGMENT(0 -50, 180 -70)", 'i', "POINT(0 -90)");
362 test_all_strategies<segment_t, point_t>(
363 "SEGMENT(90 45, -90 60)", "SEGMENT(0 -50, 180 -70)", 'd');
364 test_all_strategies<segment_t, point_t>(
365 "SEGMENT(90 -45, -90 -60)", "SEGMENT(0 50, 180 70)", 'd');
366
367 // vertical touching at the pole
368 test_all_strategies<segment_t, point_t>(
369 "SEGMENT(90 90, 90 45)", "SEGMENT(0 90, 0 45)", 'f', "POINT(90 90)"); // should probably be (0 90)
370 test_all_strategies<segment_t, point_t>(
371 "SEGMENT(90 90, 90 45)", "SEGMENT(0 45, 0 90)", 'a', "POINT(90 90)"); // should probably be (0 90)
372 test_all_strategies<segment_t, point_t>(
373 "SEGMENT(90 45, 90 90)", "SEGMENT(0 90, 0 45)", 'a', "POINT(90 90)"); // should probably be (0 90)
374 test_all_strategies<segment_t, point_t>(
375 "SEGMENT(90 45, 90 90)", "SEGMENT(0 45, 0 90)", 't', "POINT(90 90)"); // should probably be (0 90)
376
377 // one vertical with endpoint at a pole
378 /*test_strategies<segment_t, point_t>(
379 "SEGMENT(0 90, 90 0)", "SEGMENT(89 45, 91 45)",
380 great_elliptic('i', "POINT(90 45.00436354465514)"),
381 geodesic_vincenty('i', "POINT(90.00000000000112 45.00437824795338)"),
382 geodesic_thomas('i', "POINT(90.00000000472062 45.00437824797395)"),
383 geodesic_andoyer('i', "POINT(89.99999993672924 45.00437824794587)"));
384 test_strategies<segment_t, point_t>(
385 "SEGMENT(90 0, 0 90)", "SEGMENT(89 45, 91 45)",
386 great_elliptic('i', "POINT(90 45.00436354465514)"),
387 geodesic_vincenty('i', "POINT(90.00000000000112 45.00437824795338)"),
388 geodesic_thomas('i', "POINT(90.00000000472062 45.00437824797395)"),
389 geodesic_andoyer('i', "POINT(89.99999993672924 45.00437824794587)"));
390 test_strategies<segment_t, point_t>(
391 "SEGMENT(0 -90, 90 0)", "SEGMENT(89 -45, 91 -45)",
392 great_elliptic('i', "POINT(90 -45.00436354465514)"),
393 geodesic_vincenty('i', "POINT(90.00000000000112 -45.00437824795338)"),
394 geodesic_thomas('i', "POINT(90.00000000472062 -45.00437824797395)"),
395 geodesic_andoyer('i', "POINT(89.99999993672924 -45.00437824794587)"));
396 test_strategies<segment_t, point_t>(
397 "SEGMENT(90 0, 0 -90)", "SEGMENT(89 -45, 91 -45)",
398 great_elliptic('i', "POINT(90 -45.00436354465514)"),
399 geodesic_vincenty('i', "POINT(90.00000000000112 -45.00437824795338)"),
400 geodesic_thomas('i', "POINT(90.00000000472062 -45.00437824797395)"),
401 geodesic_andoyer('i', "POINT(89.99999993672924 -45.00437824794587)"));*/
402 }
403
404 int test_main(int, char* [])
405 {
406 //test_geographic<float>();
407 test_geographic<double>();
408
409 return 0;
410 }