如何判断一个点,在一个平面(多个平面)的同一侧?

百分百好牛 2014-05-26 04:00:23

如上图所示,AB两点连成一直线,加上眼睛视线方向,可以生成一个平面。现在该平面的法向是向上的,把图所示的平面切成两半。点C在该平面的上部分,我认为返回值为True,点D在下部分,我认为返回值为False。如果该点直接就在AB或者其延长线上,我也认为True。

这个算法应该不难。比如我想到的一个:
从C做垂线到AB,垂点设为C0, 然后C0-C的方向,如果和法向一致,我就认为在范围内,返回true,否则返回false。


但我的实际问题比这个更复杂一些,如上图所示:
我有AA1A2...An多条线段,加上眼睛视线的方向,能够组成多个平面,同样把图中平面切成两半,上半面和下半面。
其中,点C在上半面,我返回True,D在下半面,返回False。

但这个算法我就不知道怎么判断了?还有一条件,假设AA1A2...An是凸的,不是凹的(即相邻的两条线段的夹角>=90度)
我认为这应该是一个经典的问题,但我就是不知道呢。有没有图形学的大牛指点一下。谢谢!

...全文
2625 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xialanfang 2015-05-25
  • 打赏
  • 举报
回复
引用 2 楼 yazoox 的回复:
最后,还是找到一个workaround,不用强行去计算这个了! 谢谢楼上的兄弟的支持!
请问能说一下你的方法么?我也需要,谢谢1
百分百好牛 2014-07-17
  • 打赏
  • 举报
回复
最后,还是找到一个workaround,不用强行去计算这个了! 谢谢楼上的兄弟的支持!
dchneric 2014-05-26
  • 打赏
  • 举报
回复
点c在线段ab一边 ---> 三角形cab面积为正 ---> ac x ab外积为正 如果你的线段是凸的,那么所有外积 A(k)C x A(k)A(k+1)符号相同就行了 另外“是否在折线一侧”这个本身的意思貌似等于“是否在第一段、最后一段的同侧”,所以只要判断k=1. k=n-1同号就行了 当然如果第一段最后一段本身就相反,好像也不是很有意义...

4,505

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧