判断点P是否在三角形ABC内部
来源:互联网 发布:淘宝修改评价内容 编辑:程序博客网 时间:2024/05/04 13:05
判断点P是否在三角形ABC内部
(1)计算叉乘
MA = PA×PB
MB = PB×PC
MC = PC×PA
(2)叉乘算法
PA×PB = (A-P)×(B-P)
= (Xa-Xp)(Yb-Yp)-(Ya-Yp)(Xb-Xp)
(3)判定
如果全部大于0或者全部小于0(由于三角形三个点顺序取反了)则P在三角形内部
否则在边线上或者在三角形外部.
(1)计算叉乘
MA = PA×PB
MB = PB×PC
MC = PC×PA
(2)叉乘算法
PA×PB = (A-P)×(B-P)
= (Xa-Xp)(Yb-Yp)-(Ya-Yp)(Xb-Xp)
float Cross(Vector2 p, Vector2 a, Vector2 b){ return (a.x-p.x)*(b.y-p.y)-(a.y-p.y)*(b.x-p.x);}
(3)判定
如果全部大于0或者全部小于0(由于三角形三个点顺序取反了)则P在三角形内部
否则在边线上或者在三角形外部.
bool IsInTriangle(Vector2 a, Vector2 b, Vector2 c, Vector2 p){ float ma = Cross(p, a, b); float mb = Cross(p, b, c); float mc = Cross(p, c, a); return (ma>0 && mb>0 && mc>0) || (ma<0 && mb<0 && mc <0);}
(4)必要条件判定
<1>如果点P不在三角形的包围矩形内, 则点不在三角形内
<2>如果点P到三角形内某个点G(比如重心, 或者某个顶点)的距离,大于所有三个点到这个点G的距离, 则点P不在三角形内
0 0
- 判断点P是否在三角形ABC内部
- 如何判断点P是否在三角形ABC内?
- 判断点P是否在三角形ABC内
- 判断点P是否在三角形ABC内
- 判断点是否在一个三角形内部
- 判断点是否在三角形内部
- 判断点是否在三角形内部
- 判断点是否在三角形内部
- 判断点是否在三角形内部
- 判断点是否在三角形内部
- 判断点是否在一个三角形内部
- 三角形有向面积 + 判断点是否在三角形内部
- 如何判断一个点是否在三角形内部
- 如何判断一个点是否在三角形内部
- 如何判断一个点是否在三角形内部
- 如何判断一个点是否在三角形内部
- 判断点是否在三角形内部(xdoj 1125)
- 其他题目---判断一个点是否在三角形内部
- win8+XAML Binding(数据绑定)
- 一道题检测是否理解指针
- HDU ACM 1078 FatMouse and Cheese 记忆化+DFS
- exec函数
- 教你如何购买笔记本电池
- 判断点P是否在三角形ABC内部
- python 第三方模块安装路径
- Java高级编程:堵塞队列
- 安卓学习笔记之selector
- 黑马程序员——Java基础------IO流之字符流、字节流和缓冲区。
- 转:Linux的inode的理解
- Linux 内核内存泄露工具使用
- 用Markdown写博客
- C primer plus课后习题答案(部分)