具有障碍物和角度限制的弧形网格表面上的直线路径

问题描述 投票:0回答:1

我有一个网格。如果有东西从一侧边缘掉落,则它会以与圆环的粘贴图相同的方式重新出现在另一侧。我想在使用算法之间找到一条直线,在网格上有两个任意点。该线必须完全避免穿过任何障碍物正方形。它也必须在与x轴成角度的指定范围内。它应该返回找到的线性路径的斜率。起始位置是已知的,因此仅需要斜率。如果不存在这样的路径,则该算法必须返回一些异常数据值,指示缺少可能的路径。它也应该比搜索程序能够处理的所有角度更好。如何制作此算法?我已经尝试过搜索程序能够处理的所有角度并延长线直到碰到某些东西或达到某个最大长度,但这效率很低,我真的不希望有最大长度。发现的路径不必是最短的路径。它只需要是一条直线的路径,与x轴之间的角度范围一定,并且不会碰到任何障碍物正方形。

algorithm geometry grid path-finding
1个回答
0
投票

此图像可能有帮助

enter image description here

[绿色是起点,红色是目标,棕色正方形是障碍物,灰色区域是被障碍物阻挡的区域。

请注意,只有一个目标和一个障碍。重复目标和障碍物以显示当您离开网格的右边缘并返回左边缘时会发生什么。

您会看到,每条线围绕网格缠绕时,与目标的角度以及与障碍物的角度都会减小。最终,障碍物开始掩盖自身。超过这一点,就没有希望达到目标。因此,在此示例中,恰好有两个角度可以到达目标。


添加另一个障碍物(紫色),所有角度都被更快地遮挡了。

enter image description here

如果障碍物与目标在同一水平线上,则所有可能的角度都将被阻止花费更长的时间。但是最终,障碍物会自行遮挡,并且超出该点的所有目标角度都将被遮挡。

enter image description here

并且仅出于完整性考虑,可以忽略目标上方的障碍。与目标的角度将始终小于与障碍物的角度。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.