在2D坐标系上绘制曲线轨迹

时间:2016-02-28 17:41:39

标签: c++ math 2d curve

我在2D坐标系中有一些有序点(小于10)。 我有一个代理人在系统中移动,我想在他们的订单之后找到这些点之间的最短路径。 对于背景,代理可以被给予一个推力的位置,并且我的目标是绘制最快的路线,因为代理具有最大推力和最大角速度。 经过一些研究,我意识到我可能正在寻找一种曲线拟合算法,但我不知道底层函数,因为这些点是随机分布在坐标系中的。 请帮我找到解决这个问题的方法。 我对任何建议持开放态度,我首选的编程语言是C ++。

1 个答案:

答案 0 :(得分:0)

我确信有一个纯粹的数学解决方案,例如spacecraft trajectory optimization for example,但这是我如何考虑从编程/退火的角度来看它。

即使你需要一个连续的路径,你也可以用谨慎的步骤开始路径搜索,并且可以通过容差来获得足够接近每个点的开始。

  • 为每一步指定一定的时间,并在每一步改变施加的角力和推力。
  • 计算下一步开始时产生的角动量和位置。
  • 使用随机搜索选择下一步的参数,或者迭代每个参数以找到最接近下一个目标点的位置(量化角度选择和推力开始)。重复步骤,直到距离下一个目标点足够近。然后重复以进入下一点。

一旦你有一个粗略的路径,你可以通过减少步数的时间/大小和目标点的容差来开始改进它(可能使用前一次运行中的粗略点作为新的目标点)。

在评估每个步骤的参数适应度时,您可能需要考虑一旦达到目标点,您也可能希望在下一个点的方向上有动量。如果考虑多个路径并且适应度函数考虑最短的总时间,则这应该是紧急属性。

如果您使用std :: priority_queue和std :: map来跟踪潜在路径,那么

c ++可以提供帮助。