判断点是否在多边形内 c++代码
时间: 2024-01-15 11:05:35 浏览: 72
C++判断点是否在多边形内
5星 · 资源好评率100%
以下是用 C++ 实现判断点是否在多边形内的代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
struct Point {
int x, y;
};
bool isInsidePolygon(vector<Point>& polygon, Point p) {
int n = polygon.size();
int i, j;
bool c = false;
for (i = 0, j = n - 1; i < n; j = i++) {
if (((polygon[i].y > p.y) != (polygon[j].y > p.y)) &&
(p.x < (polygon[j].x - polygon[i].x) * (p.y - polygon[i].y) / (polygon[j].y - polygon[i].y) + polygon[i].x)) {
c = !c;
}
}
return c;
}
int main() {
// 定义一个多边形,顺序为逆时针方向
vector<Point> polygon = {{0,0}, {0,4}, {4,4}, {4,0}};
// 定义一个点
Point p = {2, 2};
// 判断点是否在多边形内
if (isInsidePolygon(polygon, p)) {
cout << "Point is inside polygon." << endl;
} else {
cout << "Point is outside polygon." << endl;
}
return 0;
}
```
在上面的代码中,使用 `struct` 定义了一个点的结构体,包含 `x` 和 `y` 两个成员变量。`isInsidePolygon` 函数接受一个多边形和一个点作为参数,返回一个布尔值表示该点是否在多边形内。这个函数使用了射线法,从该点向外发射一条射线,计算该射线与多边形的交点数,如果为奇数,则该点在多边形内,否则在多边形外。最后在 `main` 函数中定义了一个多边形和一个点,调用 `isInsidePolygon` 函数判断该点是否在多边形内,并输出结果。
阅读全文