ボールを窓の周りで跳ねさせようとしています。ボールが壁に当たる距離と角度に応じて、反射が決まります。写真では、黒い軌道が内側半分の反対側の壁に当たっていることがわかります...そして、灰色の軌道は、反射して残りの半分に当たった場合を表しています...反射角が減少します.
私はそれについて正しく考えているかどうかわかりません... 座標を度で表そうとしています。
写真を考えると...あなたはそれらのデルタを取り、次に度を取得します...
度 = Math.atan2(反対/隣接) = (-4/-2)
私のコード
public class Calculate {
public Calculate() {
System.out.println(getCalc(7,5,4,0));
}
public double getCalc(int x1, int x2, int y1, int y2) {
double deltaX = Math.abs(x2-x1);
double deltaY = Math.abs(y2-y1);
double degrees = Math.toDegrees((java.lang.Math.atan2(deltaX, deltaY)));
return degrees;
}
}
次の出力が得られます。26.56505117707799
これで、ボールが壁から 26 度で反射することがわかりました (これが入射角であるため)。しかし、ボールが必ずしも各壁から一様に反射することを望んでいないので、変動性が追加されます。
私の質問:
- ボールの角度を正しく計算していますか?
- 壁に当たった場所に基づいて、バウンスに変動性を追加するにはどうすればよいですか?
- 角度を度単位で取得したら、それを座標に変換するにはどうすればよいですか?
ありがとうございました!