1
0
Fork 0
flightgear/src/FDM/YASim/Hook.hpp
2006-03-18 13:10:59 +00:00

68 lines
1.7 KiB
C++

#ifndef _HOOK_HPP
#define _HOOK_HPP
namespace yasim {
class Ground;
class RigidBody;
struct State;
// A landing hook has the following parameters:
//
// position: a point in the aircraft's local coordinate system where the
// fully-extended wheel will be found.
//
class Hook {
public:
Hook();
// Externally set values
void setPosition(float* position);
void setLength(float length);
void setDownAngle(float ang);
void setUpAngle(float ang);
void setExtension(float extension);
void setGlobalGround(double *global_ground);
void getPosition(float* out);
float getLength(void);
float getDownAngle(void);
float getUpAngle(void);
float getExtension(void);
void getTipPosition(float* out);
void getTipGlobalPosition(State* s, double* out);
// Takes a velocity of the aircraft relative to ground, a rotation
// vector, and a ground plane (all specified in local coordinates)
// and make a force and point of application (i.e. ground contact)
// available via getForce().
void calcForce(Ground *g_cb, RigidBody* body, State* s, float* lv, float* lrot);
// Computed values: total force, weight-on-wheels (force normal to
// ground) and compression fraction.
void getForce(float* force, float* off);
float getCompressFraction(void);
float getAngle(void);
float getHookPos(int i);
private:
float _pos[3];
float _length;
float _down_ang;
float _up_ang;
float _ang;
float _extension;
float _force[3];
float _frac;
bool _has_wire;
double _old_mount[3];
double _old_tip[3];
double _global_ground[4];
};
}; // namespace yasim
#endif // _HOOK_HPP