2013-07-26 11 views
5

私はボールを窓の周りに跳ね返そうとしています。どのくらい離れてボールが壁に当たるかによって、どの角度で反射するかによって決まります。写真では、黒い軌道が内側の半分の反対側の壁に当たっていることがわかります。灰色の軌道は、反射して他の半分に当たると...反射の角度を小さくします。跳ねるボールのランダムな角度

私はそれについて正しく考えているのかどうかはわかりません...座標を度数で表現しようとしています。

したがってPIC所与...あなたが度を取得し、その後、それらの差分を取る...

度= Math.atan2(反対/隣接)=(-4/-2)

enter image description here

マイコード

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度の壁面に反射することがわかりました(それは入射角です)。しかし、私はボールが必ずしも各壁から一様に反映されることを望まないので、変動性が追加されます。

私の質問:私は正確にボールの角度を計算

  • アム?
  • 壁に当たる場所に基づいてバウンスに変動性を追加するにはどうすればよいですか?
  • 角度を度で指定したら、それをどのように座標に変換できますか?

ありがとうございます!

答えて

2

ボールの角度を正しく計算していますか?

図は縮尺通りではありません。 26度は、壁に垂直な線から測定されます。

壁に当たる場所に基づいてバウンスに変動性を追加するにはどうすればよいですか?

あなたは既にランダムな角度を提案しました。また、壁の中心からの距離に基づいて反射の角度を調整することもできます。

独自の方法で反射角度を計算します。あなたはあなたの計算があなたにあなたが探している "ランダム性"を与えるまで計算を調整することができます。

角度を度で指定したら、それをどのように座標に変換できますか?

度をラジアンに変換してから、SAS of the triangleを計算します。モデルの角度をラジアンのままにして、ディスプレイ/診断方法で角度に変換してください。

+0

Gilbertにお返事ありがとうございます。私は上の図面を更新しました...それは正しいですか? – Growler

+0

@Growler:はい、シータはあなたが計算している角度です。 –

+0

私は、角度を度に設定すると、その角度を表す新しい増分値を得る方法を探しています。と同様に 'x + = newVal;'の 'newVal'とxとyの' y + = newVal'はインクリメントされますか? – Growler

1

ボールの表面からの距離は実際には角度に影響しないと思います。表面に当たる前のボールの角度は、自然になるために表面から離れるときに同じ(鏡面反射)でなければなりません。

ラバーボールに何が起こるかを考えていくことで、バラツキを加えることができます。力などによってインパクトが少し変わるため、反射は常に同じではありません。あなたは単純に1つまたは2つのランダムに追加または削除し、それがどうなるかを見ることができます。

角度を取得したら、もう一度三角法に戻ります。あなたは角度を持っており、斜辺を知っています(私はあなたのフレームレートとボールがサーフェスから一定量移動したと思われます)。だから、あなたは三角形の隣り合う線と反対の線を得る必要があります。例えば

sin(angle) * hypothenuse = opposite (so Y offset from the surface).

cos(angle) * hypothenuse = adjacent (so X offset from the point of contact).

ちょうど接触点の座標から、隣接する、反対の値(の方向に応じて)追加または削除。

1

少しランダムに見せたい場合は、少しスピンをモデル化できます。複雑すぎる必要はありません。

回転しておらず、45度の角度で壁に当たった場合、ボールにスピンを与えます。それが次の壁に当たったとき、スピンは角度に加えられ、スピンは角度だけ増加(または減少)されます。スピンと角度の組み合わせは、壁から出てくるスピードにも影響すると思う(実際の状況を視覚化するだけ)

これは本当にランダムでなくても変わるだろうが、それは実際に見えるでしょう - 他の制限を適用する必要があるかもしれません(私は最大スピンを制限する方法がなければならないと思います)。

私はルールを作るだけではなく、数学に深く入り込むことなくこれをモデル化するのに十分な周りの簡単な物理学の本があると思います。

関連する問題