]> git.mxchange.org Git - simgear.git/blob - simgear/route/waypoint.hxx
Added route.[ch]xx which maintains a list of waypoints (i.e. a route)
[simgear.git] / simgear / route / waypoint.hxx
1 // waypoint.hxx -- Class to hold data and return info relating to a waypoint
2 //
3 // Written by Curtis Olson, started September 2000.
4 //
5 // Copyright (C) 2000  Curtis L. Olson  - curt@hfrl.umn.edu
6 //
7 // This program is free software; you can redistribute it and/or
8 // modify it under the terms of the GNU General Public License as
9 // published by the Free Software Foundation; either version 2 of the
10 // License, or (at your option) any later version.
11 //
12 // This program is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 // General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program; if not, write to the Free Software
19 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 //
21 // $Id$
22
23
24 #ifndef _WAYPOINT_HXX
25 #define _WAYPOINT_HXX
26
27
28 #ifndef __cplusplus                                                          
29 # error This library requires C++
30 #endif                                   
31
32
33 #ifdef HAVE_CONFIG_H
34 #  include <config.h>
35 #endif
36
37 #include <simgear/compiler.h>
38
39 #include STL_STRING
40
41 FG_USING_STD(string);
42
43
44 class SGWayPoint {
45
46 public:
47
48     enum modetype { 
49         WGS84 = 0,
50         SPHERICAL = 1,
51         CARTESIAN = 2
52     };
53
54 private:
55
56     modetype mode;
57
58     double target_lon;
59     double target_lat;
60     double target_alt;
61
62     string id;
63
64 public:
65
66     SGWayPoint();
67     SGWayPoint( const double lon, const double lat, const double alt,
68                 const modetype m = WGS84, const string s = "" );
69     ~SGWayPoint();
70
71     // Calculate course and distances.  For WGS84 and SPHERICAL
72     // coordinates lat, lon, and course are in degrees, alt and
73     // distance are in meters.  For CARTESIAN coordinates x = lon, y =
74     // lat.  Course is in degrees and distance is in what ever units x
75     // and y are in.
76     void CourseAndDistance( const double cur_lon, const double cur_lat,
77                             const double cur_alt,
78                             double *course, double *distance );
79
80     inline modetype get_mode() const { return mode; }
81     inline double get_target_lon() const { return target_lon; }
82     inline double get_target_lat() const { return target_lat; }
83     inline double get_target_alt() const { return target_alt; }
84     inline string get_id() const { return id; }
85 };
86
87
88 #endif // _WAYPOINT_HXX