1 | #include <iostream>
|
---|
2 | #include <boost/geometry.hpp>
|
---|
3 |
|
---|
4 | namespace bg = boost::geometry;
|
---|
5 | typedef bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > pt;
|
---|
6 | typedef bg::model::linestring<pt> pt_line;
|
---|
7 |
|
---|
8 | int main()
|
---|
9 | {
|
---|
10 | const double earthRadius = 6371.0 * 1000.0;
|
---|
11 | pt oslo(10.733557, 59.911923);
|
---|
12 | pt sandvika(10.521812, 59.887214);
|
---|
13 | pt trondheim(10.4, 63.43);
|
---|
14 |
|
---|
15 | // works correct
|
---|
16 | double d1 = bg::distance(sandvika, trondheim, bg::strategy::distance::haversine<double>(earthRadius));
|
---|
17 | double d2 = bg::distance(oslo, trondheim, bg::strategy::distance::haversine<double>(earthRadius));
|
---|
18 | std::cout << "Sandvika-Trondheim " << d1 << std::endl;
|
---|
19 | std::cout << "Oslo-Trondheim " << d2 << std::endl;
|
---|
20 |
|
---|
21 | pt_line ll;
|
---|
22 | ll.push_back(oslo);
|
---|
23 | ll.push_back(sandvika);
|
---|
24 |
|
---|
25 | // Does not work
|
---|
26 | double d3 = bg::distance(trondheim, ll, bg::strategy::distance::haversine<double>(earthRadius));
|
---|
27 | std::cout << "Oslo-Sandvika - Trondheim " << d3 << std::endl;
|
---|
28 |
|
---|
29 | return 0;
|
---|
30 | }
|
---|
31 |
|
---|