private void applyAcceleration(Planet thePlanetToMove) { var aAccWithMass = new Point(thePlanetToMove.Acceleration.X / thePlanetToMove.Mass, thePlanetToMove.Acceleration.Y / thePlanetToMove.Mass); thePlanetToMove.Location = MathHelper.AddPoints(thePlanetToMove.Location, aAccWithMass); thePlanetToMove.IsDoomed = hasPlanetCrossedEventHorizon(thePlanetToMove.Location); }
private void updateAcceleration(Planet thePlanetToUpdate, Planet theOtherPlanet) { var aDiff = MathHelper.GetDiffVector(thePlanetToUpdate.Location, theOtherPlanet.Location); var aDistance = MathHelper.GetDistance(thePlanetToUpdate.Location, theOtherPlanet.Location); var aNorm = (aDistance * aDistance * aDistance); var aNewAcc = new Point(Universe.Configuration.GravitationConstant * thePlanetToUpdate.Mass * theOtherPlanet.Mass * aDiff.X / aNorm, Universe.Configuration.GravitationConstant * thePlanetToUpdate.Mass * theOtherPlanet.Mass * aDiff.Y / aNorm); if (aDistance > Universe.Configuration.CollisionThreshold) { thePlanetToUpdate.Acceleration = MathHelper.AddPoints(thePlanetToUpdate.Acceleration, aNewAcc); } else { // nothing } }