基本的な 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 にするにはどうすればよいでしょうか??
小さいものに違いないのは分かっているのですが、それが何か思いつきません...
助けてくれてありがとう(いいえ、これは課題ではありません)