分布基于射线法和转角法,实现点是否在多边形内的判断算法,从而实现程序的鼠标选中多边形要素功能。(其他功能已经完善,只需要写判断点是否在多边形内的函数)
参数xx:点的x坐标,参数yy:点的y坐标,参数nvertices多边形的顶点数
参数parts:存储多边形各部分首顶点索引号的数组,part[i]表示构成多边形 第i(从0开始计数)部分首顶点在vertices数组中的索引号。图1给出了一个由 两个部分组成的带孔洞多边形的例子
参数nParts:多边形的部分数
class Points
{
public:
float x;
float y;
};
bool InsidePolygon(float xx, float yy,
float vertices[], int nVerices,
int parts[], int nParts)
{
int count = 0;
Points* Point = (Points*)vertices;//定义一个类对象的数组Points,将vertices[]数组转换成类Points
for (int j = 0; j <= nParts - 1; j++)
//循环遍历多边形的各个部分
{
for (int i = p