计算用哪种方式将boid转到Java中的对象

问题描述

tl; dr 我有弧度x和y角;我需要哪种方式旋转角度x以匹配角度y?

我有一个boid一个angle,它想指向goalAngle(角度以弧度表示)。但是,旋转的速度不能超过Constants.maxTurningSpeed中定义的速度(乘以timePassed-自上次物理更新以来已经过了多长时间)。如果超过该速度,则应以该方向的最大速度转弯。唯一的问题是哪个方向

以下代码适用于大多数情况,但超过0阈值时可能会中断。有帮助吗?

if ((this.goalAngle - this.angle) % (2*Math.PI) > (Constants.maxTurningSpeed*timePassed)) { // turn left or right?
    this.angle += Constants.maxTurningSpeed*timePassed;
} else if ((this.goalAngle - this.angle) % (2*Math.PI) < -(Constants.maxTurningSpeed*timePassed)) {
    this.angle -= Constants.maxTurningSpeed*timePassed;
} else {
    this.angle = this.goalAngle;
}

谢谢

解决方法

我在Paul Bloxel的blog post中找到了在线解决方案。这样可以更好地描述问题和解决方案。