Я пытаюсь приступить к разработке базовой игры на JavaFX, и меня смущают некоторые математики.
У меня есть круг (x: 250, y: 250) с радиусом 50.
Моя цель - сделать меньший круг, который будет размещен на окружности вышеупомянутого круга, исходя из положения мыши.
Где я запутался, так это с координатным пространством и Тригом за всем этим.
Мои проблемы связаны с тем, что пространство X / Y на экране не центрировано в 0,0. Но верхний левый угол экрана - 0,0, а нижний правый - 500,500.
Мои расчеты:
var xpos:Number = mouseEvent.getX();
var ypos:Number = mouseEvent.getY();
var center_pos_x:Number = 250;
var center_pos_y:Number = 250;
var length = ypos - center_pos_y;
var height = xpos - center_pos_x;
var angle_deg = Math.toDegrees(Math.atan(height / length));
var angle_rad = Math.toRadians(angle_deg);
var radius = 50;
moving_circ_xpos = (radius * Math.cos(angle_rad)) + center_pos_x;
moving_circ_ypos = (radius * Math.sin(angle_rad)) + center_pos_y;
Я заставил приложение распечатать угол (angle_deg), который я рассчитал, когда я перемещаю мышь, и мой вывод ниже:
Когда мышь (в градусах движется против часовой стрелки):
- прямо над окружностью и горизонтально в линию с центром, угол равен -0
- влево и вертикально по центру, угол составляет -90
- непосредственно под кругом и горизонтально в линию с центром, угол равен 0
- вправо и по центру, угол 90
Итак, что я могу сделать, чтобы сделать его 0, 90, 180, 270 ??
Я знаю, что это должно быть что-то маленькое, но я просто не могу понять, что это такое ...
Спасибо за любую помощь
(и нет, это не задание)