]> git.mxchange.org Git - simgear.git/commitdiff
Tweaks to waypoints and routing. Added distance_to field for each waypoint.
authorcurt <curt>
Fri, 13 Oct 2000 21:32:51 +0000 (21:32 +0000)
committercurt <curt>
Fri, 13 Oct 2000 21:32:51 +0000 (21:32 +0000)
simgear/route/route.hxx
simgear/route/waypoint.cxx
simgear/route/waypoint.hxx

index 7ba4601063869faf257c2a30b9912fd00368ff56..ead338d42de9cc4bb3b14c188772cddae0907de2 100644 (file)
@@ -67,6 +67,14 @@ public:
     // add a waypoint
     inline void add_waypoint( const SGWayPoint &wp ) {
        route.push_back( wp );
+
+       int size = route.size();
+       if ( size > 1 ) {
+           SGWayPoint next_to_last = route[ size - 2 ];
+           double tmpd, tmpc;
+           wp.CourseAndDistance( next_to_last, &tmpc, &tmpd );
+           route[size - 1].set_distance( tmpd );
+       }
     }
 
     // get the number of waypoints
index 50807ea93c4906dc303febf686f8c5d2be80ba6b..316b70b33c3d1a357f45182375d98cfa804e9874 100644 (file)
@@ -55,7 +55,7 @@ SGWayPoint::~SGWayPoint() {
 void SGWayPoint::CourseAndDistance( const double cur_lon,
                                    const double cur_lat,
                                    const double cur_alt,
-                                   double *course, double *distance ) {
+                                   double *course, double *distance ) const {
     if ( mode == WGS84 ) {
        double reverse;
        geo_inverse_wgs_84( cur_alt, cur_lat, cur_lon, target_lat, target_lon,
@@ -78,3 +78,12 @@ void SGWayPoint::CourseAndDistance( const double cur_lon,
        *distance = sqrt( dx * dx + dy * dy );
     }
 }
+
+// Calculate course and distances between two waypoints
+void SGWayPoint::CourseAndDistance( const SGWayPoint &wp,
+                       double *course, double *distance ) const {
+    CourseAndDistance( wp.get_target_lon(),
+                      wp.get_target_lat(),
+                      wp.get_target_alt(),
+                      course, distance );
+}
index 913a6b6bb0a1115c9fc49e5d31fa01d0f2f288de..4f66f89fa123ba671034f94d5bf9125ce2c170ff 100644 (file)
@@ -58,6 +58,7 @@ private:
     double target_lon;
     double target_lat;
     double target_alt;
+    double distance;
 
     string id;
 
@@ -75,13 +76,20 @@ public:
     // and y are in.
     void CourseAndDistance( const double cur_lon, const double cur_lat,
                            const double cur_alt,
-                           double *course, double *distance );
+                           double *course, double *distance ) const;
+
+    // Calculate course and distances between two waypoints
+    void CourseAndDistance( const SGWayPoint &wp,
+                           double *course, double *distance ) const;
 
     inline modetype get_mode() const { return mode; }
     inline double get_target_lon() const { return target_lon; }
     inline double get_target_lat() const { return target_lat; }
     inline double get_target_alt() const { return target_alt; }
+    inline double get_distance() const { return distance; }
     inline string get_id() const { return id; }
+
+    inline void set_distance( double d ) { distance = d; }
 };