2026-10-04 00:04:20 +08:00
|
|
|
|
//-----------------------------------------------------------------------------+
|
2026-09-28 15:28:50 +08:00
|
|
|
|
// Copyright (C), 1998-2007, SH Software Co. Ltd.
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// = FileName : XTriangle类
|
2026-09-28 15:28:50 +08:00
|
|
|
|
// = Version : ver2.0
|
|
|
|
|
|
// = Author : zjq
|
|
|
|
|
|
// = CreateDate : 2002-09-09
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// = Description: XTriangle类声明
|
2026-09-28 15:28:50 +08:00
|
|
|
|
// = 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
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 用三角形拼多边形
|
2026-09-28 15:28:50 +08:00
|
|
|
|
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();
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 1~3-命中1~3点;-1~-3 -命中1~3边;0-外部;4-内部
|
2026-09-28 15:28:50 +08:00
|
|
|
|
int HitTest2d(const XPoint &ptTest) const;
|
|
|
|
|
|
|
|
|
|
|
|
enum HitType
|
|
|
|
|
|
{
|
2026-10-04 00:04:20 +08:00
|
|
|
|
HIT_SIDE1 = -1, //边1
|
|
|
|
|
|
HIT_SIDE2 = -2, //边2
|
|
|
|
|
|
HIT_SIDE3 = -3, //边3
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
HIT_OUTSIDE = 0, //外部
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
HIT_VERTEX1 = 1, //顶点1
|
|
|
|
|
|
HIT_VERTEX2 = 2, //顶点2
|
|
|
|
|
|
HIT_VERTEX3 = 3, //顶点3
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
HIT_INSIDE = 4 //内部
|
2026-09-28 15:28:50 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
int m_nFlag;
|
|
|
|
|
|
|
|
|
|
|
|
XPoint vertex1, vertex2, vertex3;
|
|
|
|
|
|
};
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|