]> git.mxchange.org Git - flightgear.git/blob - src/FDM/JSBSim/input_output/FGGroundCallback.h
bb36e650c6581369345a90e043e88a240459d576
[flightgear.git] / src / FDM / JSBSim / input_output / FGGroundCallback.h
1 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
3  Header:       FGGroundCallback.h
4  Author:       Mathias Froehlich
5  Date started: 05/21/04
6
7  ------ Copyright (C) 2004 Mathias Froehlich (Mathias.Froehlich@web.de) -------
8
9  This program is free software; you can redistribute it and/or modify it under
10  the terms of the GNU Lesser General Public License as published by the Free Software
11  Foundation; either version 2 of the License, or (at your option) any later
12  version.
13
14  This program is distributed in the hope that it will be useful, but WITHOUT
15  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16  FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
17  details.
18
19  You should have received a copy of the GNU Lesser General Public License along with
20  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21  Place - Suite 330, Boston, MA  02111-1307, USA.
22
23  Further information about the GNU Lesser General Public License can also be found on
24  the world wide web at http://www.gnu.org.
25
26 HISTORY
27 -------------------------------------------------------------------------------
28 05/21/00   MF   Created
29
30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31 SENTRY
32 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
33
34 #ifndef FGGROUNDCALLBACK_H
35 #define FGGROUNDCALLBACK_H
36
37 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 INCLUDES
39 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
40
41 #include <math/FGColumnVector3.h>
42 #include <math/FGLocation.h>
43
44 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
45 DEFINITIONS
46 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
47
48 #define ID_GROUNDCALLBACK "$Id$"
49
50 namespace JSBSim {
51
52 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
53 CLASS DOCUMENTATION
54 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
55
56 /** This class provides callback slots to get ground specific data like
57     ground elevation and such.
58     There is a default implementation, which returns values for a
59     ball formed earth.
60
61     @author Mathias Froehlich
62     @version $Id$
63 */
64
65 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
66 CLASS DECLARATION
67 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
68
69 class FGGroundCallback : public FGJSBBase
70 {
71 public:
72   /** Default constructor.
73   Within this constructor, the reference radius is set to the WGS84 equatorial
74   radius. This constructor should really not be called, instead relying on the 
75   constructor that takes reference radius as an argument. */
76   FGGroundCallback();
77
78   /** Constructor
79   This constructor accepts the reference radius in feet. This is the preferred  
80   constructor. */
81   FGGroundCallback(double ReferenceRadius);
82   virtual ~FGGroundCallback();
83
84   /** Compute the altitude above sealevel. */
85   virtual double GetAltitude(const FGLocation& l) const;
86   /** Compute the altitude above ground. Defaults to sealevel altitude. */
87   virtual double GetAGLevel(double t, const FGLocation& l, FGLocation& cont,
88                             FGColumnVector3& n, FGColumnVector3& v) const;
89   virtual void SetTerrainGeoCentRadius(double radius) {mReferenceRadius = radius;}
90   virtual double GetTerrainGeoCentRadius(void) const {return mReferenceRadius;}
91 private:
92   /// Reference radius.
93   double mReferenceRadius;
94 };
95
96 }
97 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
98 #endif