JSBSim Flight Dynamics Model  1.0 (02 March 2017)
An Open Source Flight Dynamics and Control Software Library in C++
FGGroundCallback.cpp
1 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 
3  Header: FGGroundCallback.cpp
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 #include "math/FGColumnVector3.h"
35 #include "math/FGLocation.h"
36 #include "FGGroundCallback.h"
37 
38 namespace JSBSim {
39 
40 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
41 
42 FGDefaultGroundCallback::FGDefaultGroundCallback(double referenceRadius)
43 {
44  mSeaLevelRadius = referenceRadius; // Sea level radius
45  mTerrainLevelRadius = mSeaLevelRadius;
46 }
47 
48 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
49 
51 {
52  return loc.GetRadius() - mSeaLevelRadius;
53 }
54 
55 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
56 
57 double FGDefaultGroundCallback::GetAGLevel(double t, const FGLocation& loc,
58  FGLocation& contact, FGColumnVector3& normal,
59  FGColumnVector3& vel, FGColumnVector3& angularVel) const
60 {
61  vel = FGColumnVector3(0.0, 0.0, 0.0);
62  angularVel = FGColumnVector3(0.0, 0.0, 0.0);
63  normal = FGColumnVector3(loc).Normalize();
64  double loc_radius = loc.GetRadius(); // Get the radius of the given location
65  // (e.g. the CG)
66  double agl = loc_radius - mTerrainLevelRadius;
67  contact = (mTerrainLevelRadius/loc_radius)*FGColumnVector3(loc);
68  return agl;
69 }
70 
71 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
72 
73 } // namespace JSBSim
FGLocation holds an arbitrary location in the Earth centered Earth fixed reference frame (ECEF)...
Definition: FGLocation.h:160
FGColumnVector3 & Normalize(void)
Normalize.
double GetAGLevel(double t, const FGLocation &location, FGLocation &contact, FGColumnVector3 &normal, FGColumnVector3 &v, FGColumnVector3 &w) const
Compute the altitude above ground.
double GetRadius() const
Get the distance from the center of the earth.
Definition: FGLocation.h:323
double GetAltitude(const FGLocation &l) const
Compute the altitude above sealevel.
This class implements a 3 element column vector.