判断点是否在三角形内
2016-11-10 16:11
211 查看
求面积根据叉乘:不懂可以先看一下我的博客里计算机几何,叉乘2016-11-1016:11:01
1 #include <iostream> 2 #include <algorithm> 3 #include <cmath> 4 using namespace std; 5 6 struct point { 7 double x, y; 8 }; 9 10 struct v { 11 point start, end; 12 }; 13 14 15 double dotProduct(v v1, v v2) { 16 return (v1.end.x - v1.start.x)*(v2.end.x - v2.start.x) + (v1.end.y - v1.start.y)*(v2.end.y - v2.start.y); 17 } 18 double crossProduct(v v1, v v2) { 19 return (v1.end.x - v1.start.x)*(v2.end.y - v2.start.y) - (v2.end.x - v2.start.y)*(v1.end.y - v1.start.y); 20 } 21 22 bool inTriangle(point a,point b,point c, point p) { 23 v ab, ac, bc; 24 ab.start = a, ab.end = b; 25 ac.start = a, ac.end = c; 26 bc.start = b, bc.end = c; 27 double Sabc = fabs(crossProduct(ab, ac)); 28 29 v pb; 30 pb.start = p, pb.end= b; 31 double Sabp = fabs(crossProduct(ab, pb)); 32 33 v pc; 34 pc.start = p, pc.end = c; 35 double Sacp = fabs(crossProduct(ac, pc)); 36 37 double Sbcp = fabs(crossProduct(bc, pc)); 38 39 if (fabs(Sabc - Sabp - Sacp - Sbcp) < 1e-5) 40 return true; 41 return false; 42 } 43 44 45 int main() { 46 point p1, p2, p3,p0; 47 while (cin >> p1.x >> p1.y >> p2.x >> p2.y >> p3.x >> p3.y >> p0.x >> p0.y) { 48 cout << inTriangle(p1, p2, p3, p0); 49 } 50 }
相关文章推荐
- C#判断一个点是否在三角形内?
- 判断点是否在三角形内 和 点是否在矩形内
- 叉乘法判断点是否在三角形内
- 判断点是否在三角形内
- 判断点P是否在三角形ABC内部
- 如何判断一个点是否在一个多边形内部+三角形有向面积公式
- "科林明伦杯"哈尔滨理工大学第八届程序设计竞赛——Hrbust -2373 小C的问题(利用斐波那契数列规律判断三边关系是否构成三角形)
- 输入三角形三边判断是否是直角三角形
- 判断点是否在三点围成的三角形内
- 如何判断一个点是否在三角形内部
- C#判断三个点是否构成三角形和某个点是否在三角形内
- 判断点是否在三角形内 和 点是否在矩形内
- Unity3D:判断一个点是否在三角形里面
- 判断点是否在三角形内
- 判断顶点是否位于三角形内
- 判断一个点是否在三角形区域内
- 判断一个点是否在三个点组成的三角形内 java 代码 面试经典
- CSU 1272 1272: Karma(几何 判断点是否在三角形内)
- Introduction to Java Programming编程题3.27<判断点是否在三角形内>
- 用java判断点是否在三角形内