首页 > 解决方案 > 计算在Java中转动boid以到达对象的方式

问题描述

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

我有一个想要指向a 的boid(角度以弧度为单位)。然而,boid 不能以大于定义的速度转动(乘以- 自上次物理更新以来的时间)。如果超过此速度,则应改为以该方向的最大速度转动。唯一的问题是哪个方向anglegoalAngleConstants.maxTurningSpeedtimePassed

以下代码适用于大多数情况,但在超过 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;
}

谢谢

标签: javaangleboids

解决方案


我在Paul Bloxel的这篇博文中在线找到了解决方案。这更好地描述了问题和解决方案。


推荐阅读