如果船舶旋转速度可以减少/增加的最大值达到最大值,那么如果玩家在移动目标的同时改变目标,您将无法防止超过玩家设定的目标。但是,您可以做的是确保以这样一种方式调整您当前的速度,以尽可能快地以零速度(即没有超调)达到最终目标。有关解决最优控制问题的一般方法,请参见http://en.wikipedia.org/wiki/Optimal_control 。最佳控制通常包括始终以全推力加速/减速(直到达到目标)。
为解决这个问题,用C表示新命令发出时刻的当前角度,用T表示目标角度。收到新目标时的角速度用V'表示,最大加速度用M表示. 正V对应顺时针旋转,负V对应逆时针移动。
假设你的初始角速度大于 0(V'>0),那么有两种可能达到 T:
1) 将 V 增加一段时间 U,然后将其减小直到为零。然后您的最终角度将是(绘制速度与时间的关系图,并确定要验证的区域):
C+ V'^2/(2 M) + 2U*V' + M U^2
哪个应该等同于 T 以找到 U(ABC 公式),除非它没有给出解决方案(负判别式),其中选项 2)应该给出一个解决方案。
2) 降低 V 一段时间,最终改变 V 的符号,然后增加 V 直到为零。绘制图片给出:
C+ V^2/(2 M) - M U^2.
等于 T 给出 U。
你会发现它们是一个非常简单的条件,它决定了选项 1) 或 2) 是否给出了解决方案。
初速度 V'<0 的情况类似(1 和 2,可能还有一些符号,翻转)。再次,画一幅画,以防你感到困惑。
这里有一些微妙的东西,因为如果你想在 T',那么 T'+K 360 度(/2 pi 弧度)也可以(前提是你可以全天候)。因此,您实际上可以选择最容易访问的 T的别名。