3

iPhone と Objective C での作業。

私はゲームに取り組んでおり、円オブジェクトからボールを​​正しく反射する必要があります。線と円の交差点としてやろうとしています。ボールの位置が円の外にあり、新しいボールの位置が次のドローの更新時に円の内側になります。線(ボールの軌跡)と円の交点がわかります。ここで、交点を中心にボール パスの終点を回転させて、接線からの正しい反射角度を得たいと考えています。

以下が知られています。

  • ボール電流 x,y
  • ボールエンド x,y
  • ボール半径
  • 円の中心 x,y
  • 円の半径
  • ボール パスと円 x および y の交点

接線と入ってくるボールのパスの間の入射角を見つける必要があることはわかっています。これは反射角にも等しくなります。これらの 2 つの角度がわかったら、それらを 180 から差し引いて回転角度を取得し、交点の角度を中心にその量だけ終点を回転させることができると思います。方法がわかりません。

4

2 に答える 2

4

まず、反射または跳ね返りがあることを示すために、ボールの中心が円の内側にある必要はないことに注意してください。ボールの中心と円の間の距離がボールの半径よりも小さい限り、バウンドが発生します。

円の半径がRでボールの半径がrの場合、円の半径がR+rでボールの半径が 0の場合に変換すると、物事は単純化されます。バウンス、これは同等です。

(拡大された)円とボールのパスの交点がある場合、その点での円の法線Nを簡単に計算できます(円の中心から衝突点への方向の単位ベクトルです)。 )。

入力ベクトルVの場合、反射ベクトルはV -2( NV ) Nです。ここで、( NV ) は内積です。この問題では、入力ベクトルVは交点から円の内側の点までのベクトルです。

上記の反射式については、ベクトル計算を使用して導出するのは比較的簡単ですが、「反射ベクトルを計算する」などの用語を Google 検索することもできます。式の符号は、VNの想定される方向によって異なります。 Mathworld には派生がありますが、前述のように符号が異なります。

于 2010-07-02T02:49:40.390 に答える
0

幾何学部分の解法しか知りません。=> ボールの半径
= > 円の半径
r1
r2

ピタゴラスの定理を使用して、2 つの円の間の距離を計算できます。距離が+
より小さい場合、衝突を行います。 r1r2

衝突については、こちらを参照してください。それはpythonで書かれていますが、何をすべきかのアイデアを与えるべきだと思います。うまくいけば、Objective C でも実装できます。PeterCollingRidgeによるチュートリアル。

于 2013-01-15T11:50:26.180 に答える