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 setTwist(float angle);
31 void setCamber(float camber);
32 void setIncidence(float incidence);
33 void setInducedDrag(float drag) { _inducedDrag = drag; }
35 void setFlap0(float start, float end, float lift, float drag);
36 void setFlap1(float start, float end, float lift, float drag);
37 void setSpoiler(float start, float end, float lift, float drag);
38 void setSlat(float start, float end, float aoa, float drag);
40 // Set the control axes for the sub-surfaces
41 void setFlap0(float lval, float rval);
42 void setFlap1(float lval, float rval);
43 void setSpoiler(float lval, float rval);
44 void setSlat(float val);
46 // Compile the thing into a bunch of Surface objects
49 void getTip(float* tip);
53 // Ground effect information
54 float getGroundEffect(float* posOut);
56 // Query the list of Surface objects
58 Surface* getSurface(int n);
59 float getSurfaceWeight(int n);
61 // The overall drag coefficient for the wing as a whole. Units are
63 void setDragScale(float scale);
66 // The ratio of force along the Z (lift) direction of each wing
67 // segment to that along the X (drag) direction.
68 void setLiftRatio(float ratio);
72 void interp(float* v1, float* v2, float frac, float* out);
73 Surface* newSurface(float* pos, float* orient, float chord,
74 bool flap0, bool flap1, bool slat, bool spoiler);
76 struct SurfRec { Surface * surface; float weight; };
125 }; // namespace yasim