java - 计算在Java中转动boid以到达对象的方式
问题描述
tl; dr:我有角度 x 和角度 y 的弧度;我需要以哪种方式转动角度 x 以匹配角度 y?
我有一个想要指向a 的boid(角度以弧度为单位)。然而,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的这篇博文中在线找到了解决方案。这更好地描述了问题和解决方案。
推荐阅读
- c# - 我无法调试 mvc Web 应用程序
- python - 在创建另一列时使用 settingsWithCopyWarning 发出警告
- javascript - Jquery选择器/按类/ id获取元素
- python - 在 Python 类中传递参数的最佳实践
- regex - 正则表达式:匹配特定单词的表达式
- mysql - 在mysql中,sum(a)和sum(a) over()有什么区别?
- r - R: how to obtain unique pairwise combinations of 2 vectors
- javascript - Typescript 中的可扩展唯一 ID 函数
- javascript - React Js:在构建 gh-pages 或 netlify 后不起作用
- python - 编写 python 脚本连接到端口