123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457 |
- // Boost.Geometry
- // Unit Test
- // Copyright (c) 2017 Oracle and/or its affiliates.
- // Contributed and/or modified by Vissarion Fysikopoulos, on behalf of Oracle
- // Use, modification and distribution is subject to the Boost Software License,
- // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- #ifndef BOOST_GEOMETRY_TEST_VERTEX_LONGITUDE_CASES_HPP
- #define BOOST_GEOMETRY_TEST_VERTEX_LONGITUDE_CASES_HPP
- struct coordinates
- {
- double lon;
- double lat;
- };
- struct expected_result
- {
- double lon;
- double lat;
- };
- struct expected_results
- {
- coordinates p1;
- coordinates p2;
- double andoyer;
- double thomas;
- double vincenty;
- double spherical;
- };
- expected_results expected[] =
- {
- { //ascenting segments (wrt pole)
- { 1, 1 },{ 100, 2 },
- 66.25553538,
- 66.25594187,
- 66.25594273,
- 66.39744208
- },{
- { 1, 1 },{ 90, 2 },
- 64.09051435,
- 64.09082287,
- 64.09082352,
- 64.24414382
- },{
- { 0, 1 },{ 50, 1 },
- 24.99994265,
- 24.99999906,
- 25,
- 25
- },{
- { 0, 1 },{ 50, 1.1 },
- 30.79039009,
- 30.79049758,
- 30.79049828,
- 30.83209056
- },{
- { 0, 1 },{ 50, 1.2 },
- 35.95625867,
- 35.95640445,
- 35.95640493,
- 36.0343576
- },{
- { 0, 1 },{ 50, 1.3 },
- 40.52204781,
- 40.52222064,
- 40.52222094,
- 40.63120292
- },{
- { 0, 1 },{ 50, 1.4 },
- 44.53768967,
- 44.53788045,
- 44.53788061,
- 44.6729585
- },{
- { 0, 1 },{ 50, 1.5 },
- 48.06382018,
- 48.0640219,
- 48.06402195,
- 48.22088385
- },{
- { 0, 1 },{ 50, 1.6 },
- 50,
- 50,
- 50,
- 50
- },{ //descending segment (wrt pole)
- { 50, 1 },{ 0, 1.1 },
- 19.20950181,
- 19.20950054,
- 19.20950172,
- 19.16790944
- },{
- { 50, 1 },{ 0, 1.2 },
- 14.04365003,
- 14.04359367,
- 14.04359507,
- 13.9656424
- },{
- { 50, 1 },{ 0, 1.3 },
- 9.477883847,
- 9.477777483,
- 9.477779056,
- 9.368797077
- },{
- { 50, 1 },{ 0, 1.4 },
- 5.462267984,
- 5.462117673,
- 5.462119386,
- 5.327041497
- },{
- { 50, 1 },{ 0, 1.5 },
- 1.936164363,
- 1.935976226,
- 1.93597805,
- 1.779116148
- },{
- { 3, 5 },{ 150, 0},
- 60.29182988,
- 60.29785309,
- 60.29785255,
- 60
- },{
- { 3, 5 },{ 150, 0.5},
- 63.11344576,
- 63.11900045,
- 63.11899891,
- 62.87000766
- },{
- { 3, 5 },{ 150, 1},
- 65.51880171,
- 65.52391866,
- 65.52391623,
- 65.31813729
- },{
- { 3, 5 },{ 150, 5},
- 76.49727275,
- 76.50000657,
- 76.5,
- 76.5
- },{ //segments parallel to equator
- { 0, 1 },{ 4, 1 },
- 1.999999973,
- 1.999999925,
- 2,
- 2
- },{
- { 0, 1 },{ 10, 1 },
- 4.999999569,
- 4.999999812,
- 5,
- 5
- },{
- { 0, 1 },{ 60, 1 },
- 29.9998978,
- 29.99999887,
- 30,
- 30
- },{
- { 0, 1 },{ 90, 1 },
- 44.99960266,
- 45.22272756,//thomas low accuracy
- 45,
- 45
- },{
- { 0, 1 },{ 120, 1 },
- 59.99878311,
- 59.99999778,
- 60,
- 60
- },{
- { 0, 1 },{ 180, 1 },
- 90,
- 90,
- 90,
- 90
- },{
- { 0, 1 },{ 270, 1 },
- -44.99960266,
- -45.08931472,//thomas low accuracy
- -45,
- -45
- },{
- { 0, 1 },{ 290, 1 },
- -34.9998314,
- -34.99999868,
- -35,
- -35
- },{
- { 0, 1 },{ 150, 1 },
- 74.99598515,
- 74.99999794,
- 75,
- 75
- },{
- { 0, 1 },{ 180, 1 },
- 90,
- 90,
- 90,
- 90
- },{ //in equator vertex is any point on segment
- { 1, 0 },{ 10, 0 },
- 1,
- 1,
- 1,
- 1
- },{// one point on equator (descending)
- { 150, 0},{ 3, 1 },
- 60.29513726,
- 60.30158943,
- 60.3015947,
- 60
- },{// one point on equator (ascending)
- { 3, 0 },{ 150, 1},
- 92.69840523,
- 92.6984053,
- 92.6984053,
- 93
- },{ //meridian
- { 1, 1 },{ 1, 2 },
- 1,
- 1,
- 1,
- 1
- },{ //nearly meridian
- { 1, 1 },{ 1.001, 2 },
- 1.001,
- 1.001,
- 1.001,
- 1.001
- },{ //vertex is a segment's endpoint
- { 1, 1 },{ 10, 2 },
- 10,
- 10,
- 10,
- 10
- },{
- { 10, 1 },{ 1, 2 },
- 1,
- 1,
- 1,
- 1
- },{ //South hemisphere, ascending
- { 0, -1 },{ 50, -1.4 },
- 44.53768958,
- 44.53788035,
- 44.53788052,
- 44.6729585
- },{ //South hemisphere, descending
- { 0, -1.5 },{ 50, -1 },
- 1.936164356,
- 1.935976219,
- 1.935978042,
- 1.779116148
- },{ //South hemisphere, same latitude
- { 0, -1 },{ 50, -1 },
- 24.99994261,
- 24.99999901,
- 24.99999995,
- 25
- },{//Both hemispheres, vertex on the northern
- //A desc vertex north
- { 3, 5 },{ 150, -3},
- 27.357069,
- 27.36422922,
- 27.36423549,
- 26.74999989
- },{//B asc vertex north
- { 3, -3 },{ 150, 5},
- 125.6403436,
- 125.6357677,
- 125.6357659,
- 126.2500001
- },{//C desc vertex south
- { 3, -5 },{ 150, 3},
- 27.3570679,
- 27.36422812,
- 27.36423439,
- 26.74999989
- },{//D asc vertex south
- { 3, 3 },{ 150, -5},
- 125.6403423,
- 125.6357664,
- 125.6357645,
- 126.2500001
- },{//E asc vertex south
- { 3, 3 },{ 184, -5},
- -88.00743796,
- -88.0660268,
- -88.0558747,
- -88.49315894
- },{
- { 3, 5 },{ 150, -3.5},
- 17.96722293,
- 17.97322407,
- 17.97323051,
- 17.3742464
- },{
- { 3, 5 },{ 150, -1},
- 52.9706038,
- 52.97759463,
- 52.9775964,
- 52.56504545
- },{ //Both hemispheres, vertex on the southern
- { 3, 3},{ 5, -5},
- 5,
- 5,
- 5,
- 5
- },{
- { 3, -5 },{ 150, 1}, //symmetric to { 3, 5 },{ 150, -1}
- 52.97060093,
- 52.97759176,
- 52.97759353,
- 52.56504545
- },{// fix p1 lon, lat and p2 lon and vary p2 lat
- { 3, 5 },{ 150, 1},
- 65.51880171,
- 65.52391866,
- 65.52391623,
- 65.31813729
- },{
- { 3, 5 },{ 150, 0},
- 60.29182988,
- 60.29785309,
- 60.29785255,
- 60
- },{
- { 3, 5 },{ 150, -0.1},
- 59.66911673,
- 59.67523649,
- 59.67523616,
- 59.36690727
- },{
- { 3, 5 },{ 150, -1},
- 52.9706038,
- 52.97759463,
- 52.9775964,
- 52.56504545
- },{
- { 3, 5 },{ 150, -4.15},
- 4.481947557,
- 4.485467841,
- 4.485473295,
- 3.981178967
- },{
- { 3, 5 },{ 150, -4.2},
- 3,
- 3,
- 3,
- 3
- },{//symmetry of geodesics:
- // (i) case A same as C and B same as D
- // (ii) longitude diff between vertex and p2 in A, C equals
- // longitude diff between vertex and p1 in B, D by symmetry
- // case (A)
- { 0, 5 },{ 30, 5.5},
- 25.06431998,
- 25.0644277,
- 25.06442787,
- 25.13253724
- },{// case (B)
- { 0, 5.5 },{ 30, 5},
- 4.935667094,
- 4.935571216,
- 4.93557213,
- 4.867462762
- },{// case (C)
- { 0, -5 },{ 30, -5.5},
- 25.06431885,
- 25.06442657,
- 25.06442674,
- 25.13253724
- },{// case (D)
- { 0, -5.5 },{ 30, -5},
- 4.935666841,
- 4.935570963,
- 4.935571877,
- 4.867462762
- },{//crossing meridian
- { -10, 1 },{ 50, 1.1},
- 24.68113946,
- 24.68127641,
- 24.68127733,
- 24.71605263
- },{
- { 350, 1 },{ 50, 1.1},
- 24.68113946,
- 24.68127641,
- 24.68127733,
- 24.71605263
- },{//crossing antimeridian
- { 130, 1 },{ 190, 1.1},
- 164.6811395,
- 164.6812764,
- 164.6812773,
- 164.7160526
- },{
- { 130, 1 },{ -170, 1.1},
- 164.6811395,
- 164.6812764,
- 164.6812773,
- 164.7160526
- },{//crossing meridian both hemispheres
- { -10, -5 },{ 150, 1},
- 55.61285835,
- 55.62727853,
- 55.62725182,
- 55.19943725
- },{
- { 350, -5 },{ 150, 1},
- 55.6243632,
- 55.6272619,
- 55.627257,
- 55.1994373
- },{//crossing anti-meridian both hemispheres
- { 90, -5 },{ 210, 1},
- 109.4997596,
- 109.5011987,
- 109.5012031,
- 109.1354089
- },{
- { 90, -5 },{ -150, 1},
- 109.4997596,
- 109.5011987,
- 109.5012031,
- 109.1354089
- },{
- { -150, -5 },{ 90, 1},
- -169.4997596,
- -169.5011987,
- -169.5012031,
- -169.1354089
- },{
- { 90, 1 },{ 210, -5},
- -169.5008004,
- -169.5012037,
- -169.501204,
- -169.1354089
- },{
- { 0, 1 },{ 120, -5},
- 100.4991996,
- 100.4987963,
- 100.498796,
- 100.8645911
- }
- };
- size_t const expected_size = sizeof(expected) / sizeof(expected_results);
- #endif // BOOST_GEOMETRY_TEST_VERTEX_LONGITUDE_CASES_HPP
|