Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }