]> git.mxchange.org Git - simgear.git/blob - simgear/route/waypoint.hxx
First working revision.
[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
61     string id;
62
63 public:
64
65     SGWayPoint();
66     SGWayPoint( const double lon, const double lat,
67                 const modetype m = WGS84, const string s = "" );
68     ~SGWayPoint();
69
70     // Calculate course and distances.  Lat, lon, and azimuth are in
71     // degrees.  distance in meters
72     void CourseAndDistance( const double cur_lon, const double cur_lat,
73                             double *course, double *distance );
74
75     inline modetype get_mode() const { return mode; }
76     inline double get_target_lon() const { return target_lon; }
77     inline double get_target_lat() const { return target_lat; }
78     inline string get_id() const { return id; }
79 };
80
81
82 #endif // _WAYPOINT_HXX