]>
Commit | Line | Data |
---|---|---|
b32b8144 FG |
1 | // Boost.Geometry |
2 | // Unit Test | |
3 | ||
4 | // Copyright (c) 2016 Oracle and/or its affiliates. | |
5 | ||
6 | // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle | |
7 | ||
8 | // Use, modification and distribution is subject to the Boost Software License, | |
9 | // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | |
10 | // http://www.boost.org/LICENSE_1_0.txt) | |
11 | ||
12 | #ifndef BOOST_GEOMETRY_TEST_INTERSECTION_CASES_HPP | |
13 | #define BOOST_GEOMETRY_TEST_INTERSECTION_CASES_HPP | |
14 | ||
15 | struct coordinates | |
16 | { | |
17 | double lon; | |
18 | double lat; | |
19 | }; | |
20 | ||
21 | struct expected_result | |
22 | { | |
23 | double lon; | |
24 | double lat; | |
25 | }; | |
26 | ||
27 | struct expected_results | |
28 | { | |
29 | coordinates p1; | |
30 | coordinates p2; | |
31 | coordinates q1; | |
32 | coordinates q2; | |
33 | expected_result gnomonic_vincenty; | |
34 | expected_result gnomonic_thomas; | |
35 | expected_result sjoberg_vincenty; | |
36 | expected_result sjoberg_thomas; | |
37 | expected_result sjoberg_andoyer; | |
38 | expected_result great_elliptic; | |
39 | }; | |
40 | ||
41 | #define ND 1000 | |
42 | ||
43 | expected_results expected[] = | |
44 | { | |
45 | { | |
46 | { -1, -1 },{ 1, 1 }, | |
47 | { -1, 1 },{ 1, -1 }, | |
48 | { 0.0000000000000000, 0.0000000000000000 }, | |
49 | { 0.0000000000000000, 0.0000000000000000 }, | |
50 | { 0.0000000000626537, -0.0000000000000000 }, | |
51 | { -0.0000000187861002, -0.0000000000000000 }, | |
52 | { -0.0000055778585615, -0.0000000000000000 }, | |
53 | { -0.0000000000000000, -0.0000000000000000 } | |
54 | },{ | |
92f5a8d4 TL |
55 | // TODO: Newton method in Sjoberg formula is not used in this case |
56 | // due to f1 - f2 == 0. The other method is used instead. | |
57 | // Hence different results. Look into this. | |
b32b8144 FG |
58 | { 1, 1 },{ -1, -1 }, |
59 | { -1, 1 },{ 1, -1 }, | |
60 | { 0.0000000000000000, 0.0000000000000000 }, | |
61 | { 0.0000000000000000, 0.0000000000000000 }, | |
62 | { 0.0000000000000000, 0.0000000000626632 }, | |
63 | { -0.0000000000000006, -0.0000000187889745 }, | |
64 | { -0.0000000000000001, -0.0000055787431353 }, | |
65 | { -0.0000000000000000, 0.0000000000000000 } | |
66 | },{ | |
92f5a8d4 TL |
67 | // TODO: Newton method in Sjoberg formula is not used in this case |
68 | // due to f1 - f2 == 0. The other method is used instead. | |
69 | // Hence different results. Look into this. | |
b32b8144 FG |
70 | { -1, -1 },{ 1, 1 }, |
71 | { 1, -1 },{ -1, 1 }, | |
72 | { 0.0000000000000000, 0.0000000000000000 }, | |
73 | { 0.0000000000000000, 0.0000000000000000 }, | |
74 | { -0.0000000000000000, -0.0000000000626632 }, | |
75 | { -0.0000000000000004, 0.0000000187889746 }, | |
76 | { 0.0000000000000001, 0.0000055787431353 }, | |
77 | { 0.0000000000000000, 0.0000000000000000 } | |
78 | },{ | |
79 | { 1, 1 },{ -1, -1 }, | |
80 | { 1, -1 },{ -1, 1 }, | |
81 | { 0.0000000000000000, 0.0000000000000000 }, | |
82 | { 0.0000000000000000, 0.0000000000000000 }, | |
83 | { -0.0000000000626537, -0.0000000000000000 }, | |
84 | { 0.0000000187860994, 0.0000000000000001 }, | |
85 | { 0.0000055778585615, -0.0000000000000000 }, | |
86 | { -0.0000000000000000, 0.0000000000000000 } | |
87 | },{ | |
88 | { 0, 0 },{ 1, 1 }, | |
89 | { 0, 1 },{ 1, 0 }, | |
90 | { 0.5000000000000000, 0.5000573755188470 }, | |
91 | { 0.5000000000000000, 0.5000573755109839 }, | |
92 | { 0.5000000000313266, 0.5000573755188389 }, | |
93 | { 0.4999999906069524, 0.5000573755152582 }, | |
94 | { 0.4999972102164753, 0.5000573755151276 }, | |
95 | { 0.4999999999999999, 0.5000571197534014 } | |
96 | },{ | |
97 | { 1, 1 },{ 0, 0 }, | |
98 | { 0, 1 },{ 1, 0 }, | |
99 | { 0.5000000000000000, 0.5000573755188470 }, | |
100 | { 0.5000000000000000, 0.5000573755109839 }, | |
101 | { 0.5000000000000000, 0.5000573755501669 }, | |
102 | { 0.4999999999999996, 0.5000573661218464 }, | |
103 | { 0.4999999999999999, 0.5000545856093679 }, | |
104 | { 0.4999999999999999, 0.5000571197534014 } | |
105 | },{ | |
106 | { 0, 0 },{ 1, 1 }, | |
107 | { 1, 0 },{ 0, 1 }, | |
108 | { 0.5000000000000000, 0.5000573755188470 }, | |
109 | { 0.5000000000000000, 0.5000573755109839 }, | |
110 | { 0.4999999999999999, 0.5000573754875109 }, | |
111 | { 0.4999999999999999, 0.5000573849086647 }, | |
112 | { 0.5000000000000000, 0.5000601654208935 }, | |
113 | { 0.4999999999999999, 0.5000571197534014 } | |
114 | },{ | |
115 | { 1, 1 },{ 0, 0 }, | |
116 | { 1, 0 },{ 0, 1 }, | |
117 | { 0.5000000000000000, 0.5000573755188470 }, | |
118 | { 0.5000000000000000, 0.5000573755109839 }, | |
119 | { 0.4999999999686731, 0.5000573755188389 }, | |
120 | { 0.5000000093930521, 0.5000573755152582 }, | |
121 | { 0.5000027897835244, 0.5000573755151276 }, | |
122 | { 0.4999999999999999, 0.5000571197534014 } | |
123 | },{ | |
124 | { 1, 1 }, {2, 2}, | |
125 | {-2, -1}, {-1, -1}, | |
126 | { ND, ND }, | |
127 | { ND, ND }, | |
128 | { -0.9981650042162076, -0.999999718164758 }, | |
129 | { ND, ND }, | |
130 | { ND, ND }, | |
131 | { -0.9981731758085121, -0.9999997213000095 } | |
132 | },{ | |
133 | {-25, -31}, {3, 44}, | |
134 | {-66, -14}, {-1, -1}, | |
135 | { ND, ND }, | |
136 | { ND, ND }, | |
137 | { -15.83269406235058, -4.87746450262433 }, | |
138 | { ND, ND }, | |
139 | { ND, ND }, | |
140 | { -15.82846301029918, -4.869650527718342 } | |
141 | },{ | |
142 | {-47, -8}, {-1, -4}, | |
143 | {-40, -5}, {-5, -5}, | |
144 | { ND, ND }, | |
145 | { ND, ND }, | |
146 | { -10.28209064194141, -5.124101297536392 }, | |
147 | { ND, ND }, | |
148 | { ND, ND }, | |
149 | { -10.29663941896089, -5.123527178300465 } | |
150 | }, { | |
151 | {-43, -8}, {3, -4}, | |
152 | {-43, -5}, {3, -7}, | |
153 | { ND, ND }, | |
154 | { ND, ND }, | |
155 | { -19.95519754153282, -6.521540589691206 }, | |
156 | { ND, ND }, | |
157 | { ND, ND }, | |
158 | { -19.95535387979888, -6.517861579906892 } | |
159 | }, { | |
160 | {-1, -17}, {-5, 3}, | |
161 | {-40, -5}, {-1, -5}, | |
162 | { ND, ND }, | |
163 | { ND, ND }, | |
164 | { -3.424525475838061, -5.070550173747042 }, | |
165 | { ND, ND }, | |
166 | { ND, ND }, | |
167 | { -3.424493504575876, -5.070060631936228 } | |
168 | }, { | |
169 | {-29, -4}, {-1, -5}, | |
170 | {-40, -5}, {-1, -5}, | |
171 | { ND, ND }, | |
172 | { ND, ND }, | |
173 | { -0.9999999978280006, -5.00000000000684 }, | |
174 | { ND, ND }, | |
175 | { ND, ND }, | |
176 | { -0.9999999999999919, -5 } | |
177 | }, { | |
178 | {-4, -6}, {-40, -5}, | |
179 | {-40, -5}, {-1, -5}, | |
180 | { ND, ND }, | |
181 | { ND, ND }, | |
182 | { -40.00000000470697, -4.999999999854269 }, | |
183 | { ND, ND }, | |
184 | { ND, ND }, | |
185 | { -40.00000000000003, -4.999999999999998 } | |
186 | }, { | |
187 | {5, -4}, {-25, -5}, | |
188 | {-40, -5}, {-1, -5}, | |
189 | { ND, ND }, | |
190 | { ND, ND }, | |
191 | { -40.04870859732954, -4.998490166905039 }, | |
192 | { ND, ND }, | |
193 | { ND, ND }, | |
194 | { -39.87674154148858, -5.003778171392734 } | |
195 | }, { | |
196 | {-44, -1}, {38, -7}, | |
197 | {-54, -10}, {27, 3}, | |
198 | { ND, ND }, | |
199 | { ND, ND }, | |
200 | { -12.49994722584679, -4.492062263169279 }, | |
201 | { ND, ND }, | |
202 | { ND, ND }, | |
203 | { -12.49786552878283, -4.48224349980724 } | |
204 | }, { | |
205 | {-29, -5}, {10, -5}, | |
206 | {-40, -5}, {-1, -5}, | |
207 | { ND, ND }, | |
208 | { ND, ND }, | |
209 | { -14.99999999880286, -5.280237387890117 }, | |
210 | { ND, ND }, | |
211 | { ND, ND }, | |
212 | { -14.99999999999999, -5.278284829442087 } | |
213 | }, { | |
214 | {-29, -5}, {7, -5}, | |
215 | {-40, -5}, {-1, -5}, | |
216 | { ND, ND }, | |
217 | { ND, ND }, | |
218 | { -12.68814198534678, -5.255404335144863 }, | |
219 | { ND, ND }, | |
220 | { ND, ND }, | |
221 | { -12.68883814704657, -5.253634733357015 } | |
222 | }, { | |
223 | {-29, -5}, {2, -5}, | |
224 | {-40, -5}, {-1, -5}, | |
225 | { ND, ND }, | |
226 | { ND, ND }, | |
227 | { -6.793546728871506, -5.153444544719724 }, | |
228 | { ND, ND }, | |
229 | { ND, ND }, | |
230 | { -6.794933162619669, -5.152409434095275 } | |
231 | }, { | |
232 | {-29, -5}, {2, -5}, | |
233 | {-30, -5}, {-1, -5}, | |
234 | { ND, ND }, | |
235 | { ND, ND }, | |
236 | { -22.13104411461423, -5.130155316882458 }, | |
237 | { ND, ND }, | |
238 | { ND, ND }, | |
239 | { -22.13016591567375, -5.129277412801533 } | |
240 | }, { | |
241 | {-29, -5}, {2, -5}, | |
242 | {-32, -5}, {-1, -5}, | |
243 | { ND, ND }, | |
244 | { ND, ND }, | |
245 | { -14.99999999908104, -5.187213913248173 }, | |
246 | { ND, ND }, | |
247 | { ND, ND }, | |
248 | { -15.00000000000009, -5.185931965560752 } | |
249 | }, { | |
250 | {-92, -24}, {44, 19}, | |
251 | {-78, -5}, {50, -5}, | |
252 | { ND, ND }, | |
253 | { ND, ND }, | |
254 | { -31.65127861442256, -10.84411293410938 }, | |
255 | { ND, ND }, | |
256 | { ND, ND }, | |
257 | { -31.65294079308247, -10.76785432928444 } | |
258 | }, { | |
259 | {-93, -15}, {22, 3}, | |
260 | {-78, -5}, {50, -5}, | |
261 | { ND, ND }, | |
262 | { ND, ND }, | |
263 | { -32.33383382062637, -10.80295061031259 }, | |
264 | { ND, ND }, | |
265 | { ND, ND }, | |
266 | { -32.26069578187354, -10.73176059393484 } | |
267 | }, { | |
268 | {-93, -15}, {28, 3}, | |
269 | {-78, -5}, {50, -5}, | |
270 | { ND, ND }, | |
271 | { ND, ND }, | |
272 | { -25.71257598566304, -11.13752154787724 }, | |
273 | { ND, ND }, | |
274 | { ND, ND }, | |
275 | { -25.67761999514295, -11.05881610957402 } | |
276 | }, { | |
277 | {-54, -21}, {20, 17}, | |
278 | {-59, -5}, {13, -5}, | |
279 | { ND, ND }, | |
280 | { ND, ND }, | |
281 | { -22.96397490169162, -6.181426780426698 }, | |
282 | { ND, ND }, | |
283 | { ND, ND }, | |
284 | { -22.95999443662035, -6.172089364736989 } | |
285 | }, { | |
286 | {-31, -10}, {-31, -2}, | |
287 | {-37, -10}, {-25, -2}, | |
288 | { ND, ND }, | |
289 | { ND, ND }, | |
290 | { -31.00000000000001, -6.062729839503469 }, | |
291 | { ND, ND }, | |
292 | { ND, ND }, | |
293 | { -31, -6.062411484514648 } | |
294 | }, { | |
295 | {-26, -10}, {-26, 13}, | |
296 | {-37, -4}, {-18, -4}, | |
297 | { ND, ND }, | |
298 | { ND, ND }, | |
299 | { -25.99999999999969, -4.05441766735837 }, | |
300 | { ND, ND }, | |
301 | { ND, ND }, | |
302 | { -26, -4.05405101510235 } | |
303 | }, { | |
304 | {-26, -10}, {154, 78}, | |
305 | {-46, 41}, {-13, 36}, | |
306 | { ND, ND }, | |
307 | { ND, ND }, | |
308 | { -26, 39.19492836828103 }, | |
309 | { ND, ND }, | |
310 | { ND, ND }, | |
311 | { -26, 39.19004133747198 } | |
312 | }, { | |
313 | {-26, -10}, {154, 68}, | |
314 | {-85, 79}, {22, 80}, | |
315 | { ND, ND }, | |
316 | { ND, ND }, | |
317 | { -26.00000000000013, 83.7164889918963 }, | |
318 | { ND, ND }, | |
319 | { ND, ND }, | |
320 | { -26.00000000000002, 83.71603758698208 } | |
321 | }, { | |
322 | {-25, 55}, {155, 68}, | |
323 | {178, 79}, {124, 80}, | |
324 | { ND, ND }, | |
325 | { ND, ND }, | |
326 | { 155, 80.55982670305147 }, | |
327 | { ND, ND }, | |
328 | { ND, ND }, | |
329 | { 155, 80.55961176607357 } | |
330 | } | |
331 | }; | |
332 | ||
333 | size_t const expected_size = sizeof(expected) / sizeof(expected_results); | |
334 | ||
335 | #endif // BOOST_GEOMETRY_TEST_INTERSECTION_CASES_HPP |