亲自测试了代码有效,并做了一点小小的改动,效率提高了。
作用:判断点是否在多边形内
参数:p指目标点, ptPolygon指多边形的点集合, nCount指多边形的边数
Point_pos current_robot_pos(0.0, 0.0); 是一个两个数据X,Y的结构体;
//二维double矢量
struct Vec2d
{
double x, y;
Vec2d()
{
x = 0.0;
y = 0.0;
}
Vec2d(double dx, double dy)
{
x = dx;
y = dy;
}
void Set(double dx, double dy)
{
x = dx;
y = dy;
}
};
//作用:判断点是否在多边形内
//p指目标点, ptPolygon指多边形的点集合, nCount指多边形的边数
bool PtInPolygon(double x, double y, std::vector<Vec2d> &ptPolygon)
{
// 交点个数
int nCross = 0;
int nCount = ptPolygon.size();
for (int i = 0; i < nCount; i