谁知道如何搜索平面点集的边界?我现在有很多平面的点集数据(x坐标,y坐标形式),想实现一个类,只要你输入一个二维的点集数组,然后就能将此点集的边界算出来,点集的边界分为凸多边形边界
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/13 01:50:59
![谁知道如何搜索平面点集的边界?我现在有很多平面的点集数据(x坐标,y坐标形式),想实现一个类,只要你输入一个二维的点集数组,然后就能将此点集的边界算出来,点集的边界分为凸多边形边界](/uploads/image/z/11975207-23-7.jpg?t=%E8%B0%81%E7%9F%A5%E9%81%93%E5%A6%82%E4%BD%95%E6%90%9C%E7%B4%A2%E5%B9%B3%E9%9D%A2%E7%82%B9%E9%9B%86%E7%9A%84%E8%BE%B9%E7%95%8C%3F%E6%88%91%E7%8E%B0%E5%9C%A8%E6%9C%89%E5%BE%88%E5%A4%9A%E5%B9%B3%E9%9D%A2%E7%9A%84%E7%82%B9%E9%9B%86%E6%95%B0%E6%8D%AE%28x%E5%9D%90%E6%A0%87%2Cy%E5%9D%90%E6%A0%87%E5%BD%A2%E5%BC%8F%29%2C%E6%83%B3%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E7%B1%BB%2C%E5%8F%AA%E8%A6%81%E4%BD%A0%E8%BE%93%E5%85%A5%E4%B8%80%E4%B8%AA%E4%BA%8C%E7%BB%B4%E7%9A%84%E7%82%B9%E9%9B%86%E6%95%B0%E7%BB%84%2C%E7%84%B6%E5%90%8E%E5%B0%B1%E8%83%BD%E5%B0%86%E6%AD%A4%E7%82%B9%E9%9B%86%E7%9A%84%E8%BE%B9%E7%95%8C%E7%AE%97%E5%87%BA%E6%9D%A5%2C%E7%82%B9%E9%9B%86%E7%9A%84%E8%BE%B9%E7%95%8C%E5%88%86%E4%B8%BA%E5%87%B8%E5%A4%9A%E8%BE%B9%E5%BD%A2%E8%BE%B9%E7%95%8C)
谁知道如何搜索平面点集的边界?我现在有很多平面的点集数据(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