私はボールを窓の周りに跳ね返そうとしています。どのくらい離れてボールが壁に当たるかによって、どの角度で反射するかによって決まります。写真では、黒い軌道が内側の半分の反対側の壁に当たっていることがわかります。灰色の軌道は、反射して他の半分に当たると...反射の角度を小さくします。跳ねるボールのランダムな角度
私はそれについて正しく考えているのかどうかはわかりません...座標を度数で表現しようとしています。
したがってPIC所与...あなたが度を取得し、その後、それらの差分を取る...
度= 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度の壁面に反射することがわかりました(それは入射角です)。しかし、私はボールが必ずしも各壁から一様に反映されることを望まないので、変動性が追加されます。
私の質問:私は正確にボールの角度を計算
- アム?
- 壁に当たる場所に基づいてバウンスに変動性を追加するにはどうすればよいですか?
- 角度を度で指定したら、それをどのように座標に変換できますか?
ありがとうございます!
Gilbertにお返事ありがとうございます。私は上の図面を更新しました...それは正しいですか? – Growler
@Growler:はい、シータはあなたが計算している角度です。 –
私は、角度を度に設定すると、その角度を表す新しい増分値を得る方法を探しています。と同様に 'x + = newVal;'の 'newVal'とxとyの' y + = newVal'はインクリメントされますか? – Growler