Ejemplo n.º 1
0
        public bool IsColliding(Planet planet1, Planet planet2, out Vector2 distanceVector)
        {
            distanceVector = Measurements.GetDistanceVector(planet1, planet2);
            float distance = distanceVector.Length();

            Vector2 coveredDistance  = planet2.DirectionNextFrame - planet1.DirectionNextFrame;
            float   skalar           = Vector2.Dot(coveredDistance, distanceVector);
            float   movementDistance = skalar / distance;

            float totalDistance = distance + movementDistance;

            return(planet1.Radius + planet2.Radius >= totalDistance);
        }
Ejemplo n.º 2
0
        public void CalculateGravity(Planet planet1, Planet planet2, GameTime gameTime)
        {
            Vector2 distanceVector = Measurements.GetDistanceVector(planet1, planet2);

            float distanceSqared = distanceVector.LengthSquared();

            if (distanceSqared == 0)
                return;

            float acceleration = GravityConstantKilometerTonns * GameGlobals.SimulationSpeedMuliplicator / distanceSqared * (float)gameTime.ElapsedGameTime.TotalSeconds;

            distanceVector.Normalize();
            distanceVector *= acceleration;

            planet1.Direction += distanceVector * planet2.Mass;
            planet2.Direction -= distanceVector * planet1.Mass;
        }