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);
32 void setInducedDrag(float drag) { _inducedDrag = drag; }
34 void setFlap0(float start, float end, float lift, float drag);
35 void setFlap1(float start, float end, float lift, float drag);
36 void setSpoiler(float start, float end, float lift, float drag);
37 void setSlat(float start, float end, float aoa, float drag);
39 // Set the control axes for the sub-surfaces
40 void setFlap0(float lval, float rval);
41 void setFlap1(float lval, float rval);
42 void setSpoiler(float lval, float rval);
43 void setSlat(float val);
45 // Compile the thing into a bunch of Surface objects
48 void getTip(float* tip);
52 // Ground effect information
53 float getGroundEffect(float* posOut);
55 // Query the list of Surface objects
57 Surface* getSurface(int n);
58 float getSurfaceWeight(int n);
60 // The overall drag coefficient for the wing as a whole. Units are
62 void setDragScale(float scale);
65 // The ratio of force along the Z (lift) direction of each wing
66 // segment to that along the X (drag) direction.
67 void setLiftRatio(float ratio);
71 void interp(float* v1, float* v2, float frac, float* out);
72 Surface* newSurface(float* pos, float* orient, float chord,
73 bool flap0, bool flap1, bool slat, bool spoiler);
75 struct SurfRec { Surface * surface; float weight; };
123 }; // namespace yasim