Branch data Line data Source code
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: FGGroundCallback.h,v 1.8 2009/10/02 10:30:09 jberndt Exp $"
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: FGGroundCallback.h,v 1.8 2009/10/02 10:30:09 jberndt Exp $
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 : 1 : virtual void SetTerrainGeoCentRadius(double radius) {mReferenceRadius = radius;}
90 : 4910 : virtual double GetTerrainGeoCentRadius(void) const {return mReferenceRadius;}
91 : : private:
92 : : /// Reference radius.
93 : : double mReferenceRadius;
94 : : };
95 : :
96 : : }
97 : : //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
98 : : #endif
|