#ifndef __xc_h__ #define __xc_h__ #include "sscommon.h" // useful for xc-coords enum { RIGHT = 0, TOP, LEFT, BOTTOM }; // Cross_section (xc) class class XC { public: GLfloat xLeft, xRight; // bounding box GLfloat yTop, yBottom; int numPts; POINT2D *pts; // CW points around the xc, from +x XC( int numPts ); XC( const XC& xc ); XC( XC *xc ); ~XC(); void Scale( float scale ); float MaxExtent(); float MinTurnRadius( int relDir ); void CalcArcACValues90( int dir, float r, float *acPts ); void CalcArcACValuesByDistance( float *acPts ); void ConvertPtsZ( POINT3D *pts, float z ); protected: void CalcBoundingBox(); }; // Specific xc's derived from base xc class class ELLIPTICAL_XC : public XC { public: ELLIPTICAL_XC( float r1, float r2 ); ~ELLIPTICAL_XC(); private: void SetControlPoints( float r1, float r2 ); }; class RANDOM4ARC_XC : public XC { public: RANDOM4ARC_XC( float r ); ~RANDOM4ARC_XC(); private: void SetControlPoints( float radius ); }; #endif __xc_h__