我一直在使用 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;
}
完整代码在此 : < a href=" https://docs.google.com/open? id= 0B79vmyWxBr- knUtQuurPUlVidzQ" rel="nofol" >https://docs.google.com/open?id= 0B79vmyWxBr- knUtQurPUlVidz/a >
谢谢你的帮助!