一个对象位于 A,想要移动到 B。 我想计算一个移动向量,不会在数组C 中的待避点的距离D内移动。
因此,如果移动向量(B-A)被归一化并乘以物体的速度会使其接近 C 中任何一个点 D 的范围,那么该向量将旋转,以便它不会这样做。
这是在二维中的。另外,如果这个操作有一个名称,请在评论中指出或自己编辑这个问题,因为我不知道该怎么称呼它。
此外,我的第一反应是将活动区域分成节点,并运行 A*,但我想尝试这个问题的数学方法,对于群集的一些实验给我留下了可以做到的印象。 更新(来自评论):这张图片非常接近我想要的解决方案:
假设我们从左边的点开始,我们向右转向目标(另一个点),我们在右边检测到一堵墙,所以我们停止转向并向前移动。墙消失了,所以我们允许重新开始朝着目标旋转,以此类推。我知道这可能导致对象根本无法到达那里,但我想定义一种行为,而不是必须要有一个解决方案,如果你知道我的意思的话。 更新2:将活动区域转换为一组节点可能会证明效率低下。 A*和其他启发式图遍历算法非常适合低维问题。但是我想要移动的区域在大小上是无限的,并且只有少数障碍物分散其中。节点本身或者更准确地说是潜在位置是无限小的。当然,这可以通过某种四叉树进行优化,但我有一种感觉,简单的移动向量在某种程度上旋转和插值也可以解决这个问题。
因此,如果移动向量(B-A)被归一化并乘以物体的速度会使其接近 C 中任何一个点 D 的范围,那么该向量将旋转,以便它不会这样做。
这是在二维中的。另外,如果这个操作有一个名称,请在评论中指出或自己编辑这个问题,因为我不知道该怎么称呼它。
此外,我的第一反应是将活动区域分成节点,并运行 A*,但我想尝试这个问题的数学方法,对于群集的一些实验给我留下了可以做到的印象。 更新(来自评论):这张图片非常接近我想要的解决方案:
假设我们从左边的点开始,我们向右转向目标(另一个点),我们在右边检测到一堵墙,所以我们停止转向并向前移动。墙消失了,所以我们允许重新开始朝着目标旋转,以此类推。我知道这可能导致对象根本无法到达那里,但我想定义一种行为,而不是必须要有一个解决方案,如果你知道我的意思的话。 更新2:将活动区域转换为一组节点可能会证明效率低下。 A*和其他启发式图遍历算法非常适合低维问题。但是我想要移动的区域在大小上是无限的,并且只有少数障碍物分散其中。节点本身或者更准确地说是潜在位置是无限小的。当然,这可以通过某种四叉树进行优化,但我有一种感觉,简单的移动向量在某种程度上旋转和插值也可以解决这个问题。