我一直在使用C#和Winforms开发一种重力模拟程序,但是我遇到了一些非常奇怪的问题。该程序基本上会在你单击时创建一个物体,并被其他物体所吸引。问题在于,除非它们在某些奇怪的距离范围内,否则它们不会朝着正方向(右、下)被吸引,而是朝着上方和左侧被吸引。
以下是更新代码:
以下是更新代码:
public Vector GetGravEffect(GravObject other)
{
if ((Math.Abs(X - other.X) <= Mass * Form.DrawScale + other.Mass * Form.DrawScale) &&
(Math.Abs(Y - other.Y) <= Mass * Form.DrawScale + other.Mass * Form.DrawScale))
{
return new Vector(0, 0);
}
double tAngle = Math.Atan2((other.Y - Y), (other.X - X));
double tMagnitude = (GravModifier * Mass * other.Mass / ((Math.Pow((other.X - X), 2)) + (Math.Pow((other.Y - Y), 2))) * 1000);
Complex c = Complex.FromPolarCoordinates(tMagnitude, tAngle);
Vector r = new Vector(c.Real, c.Imaginary);
return r;
}
完整的代码在这里: https://docs.google.com/open?id=0B79vmyWxBr-kTnUtQURPUlVidzQ
感谢任何帮助!