我对如何计算在2D空间中移动的圆的法线感到困惑。我已经知道需要计算对象速度(方向速度)的法线,但是我的大学代数思维已经超载了。我正在处理两个2D圆,它们具有中心点、半径、速度和位置。
最终,我想使用Vector2.Reflect方法来获得更真实的物理效果。
提前致谢。
编辑:添加了一些代码尝试建议(没有成功),可能会误解建议。这里我使用篮球和棒球,因此有base和basket。我还有位置和速度,将其添加到位置以创建移动。
最终,我想使用Vector2.Reflect方法来获得更真实的物理效果。
提前致谢。
编辑:添加了一些代码尝试建议(没有成功),可能会误解建议。这里我使用篮球和棒球,因此有base和basket。我还有位置和速度,将其添加到位置以创建移动。
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));