mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.1 KiB
56 lines
1.1 KiB
#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__
|