Я пытаюсь определить направление скорости объекта в Phaser 3 & Matter JS. В основном я его вылизал, но есть 1 семейство значений, где формула не работает, и это заставляет меня поверить, что я не на своем месте.
У меня есть компоненты x & y объектаскорость, где вверх и влево отрицательны, вниз и вправо положительны (Phaser 3 & MatterJS)
Итак, формула, которую я получил сейчас, с учетом известных Vx
и Vy
:
angle = Math.atan2(Vy,Vx) + Math.PI/2
Добавление Math.PI/2
в основном поворачивает результат на 1/4 окружности против часовой стрелки, так как atan2()
дает число от горизонтальной оси.
Это работает, в основном,:
| Vx | Vy | Direction | Angle |
|----|----|-----------|-------------|
| 0 | -1 | N | 0 |
| 1 | -1 | NE | Pi * 1/4 |
| 1 | 0 | E | Pi * 2/4 |
| 1 | 1 | SE | Pi * 3/4 |
| 0 | 1 | S | Pi * 4/4 |
| -1 | 1 | SW | Pi * 5/4 |
| -1 | 0 | W | Pi * 6/4 |
| -1 | -1 | NW | -(Pi * 1/4) |
Что за последняя строка? Является ли северо-западный квадрант особым случаем, для которого требуется эта формула?
angle = 2*Math.PI + Math.atan2(-1,-1) + Math.PI/2;
angle = 5*Math.PI/2 + Math.atan2(-1,-1);// reduced formula