繁体   English   中英

如何确定点是否位于3D空间中的多边形内?

[英]How to determine if a point lies inside a polygon in 3D space?

我有一个3D点P(x,y,z)和一个由任意数量的3D点定义的多边形S。 多边形不一定是凸的(因此,我认为此处提供的解决方案无法回答我的问题),但是P与S处于同一平面。现在,我需要确定P是否位于S内。

例如:

polygon = np.array([[6173.953125  , 9689.90136719,  298.03326416],
       [6173.95410156, 9689.90136719,  298.09350586],
       [6173.89355469, 9689.86621094,  298.23690796],
       [6173.89355469, 9689.86621094,  298.23690796],
       [6173.83496094, 9689.83398438,  298.5083313 ],
       [6173.89453125, 9689.86816406,  298.38320923],
       [6173.89697266, 9689.87011719,  298.44348145],
       [6173.89697266, 9689.87011719,  298.44348145],
       [6173.953125  , 9689.90136719,  298.03326416],
       [6173.89355469, 9689.86621094,  298.23690796],
       ...
       ])

point = np.array([6171.37079656, 9688.35796064,  309.00229108])

示例图像:多边形外的点: 在此处输入图片说明

在此示例中,很明显,结果应为“ False”(点在外部)。

使用要点:

point2 = np.array([6173.83496094, 9689.83398438, 297.72579346])

结果应为“ True”(点在多边形中)。

示例图像:在多边形内指向: 在此处输入图片说明

我知道,我基本上必须解决一个简单的多边形点(PiP)问题。 但是,是否有直接包含此类功能的包装? 或如何转换所有点以应用形状或类似软件包提供的PiP算法?

P is in the same plane as S ,进行(虚拟)多边形投影并指向任意坐标平面(不垂直于多边形平面)。 例如,要投影到OXZ(适用于第二个示例),只需忽略Y分量。

然后使用适用于2D( pnpoly )的任何算法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM