题解 | #判断一个点是否在三角形内部#
判断一个点是否在三角形内部
http://www.nowcoder.com/questionTerminal/f9c4290baed0406cbbe2c23dd687732c
方法一 利用向量积(叉乘)
#include <iostream>
using namespace std;
struct Point {
double x, y;
double operator^ (Point b) {
return x * b.y - y * b.x;
}
Point operator- (Point b) {
Point ans;
ans.x = x - b.x;
ans.y = y - b.y;
return ans;
}
};
int main() {
Point p[4];
for (int i = 0; i < 4; i++) {
cin >> p[i].x >> p[i].y;
}
int res = 0;
for (int i = 0; i < 3; i++) {
if (i != 2) {
double ans = (p[i] - p[i + 1]) ^ (p[i] - p[3]);
if (ans > 0) {
res += 1;
} else if (ans < 0) {
res += -1;
}
} else {
double ans = (p[2] - p[0]) ^ (p[2] - p[3]);
if (ans > 0) {
res += 1;
} else if (ans < 0) {
res += -1;
}
}
}
if (res == 3 || res == -3) {
cout << "Yes";
} else {
cout << "No";
}
}

