计算在Java中通过哪种方式将boid转换为对象



tl;dr:我用弧度表示角度x和角度y;我需要向哪个方向转动角度x以匹配角度y?

我有一个带有angle的boid,它希望指向goalAngle(角度以弧度为单位(。然而,boid不能以大于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的这篇博客文章中找到了一个在线解决方案。这样可以更好地描述问题和解决方案。

相关内容

  • 没有找到相关文章

最新更新