public Vector UpdateResultingForce(CelestialBody other, bool verbose = false) { Vector _this = Position, _other = other.Position; Vector relPos = _this.AddVector(_other.MultiplyScalar(-1)); double distSq = Math.Pow(relPos.GetNorm(), 2); double norm = (other.Mass * Gravitational * Mass) / distSq; Vector direction = relPos.GetVersor().MultiplyScalar(-1); Vector force = direction.MultiplyScalar(norm); if (verbose) { Console.WriteLine($"--- Start of {Name}, UpdateResultingForce ---"); Console.WriteLine($"Influence: {other.Name}"); Console.WriteLine($"{Name} relPos: {relPos}"); Console.WriteLine($"{Name} distSq: {distSq}"); Console.WriteLine($"{Name} norm: {norm}"); Console.WriteLine($"{Name} direction: {direction}"); Console.WriteLine($"{Name} force: {force}"); Console.WriteLine($"--- End of {Name} ---\n"); } ResultingForce = ResultingForce.AddVector(force); return(ResultingForce); }
public Vector UpdateAcceleration(bool verbose = false) { Acceleration = ResultingForce.MultiplyScalar(1 / Mass); if (verbose) { Console.WriteLine($"--- Start of {Name}, UpdateAcceleration ---"); Console.WriteLine($"{Name} acceleration: {Acceleration}"); Console.WriteLine($"--- End of {Name} ---\n"); } return(Acceleration); }