]> git.mxchange.org Git - flightgear.git/blob - src/FDM/YASim/Launchbar.hpp
Add the missing carrier files.
[flightgear.git] / src / FDM / YASim / Launchbar.hpp
1 #ifndef _LAUNCHBAR_HPP
2 #define _LAUNCHBAR_HPP
3
4 namespace yasim {
5
6 class Ground;
7 class RigidBody;
8 class State;
9
10 // A launchbar has the following parameters:
11 //
12 // position: a point in the aircraft's local coordinate system where the
13 //     fully-extended wheel will be found.
14 //
15 class Launchbar {
16 public:
17     enum LBState { Arrested, Launch, Unmounted };
18
19     Launchbar();
20
21     // Externally set values
22     void setLaunchbarMount(float* position);
23     void setHoldbackMount(float* position);
24     void setLength(float length);
25     void setDownAngle(float ang);
26     void setUpAngle(float ang);
27     void setExtension(float extension);
28     void setLaunchCmd(bool cmd);
29     void setGlobalGround(double *global_ground);
30
31     void getLaunchbarMount(float* out);
32     void getHoldbackMount(float* out);
33     float getLength(void);
34     float getDownAngle(void);
35     float getUpAngle(void);
36     float getExtension(void);
37
38     void getTipPosition(float* out);
39     void getTipGlobalPosition(State* s, double* out);
40
41     float getPercentPosOnCat(float* lpos, float off, float lends[2][3]);
42     void getPosOnCat(float perc, float* lpos, float* lvel,
43                      float lends[2][3], float lendvels[2][3]);
44
45     // Takes a velocity of the aircraft relative to ground, a rotation
46     // vector, and a ground plane (all specified in local coordinates)
47     // and make a force and point of application (i.e. ground contact)
48     // available via getForce().
49     void calcForce(Ground *g_cb, RigidBody* body, State* s, float* lv, float* lrot);
50
51     // Computed values: total force, weight-on-wheels (force normal to
52     // ground) and compression fraction.
53     void getForce(float* force, float* off);
54     float getCompressFraction(void);
55
56 private:
57     float _launchbar_mount[3];
58     float _holdback_mount[3];
59     float _length;
60     float _holdback_length;
61     float _down_ang;
62     float _up_ang;
63     float _extension;
64     float _force[3];
65     float _frac;
66     float _pos_on_cat;
67     bool _launch_cmd;
68     double _global_ground[4];
69     LBState _state;
70 };
71
72 }; // namespace yasim
73 #endif // _LAUNCHBAR_HPP