X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Froute%2Froute.hxx;h=6c5c5c876d8901cb334738a8e007c94e18b0dfcc;hb=7bdb530440d1dadc991f305edb1b70ec85f27451;hp=1f7c0323378ae151e52e928fe9124f795f4025e0;hpb=a354c841f1ecd7560c2049eccf25ffeca2ec96aa;p=simgear.git diff --git a/simgear/route/route.hxx b/simgear/route/route.hxx index 1f7c0323..6c5c5c87 100644 --- a/simgear/route/route.hxx +++ b/simgear/route/route.hxx @@ -32,14 +32,11 @@ # error This library requires C++ #endif - #include -#include STL_STRING #include -SG_USING_STD(string); -SG_USING_STD(vector); +using std::vector; #include @@ -55,7 +52,7 @@ private: route_list route; int current_wp; - void update_distance(int index); + void update_distance_and_track(int index); public: @@ -105,6 +102,22 @@ public: return SGWayPoint( 0.0, 0.0, 0.0, SGWayPoint::WGS84, "invalid" ); } } + + inline SGWayPoint get_previous() const { + if ( (current_wp > 0) && (current_wp < (int)route.size()) ) { + return route[current_wp - 1]; + } else { + return SGWayPoint( 0.0, 0.0, 0.0, SGWayPoint::WGS84, "invalid" ); + } + } + + inline SGWayPoint get_next() const { + if ( (current_wp + 1) < (int)route.size() ) { + return route[current_wp+1]; + } else { + return SGWayPoint( 0.0, 0.0, 0.0, SGWayPoint::WGS84, "invalid" ); + } + } /** * Set the current waypoint @@ -116,6 +129,10 @@ public: } } + inline int current_index() const { + return current_wp; + } + /** Increment the current waypoint pointer. */ inline void increment_current() { if ( current_wp < (int)route.size() - 1 ) { @@ -141,14 +158,11 @@ public: /** Delete waypoint waypoint with index n (last one if n < 0) */ void delete_waypoint( int n = 0 ); - + /** - * Calculate perpendicular distance from the current route segment - * This routine assumes all points are laying on a flat plane and - * ignores the altitude (or Z) dimension. For most accurate - * results, use with CARTESIAN way points. + * Helper, sum the distance members of each waypoint */ - double distance_off_route( double x, double y ) const; + double total_distance() const; };