如何确定封闭的凹面多边形是否在里面? [关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何确定封闭的凹面多边形是否在里面? [关闭]相关的知识,希望对你有一定的参考价值。
我有2个多边形,A和B.
每个多边形都是闭合的,凹陷的。多边形的每个边缘都有一个相关的法线(蓝色/绿色),面向内部或外部。每个多边形顶点的缠绕顺序是任意的,与法线的方向无关。
仅使用每个多边形的法线和顶点,如何确定多边形的周长是朝向外(A)还是向内(B)?理想情况下,我正在寻找一种不涉及任何光线投射或交叉测试的解决方案。
答案
我想我找到了一个解决方案,到目前为止,在我的测试中它始终返回正确的结果。
首先,我使用此处答案中描述的求和方法确定多边形的缠绕顺序:
How to determine if a list of polygon points are in clockwise order?
然后我通过找到方向向量和向量[0,0,1]的叉积,然后对其进行归一化来手动计算第一条边的法线。由于这些是2d多边形,[0,0,1](其中z是向上轴)将始终垂直于任何边的方向,因此叉积将始终返回有效法线。如果整个多边形是逆时针的,则重要的部分是将得到的法线乘以-1。由于交叉产品的右手规则,这将给我们一个始终向外的正常,无论蜿蜒的顺序。
最后,我计算了手动计算的法线和第一条边的指定法线(原始图像的蓝色/绿色法线)的点积...如果点积> 0,我们指定的法线(因此我们的多边形)是朝外的,否则它是朝内的。这只需要对多边形的第一条边进行,因为所有法线都是向外或向内。
以上是关于如何确定封闭的凹面多边形是否在里面? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章