找到多边形内的任何点

时间:2015-11-26 17:32:30

标签: algorithm lua

问题:

如何在多边形内找到任何点,这个点至少距边缘epsilon距离(以避免数值问题)。

解释

我想找到解决方案的问题与通常的不同是多边形问题中的一个点。我想这可能更简单,或者基于多边形算法中的点的答案(例如光线投射)。

该过程可以从选择多边形(min + max)/ 2 的伪中点开始。这一点可以通过射线投射或类似的东西来测试。如果该点不在另一个点内,则在每个轴的 min max 之间的某处随机选择。

我们谈论的多边形有一个不规则的形状,由几十到一百个顶点定义。没有自我交叉点。如果我在多边形边缘附近选取一个点,我就会担心数值问题,因此必须添加一个非常靠近边缘的要求。它并不需要特别具有计算效率,只是没有疯狂的低效率。

这可以通过简单,优雅的方式解决吗?

我正在使用Lua。

1 个答案:

答案 0 :(得分:1)

在多边形上选取一个在某个方向上极端的点,例如最大y坐标的点。在将线从该点平分到两侧各点的线的方向上移动一小段距离。检查您是否在多边形中,如果没有减少移动的距离。

如果有关系并且其两侧的分数具有相同的y坐标,则必须尝试两侧的测试点。