2D空間で移動する円の法線を計算する方法に頭を悩ませています。オブジェクトの速度(方向速度)の法線を計算することを想定しているところまで到達しましたが、それは私の大学の代数の心が過熱する場所です。中心点、半径、速度、および位置。
最終的には、Vector2.Reflectメソッドを使用して、この演習からもう少し現実的な物理を取得したいと考えています。
よろしくお願いします。
編集:提案を試してみるコードを追加しました(役に立たない)、おそらく提案を誤解しています。ここでは、バスケットボールと野球、つまりベースとバスケットを使用しています。また、位置と、動きを作成するために位置に追加されている速度があります。
if ((Vector2.Distance(baseMid, basketMid)) < baseRadius + basketRadius)
{
Vector2 baseNorm = basketMid - baseMid;
baseNorm.Normalize();
Vector2 basketNorm = baseMid - basketMid;
basketNorm.Normalize();
baseVelocity = Vector2.Reflect(baseVelocity, baseNorm);
basketVelocity = Vector2.Reflect(basketVelocity, basketNorm);
}
basePos.Y += baseVelocity.Y;
basePos.X += baseVelocity.X;
basketPos.Y += basketVelocity.Y;
basketPos.X += basketVelocity.X;
basketMid = new Vector2((basketballTex.Width / 2 + basketPos.X), (basketballTex.Height / 2 + basketPos.Y));
baseMid = new Vector2((baseballTex.Width / 2 + basePos.X), (baseballTex.Height / 2 + basePos.Y));