gpt4 book ai didi

geometry - "ray through vertex"检测多边形中的点时的特殊情况

转载 作者:行者123 更新时间:2023-12-02 19:23:41 27 4
gpt4 key购买 nike

要检测一个点是否在多边形中,您可以从该点到无穷远投影一条线,然后查看它与多少个多边形顶点相交......足够简单。我的问题是,如果射线在其中一个点上与多边形相交,则将其视为与两个线段相交,并被视为在多边形之外。我更改了我的函数,使其仅在光线与多边形的一个点相交时计算其中一个线段,但在某些情况下,一条线可以与该点相交,但仍然位于外部。以此图为例:

two examples of a ray crossing a polygon vertex

如果假设左上角的点是“无穷大”,并向其他任意一个点转换光线,则两个点都会在多边形的一个点处相交,并且将被视为与相同数量的顶点相交,即使一个一个在里面,一个在外面。

有没有办法弥补这一点,或者我是否必须假设这些边缘情况不会出现?

最佳答案

如果射线恰好穿过某个顶点上的一条边,则仅当另一个顶点位于射线上方时才计算该边。这将解决你的极端情况。

例如,在您发布的图片中,下方的光线在左上角顶点穿过正方形的两侧,但一侧在光线上方,另一侧在下方,因此贡献为 1,并且找到目标点在里面。上面的射线在右上顶点穿过两条边,两条边都在射线下方,因此它们对计数的贡献为 0,并且发现目标点在外部。

更新:

我记得读过一篇文章,其中描述了一种处理一般奇异情况的技术。如果有兴趣请阅读我的另一个答案。

关于geometry - "ray through vertex"检测多边形中的点时的特殊情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14130742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com