Я работаю над анимацией, где несколько треугольных объектов перемещаются по экрану. Чтобы гарантировать, что каждая сторона направлена туда, куда она движется, мне нужно повернуть изображение под соответствующим углом.Найти угол, представляющий направление движения от координат начала координат.
Моя проблема заключается в том, что угол, который возвращает мой код, точно не делает этого. Возвращаемые значения не изменяются более чем на несколько градусов.
/**
* Accepts two grid positions are arguments. The current position
* of the object and the next grid position. Returns an angle representing
* the direction of travel from the current position towards the next position. By converting the Cartesian coordinates into polar coordinates.
*
*/
public void setAngle(Vector2d currentPos, Vector2d nextPos) {
Double delta_x = current.xPos - next.xPos;
Double delta_y = current.yPos - next.yPos;
Double theta = Math.atan2(delta_y, delta_x);
this.angle = theta;
}
Example:
|| current: 1031.1438073417544 , 268.3133503758045 || next: 1033.101761841174 , 269.0819944286846 || Angle: 0.0
|| current: 1033.1901579769194 , 242.19363555578593 || next: 1035.1281222295695 , 243.08778242413436 || Angle: 0.0
|| current: 1022.1577455080815 , 255.24422527831163 || next: 1024.0301966330894 , 256.19078788718997 || Angle: 0.0
Ваш вопрос невозможно ответить, не видя код. Обратите внимание, что функции триггера Math работают в радианах, хотя вращение JavaFX находится в градусах. –
Я добавил код. Надеюсь это поможет. –
Вы понимаете, что текущие значения pos и next pos в вашем выходе идентичны? – Roland