判断一点是否在三角形内部

判断一点是否在三角形内部GJK 算法中 需要判断三角形是否包含原点 来决定是否退出迭代循环 如下图所示 已知点 A B C 三点 和 点 P 的坐标 判断点 P 是否在由 A B C 三点 组成的三角形内

欢迎大家来到IT世界,在知识的湖畔探索吧!

判断一点是否在三角形内部

欢迎大家来到IT世界,在知识的湖畔探索吧!

接上文:碰撞检测算法之GJK算法

GJK算法中,需要判断三角形(单纯形)是否包含原点,来决定是否退出迭代循环。

同时,判断一点是否在三角形内部的问题 也是一些互联网公司对算法工程师面试中的一道算法题。

如下图所示,已知点 A、B、C 三点 和 点P 的坐标,判断点P是否在由A、B、C 三点 组成的三角形内。

判断一点是否在三角形内部

方法一:三角形面积法

如下图所示,当点P在三角形内部时,三角形面积:

△PAB+△PBC+△PCA = △ABC

判断一点是否在三角形内部

当点P在三角形外部时,则三角形面积:

△PAB+△PBC+△PCA > △ABC

判断一点是否在三角形内部

已知三角形三点坐标,可先求得三条边 a、b、c 的长度,再根据海伦公式,即可求得三角形面积。

判断一点是否在三角形内部

方法二:向量法

向量法判断点与线段的关系(一)

向量法判断点与线段的关系(二)

先来回顾一下向量叉乘的定义:

判断一点是否在三角形内部

向量的叉乘可以用来判断点P是在向量AB的左侧还是右侧

通过观察,可以发现:

  • 若点P在三角形内部时,沿逆时针方向,则点P一直在向量AB、BC、CA的左侧;
  • 若点P在三角形外部时,则点P必然在AB、BC、CA某一向量的右侧。
判断一点是否在三角形内部

若是三角形三点是顺时针方向,则若点P在三角形内部时,点P一直在向量AB、BC、CA的右侧。

对于点P在三角形的某一边上或与某一顶点重合的特殊情况,上述两种方法同样适用,需要注意一下临界条件的设置。

对于三角形,可以采用上面两种方法,对于任意多边形,则可根据射线法来判断某点是否在多边形的内部,该问题也称为 PIP(Point in Polygon)问题。

判断一点是否在三角形内部

详见:判断一点是否在多边形内部:射线法

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/121426.html

(0)
上一篇 2小时前
下一篇 1小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信