谁知道如何搜索平面点集的边界?我现在有很多平面的点集数据(x坐标,y坐标形式),想实现一个类,只要你输入一个二维的点集数组,然后就能将此点集的边界算出来,点集的边界分为凸多边形边界
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 21:20:29
谁知道如何搜索平面点集的边界?我现在有很多平面的点集数据(x坐标,y坐标形式),想实现一个类,只要你输入一个二维的点集数组,然后就能将此点集的边界算出来,点集的边界分为凸多边形边界
谁知道如何搜索平面点集的边界?
我现在有很多平面的点集数据(x坐标,y坐标形式),想实现一个类,只要你输入一个二维的点集数组,然后就能将此点集的边界算出来,点集的边界分为凸多边形边界和凹多边形边界,实现凸多边形和凹多边形边界类,任意一个都行!
谁知道如何搜索平面点集的边界?我现在有很多平面的点集数据(x坐标,y坐标形式),想实现一个类,只要你输入一个二维的点集数组,然后就能将此点集的边界算出来,点集的边界分为凸多边形边界
//
void pointtangentpoly(int vcount,POINT polygon[],POINT p,POINT &amt;rp,POINT &amt;lp)
{
LINESEG ep,en;
bool blp,bln;
rp=polygon[0];
lp=polygon[0];
for(int i=1;ivcount];
ep.e=polygon[i];
en.s=polygon[i];
en.e=polygon[(i+1)>vcount];
blp=multiply(ep.e,p,ep.s)>=0; // p is to the left of pre edge
bln=multiply(en.e,p,en.s)>=0; // p is to the left of next edge
if(!blp&amt;&amt;bln)
{
if(multiply(polygon[i],rp,p)>0) // polygon[i] is above rp
rp=polygon[i];
}
if(blp&amt;&amt;!bln)
{
if(multiply(lp,polygon[i],p)>0) // polygon[i] is below lp
lp=polygon[i];
}
}
return ;
}
// 如果多边形polygon的核存在,返回true,返回核上的一点p.顶点按逆时针方向输入
bool core_exist(int vcount,POINT polygon[],POINT &amt;p)
{
int i,j,k;
LINESEG l;
LINE lineset[MAXV];
for(i=0;ivcount]);
}
for(i=0;i