#include"utils.hpp"
|
|
bool panduan(std::vector<point>polygons, point p) {
|
int num = 0;
|
|
for (int i = 0; i < 4; i++) {
|
|
point p1 = polygons[i % 4 % 4];
|
point p2 = polygons[(i % 4 + 1) % 4];
|
|
if (p1.y == p2.y) continue;
|
|
if (p.y < std::min(p1.y, p2.y)) continue;
|
|
if (p.y >= std::max(p1.y, p2.y)) continue;
|
|
if (p.y == std::min(p1.y, p2.y)) {
|
num++;
|
continue;
|
}
|
|
float x = (p.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x; //����ʽ
|
|
if (x > p.x) {
|
num++;
|
}
|
}
|
|
//printf("�������=%d\n", num);
|
|
if (num & 1)
|
{
|
return true;//��������
|
}
|
else
|
{
|
return false;//��������
|
}
|
|
}
|