// Header file for the SoTrunk class. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef PI #define PI 3.14159265358979324 #endif const float PIf = (float) PI; const float DEG2RAD = (PIf/180.0f); const float SQRT3OVER2 = 0.86602540378444f; const float SQRT3 = 1.73205080756888f; class SoTrunk { protected: SoCoordinate4* controlPts; SoNurbsSurface* surface; void rotatedControlPts (float phi, float kappa, float theta, float thetaCtrl, float d, float rotatedControlPtsRet[][4]); public: SoTrunk(); void newTrunk(SoSeparator* root); void setTrunk(float phi, float kappa, float s, float d); }; class SoTrunkTrans : public SoTrunk { protected: SoTransform* transform; public: SoTrunkTrans(); void newTrunk(SoSeparator* root); void setTrunk(float phi, float kappa, float s, float d); }; class SoTrunkActuator { protected: SoTrunk soTrunk[3]; SoTranslation* trans[3]; SoTransform* transform; public: SoTrunkActuator(); void newTrunkActuator(SoSeparator* root); void setTrunkActuator(float phi, float kappa, float s, float d, float r); }; void setSoTrunkTrans(SoTransform* trans, float phi, float kappa, float s);