特定の衝突点と特定の衝突角度で衝突する2つの円があり、次の式を使用して計算します:
C1(x1,y1) C2(x2,y2)
そしてそれらの中心を結ぶ線と x 軸の間の角度は
X = arctg (|y2 - y1| / |x2 - x1|)
私が望むのは、他の円と衝突したのと同じ角度で上の円を移動することです。角度 X を意味しますが、適切な直線移動のためにどの移動座標を指定すればよいかわかりません!
特定の衝突点と特定の衝突角度で衝突する2つの円があり、次の式を使用して計算します:
C1(x1,y1) C2(x2,y2)
そしてそれらの中心を結ぶ線と x 軸の間の角度は
X = arctg (|y2 - y1| / |x2 - x1|)
私が望むのは、他の円と衝突したのと同じ角度で上の円を移動することです。角度 X を意味しますが、適切な直線移動のためにどの移動座標を指定すればよいかわかりません!
私があなたが言っていると思うことのために、これがそれをきれいに行う方法です。
ベクトルで考えてください。
下の円の中心に座標(x1,y1)
があり、上の円の中心に座標があるとし(x2,y2)
ます。次に、2つのベクトルを定義します
support = (x1,y1)
direction = (x2,y2) - (x1,y1)
現在、2つの中心間の線は、パラメトリック表現によって完全に記述されています。
line = support + k*direction
のk
任意の値(-inf,+inf)
。最初は、k=1
上記の式に代入すると、実際に上の円の座標が得られます。しばらくするt
と、の値k
が増加k
し、方程式のその新しい値を代入すると、上の円の中心の新しい座標が得られます。
値でどれだけk
増加するかは円の速度t
に等しいです、そして私はそれを完全にあなたに任せます:)
このようにすると、角度や座標変換などをいじくり回す必要がなくなります。3Dでも機能します(z
どこにでも座標を追加する場合)。