私は 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
助けてくれてありがとう!