我无法思考如何计算二维空间中移动圆的法线。我已经达到了我想计算物体速度(方向速度)的法线的程度,但这就是我的大学代数头脑过热的地方,我正在使用的任何二维圆中心点、半径、速度和位置。
最终,我想使用 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));