我试图进入一些基本的 JavaFX 游戏开发,但我对一些循环数学感到困惑。
我在 (x:250, y:250) 有一个半径为 50 的圆。
我的目标是根据鼠标的位置在上述圆圈的圆周上制作一个较小的圆圈。
我感到困惑的是坐标空间和它背后的Trig。
我的问题来自屏幕上的 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?
我知道它一定是小东西,但我就是想不出它是什么......
感谢您的帮助(不,这不是任务)