//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, SH Software Co. Ltd. // = FileName : XTriangle类 // = Version : ver2.0 // = Author : zjq // = CreateDate : 2002-09-09 // = Description: XTriangle类声明 // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _XTRIANGLE_H_ #define _XTRIANGLE_H_ #ifndef _XPOINT_H_ #include "XPoint.h" #endif #ifndef _X3DFACE_H_ #include "X3DFace.h" #endif #define SIDE1_INVISIBLE 0x01 #define SIDE2_INVISIBLE 0x02 #define SIDE3_INVISIBLE 0x04 // 用三角形拼多边形 class GEOAPI XTriangle { public: XTriangle(const XPoint &pt1, const XPoint &pt2, const XPoint &pt3, int nFlag=0); virtual ~XTriangle(); void Ecs2Wcs(XVector3D vtEcs); void Wcs2Ecs(XVector3D vtEcs); void AsFace(X3DFace &face) const; int IsLinear(); int IsInvisible(); // 1~3-命中1~3点;-1~-3 -命中1~3边;0-外部;4-内部 int HitTest2d(const XPoint &ptTest) const; enum HitType { HIT_SIDE1 = -1, //边1 HIT_SIDE2 = -2, //边2 HIT_SIDE3 = -3, //边3 HIT_OUTSIDE = 0, //外部 HIT_VERTEX1 = 1, //顶点1 HIT_VERTEX2 = 2, //顶点2 HIT_VERTEX3 = 3, //顶点3 HIT_INSIDE = 4 //内部 }; public: int m_nFlag; XPoint vertex1, vertex2, vertex3; }; #endif