0

tl;dr : ラジアン単位の角度 x と角度 y があります。角度 y に一致させるには、角度 x をどちらに回す必要がありますか?

私は a の方を指すことを望むanを持つ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;
}

ありがとう

4

1 に答える 1