小编mam*_*ood的帖子

找到两个移动物体的更好交点

我想优化我的算法之一,我将尝试以最佳方式解释它.

主题

我们在t = 0时处于2D欧几里得系统中.在这个系统中有两个对象:O1O2.

O1O2分别位于PAPC点.

O1以点PB的方向以恒定且已知的速度移动.当物体到达PB时,物体将停止.

O2可以在任何方向上以不同或不同的O1的恒定和已知速度移动.在时间0,O2 没有方向,我们需要为它找到一个.

知识参数:

  • O1:位置,方向,速度
  • O2:位置,速度

这是系统的一个小图.

系统图

我们希望找到点PI和时间ti : Position of O1 at the time ti = Position of O2 at the time ti = PI. 然后我们将使对象O2移动到点P1以获得O2方向.

当选择O2的方向(点PI)并且两个对象O1和O2都在移动时,对象将永远不会停止或等待彼此.

在这种情况下,结果将是这样的(PI在此图片上标注为D). 最佳交集

算法

你可以在这个jsfiddle找到用JS编写的工作算法,它也是理解这个问题的好方法.

这时我使用的是一个简单的算法,但是可以进行大量的操作,我会获得最佳的交叉时间,然后获得交叉位置.

为了得到这个时间,我会在一刻检查O1的位置,并检查此时O2是否可能到达此位置.如果O2无法及时到达物体,我们会将时间增加150%,但是如果O2当时可以越过O1-B线,我们将把时间缩短50%.

最终,经过多次近似,我们将找到两个物体相遇的最佳时间.

伪代码

function getOptimalIntersectionTime time
   if distance …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm math optimization geometry

14
推荐指数
1
解决办法
5501
查看次数

标签 统计

algorithm ×1

geometry ×1

javascript ×1

math ×1

optimization ×1