转自:https://www.cnblogs.com/simplekinght/p/9218310.html
面积法:若点P在三角形ABC内,则三角形ABP+三角形ACP+三角形BCP的面积等于三角形ABC
已知三角形三点坐标ABC,如何求三角形面积呢?
根据叉乘公式,向量A=(x1,y1) ,向量B=(x2,y2),A x B = x1*y2 - x2*y1
此时求得的是向量A和向量B的形成的平行四边形的面积,除以2就是三角形的面积了
1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 #include <cmath> 5 #include <cstdio> 6 #include <algorithm> 7 using namespace std; 8 const double eps = 1e-8; 9 struct point 10 { 11 double x,y; 12 }; 13 double solve(point a,point b,point c) 14 { 15 point A; 16 A.x = b.x-a.x; 17 A.y = b.y-a.y; 18 B.x = c.x-a.x; 19 B.y = c.y-a.y; 20 return (A.x*B.y-B.x*A.y)/2.0; 21 } 22 23 int main() 24 { 25 point A,B,C,P; 26 cin>>A.x>>A.y; 27 cin>>B.x>>B.y; 28 cin>>C.x>>C.y; 29 cin>>P.x>>P.y; 30 double sum = solve(A,B,C); 31 double k=0; 32 k + = solve(A,B,P); 33 k + = solve(B,C,P); 34 k + = solve(A,C,P); 35 if((k-sum)>eps) cout<<"在三角形外"<<endl; 36 else cout<<"在三角形内"<<endl; 37 return 0; 38 }