Пример #1
0
        /// <summary>
        /// Top level method for deterimining Time Gradient an object is "in".
        /// Calculates the time gradient due to proximity to a Mass, as well as to the object's own acceleration
        /// (check this. Could be double calculating based on Acceleration, and then Velocity on the next line)
        /// </summary>
        /// <param name="massBody1"></param>
        /// <param name="massBody2"></param>
        /// <param name="additionalDistanceBeyondRadii"></param>
        /// <returns></returns>
        public static MassBody CalculateTimeDilation(this MassBody massBody1, MassBody massBody2 = null, double additionalDistanceBeyondRadii = 0)
        {
            var massDilation = 1 - (massBody2 != null ? massBody1.GetTimeDilationFactorDueToMass(massBody2, additionalDistanceBeyondRadii) : 1);

            var velocityDilation = 1 - GetTimeDilationFactorDueToVelocity(massBody1.Velocity);

            var returnMassBody = massBody1.Copy();

            returnMassBody.TimeDilation = 1 - massDilation - velocityDilation;
            return(returnMassBody);
        }
Пример #2
0
        //If a mass is experiencing Acceleration / Weight Force / Centrifugal Force, etc, it is not centered within the Time Gradient affecting it
        //This is simplified. The acceleration should really be a 3D vector in relationship to the vector between the 2 centers of mass

        public static MassBody CalculateWeightForce(this MassBody massBody1, MassBody massBody2 = null, double additionalDistanceBeyondRadii = 0)
        {
            //Should we overwrite any weightforce already in here?
            var returnMassBody = massBody1.Copy();

            if (massBody2 != null)
            {
                returnMassBody.WeightForce += WeightForceDueToMass(massBody1, massBody2, additionalDistanceBeyondRadii);
            }

            if (massBody1.Acceleration > 0)
            {
                returnMassBody.WeightForce += WeightForceDueToAcceleration(massBody1, massBody1.Acceleration, 0);
            }

            return(returnMassBody);
        }