⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dtin.h

📁 生成tin
💻 H
字号:
#ifndef DTIN_H
#define DTIN_H

#include <vector>

using namespace std;

class DiscretePoint
{
public:
	float x;
	float y;
	float z;
	int index;
	DiscretePoint(float xx=0.0f,float yy=0.0f):x(xx),y(yy){}
	DiscretePoint(float xx,float yy,int i):x(xx),y(yy),index(i){}
};
class EdgeID
{
public:
	int start;
	int end;
	EdgeID(){}
	EdgeID(int s,int e):start(s),end(e){}
	bool operator<(const EdgeID& e)const
	{
		return (start < e.start) || ((start == e.start) && (end < e.end));
	}
	bool operator>(const EdgeID& e)const
	{
		return (start > e.start) || ((start == e.start) && (end > e.end));
	}
	bool operator==(const EdgeID& e)const
	{
		return (start == e.start) && (end == e.end);
	}
};
class Edge:public EdgeID
{
public:
	int LeftTriangle;// 边的左三角形索引
	int RightTriangle;// 边的右三角形索引
	int index;
	Edge(){}
	Edge(int s,int e):EdgeID(s,e){}
};
class TempEdge:public EdgeID
{
public:
	bool m_bComfirmed;
	vector<int> m_vertex;
	TempEdge(){}
	TempEdge(int s,int e):EdgeID(s,e),m_bComfirmed(false){}
};
class Triangle
{
public:
	int Node[3];// 三角形的顶点的坐标索引
	vector<int> _Edge;	
	int AdjTriangle[3];// 三角形的顶点的对边相邻的三角形
	
	int index;// 三角形的索引
};
class _Polygon
{
public:
	vector<DiscretePoint> m_vertex;
};
class DTriangular
{
public:
	vector<DiscretePoint> m_point;
	vector<DiscretePoint> m_convex; 
	vector<Edge> m_edge;
	vector<Triangle> m_triangle;
	vector<DiscretePoint> m_center;
	vector<float> m_radius;
	void Convex();
	void ConvexTriangular();
	void InsertPoint(const DiscretePoint&);
	void InsertAllPoints();	
	void Index();
	void Draw(CDC*);
	bool LButtonDown(long x,long y);
	bool RButtonDown(long x,long y);
	bool MouseMove(long x,long y);
};
void Voronoi(vector<_Polygon>&,DTriangular&);
void Draw(CDC*,const vector<_Polygon>&);
//=================================================================
// 设 m = 凸包中点的个数,n = 内部点的个数
// 则:边数 = 3 + (m - 3) * 2 + n * 3;
// 三角形的个数 = (m - 2) + n * 2;
//=================================================================
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -