10 // FIXME: need to handle "inverted" controls for mirrored wings.
16 // Do we mirror ourselves about the XZ plane?
17 void setMirror(bool mirror);
20 void setBase(float* base); // in local coordinates
21 void setLength(float length); // dist. ALONG wing (not span!)
22 void setChord(float chord); // at base, measured along X axis
23 void setTaper(float taper); // fraction, 0-1
24 void setSweep(float sweep); // radians
25 void setDihedral(float dihedral); // radians, positive is "up"
27 void setStall(float aoa);
28 void setStallWidth(float angle);
29 void setStallPeak(float fraction);
30 void setCamber(float camber);
31 void setIncidence(float incidence);
33 void setFlap0(float start, float end, float lift, float drag);
34 void setFlap1(float start, float end, float lift, float drag);
35 void setSpoiler(float start, float end, float lift, float drag);
36 void setSlat(float start, float end, float aoa, float drag);
38 // Set the control axes for the sub-surfaces
39 void setFlap0(float lval, float rval);
40 void setFlap1(float lval, float rval);
41 void setSpoiler(float lval, float rval);
42 void setSlat(float val);
44 // Compile the thing into a bunch of Surface objects
47 void getTip(float* tip);
51 // Ground effect information
52 float getGroundEffect(float* posOut);
54 // Query the list of Surface objects
56 Surface* getSurface(int n);
57 float getSurfaceWeight(int n);
59 // The overall drag coefficient for the wing as a whole. Units are
61 void setDragScale(float scale);
64 // The ratio of force along the Z (lift) direction of each wing
65 // segment to that along the X (drag) direction.
66 void setLiftRatio(float ratio);
70 void interp(float* v1, float* v2, float frac, float* out);
71 Surface* newSurface(float* pos, float* orient, float chord,
72 bool flap0, bool flap1, bool slat, bool spoiler);
74 struct SurfRec { Surface * surface; float weight; };
121 }; // namespace yasim