Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 查找多边形内的任意点_Algorithm_Lua - Fatal编程技术网

Algorithm 查找多边形内的任意点

Algorithm 查找多边形内的任意点,algorithm,lua,Algorithm,Lua,问题: 如何找到多边形内的任何点,其中该点与边的距离至少为ε(以避免数值问题) 说明: 我想找到一个解决方案的问题不同于通常的是多边形问题中的一个点。我想这可能更简单,或者基于多边形点算法的答案(例如光线投射) 该过程可以从拾取多边形的伪中点(最小+最大)/2开始。这一点可以通过光线投射或类似的方法进行测试。如果该点不在另一个点内,则在每个轴的最小值和最大值之间随机选择该点 我们正在讨论的多边形具有不规则形状,由几十到一百个顶点定义。不会有自我交集。如果我在多边形的边附近拾取一个点,我关心的是数

问题:

如何找到多边形内的任何点,其中该点与边的距离至少为ε(以避免数值问题)

说明:

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

该过程可以从拾取多边形的伪中点(最小+最大)/2开始。这一点可以通过光线投射或类似的方法进行测试。如果该点不在另一个点内,则在每个轴的最小值和最大值之间随机选择该点

我们正在讨论的多边形具有不规则形状,由几十到一百个顶点定义。不会有自我交集。如果我在多边形的边附近拾取一个点,我关心的是数值问题,因此必须添加一个要求,即该点不太靠近边。它不需要特别的计算效率,只是不需要极度低效

这能用一种简单、优雅的方式解决吗


我使用的是Lua。

在多边形上选择一个在某个方向上是极值的点,例如y坐标最大的点。沿直线的方向移动一小段距离,将直线从该点平分到其两侧的点。检查您是否在多边形中,如果没有,请缩短移动的距离

如果有接头,且接头两侧的点具有相同的y坐标,则必须在接头两侧尝试测试点。

参见主题2.06。