#include "ControlMap.hpp"
#include "Model.hpp"
#include "Wing.hpp"
+#include "Rotor.hpp"
#include "Vector.hpp"
namespace yasim {
~Airplane();
void iterate(float dt);
+ void consumeFuel(float dt);
ControlMap* getControlMap();
Model* getModel();
void setTail(Wing* tail);
void addVStab(Wing* vstab);
+ void addRotor(Rotor* Rotor);
+ int getNumRotors() {return _rotors.size();}
+ Rotor* getRotor(int i) {return (Rotor*)_rotors.get(i);}
+
void addFuselage(float* front, float* back, float width,
float taper=1, float mid=0.5);
int addTank(float* pos, float cap, float fuelDensity);
void setApproach(float speed, float altitude, float aoa);
void setCruise(float speed, float altitude);
+ void setElevatorControl(int control);
void addApproachControl(int control, float val);
void addCruiseControl(int control, float val);
void setFuelFraction(float frac); // 0-1, total amount of fuel
float getFuel(int tank); // in kg!
float getFuelDensity(int tank); // kg/m^3
+ float getTankCapacity(int tank);
void compile(); // generate point masses & such, then solve
void initEngines();
float getLiftRatio();
float getCruiseAoA();
float getTailIncidence();
+ float getApproachElevator() { return _approachElevator.val; }
char* getFailureMsg();
private:
void setupState(float aoa, float speed, State* s);
void solveGear();
void solve();
+ void solveHelicopter();
float compileWing(Wing* w);
+ float compileRotor(Rotor* w);
float compileFuselage(Fuselage* f);
void compileGear(GearRec* gr);
void applyDragFactor(float factor);
Vector _weights;
Vector _surfs; // NON-wing Surfaces
+ Vector _rotors;
+
Vector _cruiseControls;
State _cruiseState;
float _cruiseP;
float _liftRatio;
float _cruiseAoA;
float _tailIncidence;
+ Control _approachElevator;
char* _failureMsg;
};