Esempio n. 1
0
        /// <summary>
        /// Using the inverse square law, with respect to gravity;
        /// This calculates the intensity of gravity at the surface of the Celesital Object using
        /// (G * M) / (R^2)
        /// where:
        /// G is the universal constant of Gravity;
        /// M is the mass of the Celestial Object;
        /// R is the radius of the Celestial Object;
        /// </summary>
        private void CalculateIntensityOfGravityAtSurface()
        {
            //Convert from Solar Mass to kg, if nessecary
            ExponentionalValues mass = CheckMassUnits();

            /// The gravitational constant of the universe: 6.674 x 10^-11 N *(m^2)/(kg^2)
            /// (Newton sqaure meters per kilogram squared)
            ExponentionalValues constantOfGravity = new ExponentionalValues(6.674f, -11, SIUnit.NewtonMetersSquaredPerKGSquared);

            //Multiply the mass by universal constant of gravity (G*M)
            ExponentionalValues GravityMassProduct = new ExponentionalValues(
                constantOfGravity.value * mass.value,
                constantOfGravity.exponent + mass.exponent,
                SIUnit.cubicMetersPerSecSquaredPerKG);

            //Evaluate: (radius)^2
            //Convert from Kilometers to Meters, if nessecary
            ExponentionalValues radius = CheckRadiusUnits();

            radius.units = SIUnit.metersSquared;
            radius.Squared();

            //Evaluate: GravityMassProduct / radius
            ExponentionalValues _surfaceGravity = new ExponentionalValues(
                (GravityMassProduct.value / radius.value),
                (GravityMassProduct.exponent - radius.exponent),
                SIUnit.metersPerSecSquared
                );

            //Acceleration of gravity at the surface in m/s^2
            _surfaceGravity.Normalize();
            SurfaceGravity = _surfaceGravity;
        }
Esempio n. 2
0
 public AstronomicalObject(string name, ExponentionalValues mass, ExponentionalValues radius)
 {
     Name   = name;
     Mass   = mass;
     Radius = radius;
     CalculateIntensityOfGravityAtSurface();
 }
        /// <summary>
        /// Convert from Kilometers to Meters
        /// </summary>
        /// <param name="radiusInKM"></param>
        /// <returns></returns>
        public static ExponentionalValues KilometersToMeters(ExponentionalValues radiusInKM)
        {
            float meters    = radiusInKM.value * 1000;
            int   exponents = radiusInKM.exponent;

            return(new ExponentionalValues(meters, exponents, SIUnit.m));
        }
        /// <summary>
        /// Convert from Solar Mass to Kilograms
        /// </summary>
        /// <param name="massInSM"></param>
        /// <returns></returns>
        public static ExponentionalValues SolarMassToKG(ExponentionalValues massInSM)
        {
            float kg        = massInSM.value * _solarToKG;
            int   exponents = massInSM.exponent + 30;

            return(new ExponentionalValues(kg, exponents, SIUnit.kg));
        }
Esempio n. 5
0
 public AstronomicalObject(string[] values)
 {
     Name = values[0];
     Mass = new ExponentionalValues(
         float.Parse(values[1]),
         int.Parse(values[2]),
         SIUnitConverter.StringToSIUnit(values[3])
         );
     Radius = new ExponentionalValues(
         float.Parse(values[4]),
         int.Parse(values[5]),
         SIUnitConverter.StringToSIUnit(values[6])
         );
     CalculateIntensityOfGravityAtSurface();
 }
Esempio n. 6
0
        /// <summary>
        /// Display the corresponding information in the corresponding fields
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void loadedObjectsCombo_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Get the selected Astronomical Object
            _SelectedAstronomicalObject = _AstronomicalObjectData[loadedObjectsCombo.SelectedIndex];

            nameTextBox.Text = _SelectedAstronomicalObject.Name;
            //Mass
            ExponentionalValues mass = _SelectedAstronomicalObject.Mass;

            massTextBox.Text            = mass.value.ToString();
            massExponentTextBox.Text    = mass.exponent.ToString();
            massUnitsCombo.SelectedItem = (mass.units.Equals(SIUnit.kg)) ? "kilograms" : "Solar Masses";

            //Radius
            ExponentionalValues radius = _SelectedAstronomicalObject.Radius;

            radiusTextBox.Text            = radius.value.ToString();
            radiusExponentTextBox.Text    = radius.exponent.ToString();
            radiusUnitsCombo.SelectedItem = (radius.units.Equals(SIUnit.m)) ? "meters" : "kilometers";

            gravityOutputTextBox.Text = _SelectedAstronomicalObject.SurfaceGravityToString();
            DisplayDistance(distanceTrackBar.Value);
        }