Beispiel #1
0
        private void OnGravityCircle(object sender, EventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            try
            {
                double lon = Double.Parse(m_longitudetextBoxT.Text);
                double lat = Double.Parse(m_latitudeTextBox.Text);
                double alt = Double.Parse(m_altitudeTextBox.Text);

                double        gx, gy, gz;
                GravityCircle gc = m_gm.Circle(lat, alt, GravityModel.Mask.GEOID_HEIGHT | GravityModel.Mask.GRAVITY);
                gc.Gravity(lon, out gx, out gy, out gz);
                m_accelXTextBox.Text = gx.ToString();
                m_accelYTextBox.Text = gy.ToString();
                m_accelZTextBox.Text = gz.ToString();
                if (alt != 0.0)
                {
                    MessageBox.Show("Geoid height cannot be calculated with GravityCircle if altitude is not 0", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    m_geoidTextBox.Text = gc.GeoidHeight(lon).ToString();
                }
                Cursor = Cursors.Default;
            }
            catch (Exception xcpt)
            {
                Cursor = Cursors.Default;
                MessageBox.Show(xcpt.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Beispiel #2
0
 static void Main(string[] args)
 {
     try {
         GravityModel grav = new GravityModel("egm96", "");
         double       lat = 27.99, lon0 = 86.93, h = 8820; // Mt Everest
         {
             // Slow method of evaluating the values at several points on a circle of
             // latitude.
             for (int i = -5; i <= 5; ++i)
             {
                 double lon = lon0 + i * 0.2;
                 double gx, gy, gz;
                 grav.Gravity(lat, lon, h, out gx, out gy, out gz);
                 Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz));
             }
         }
         {
             // Fast method of evaluating the values at several points on a circle of
             // latitude using GravityCircle.
             GravityCircle circ = grav.Circle(lat, h, GravityModel.Mask.ALL);
             for (int i = -5; i <= 5; ++i)
             {
                 double lon = lon0 + i * 0.2;
                 double gx, gy, gz;
                 circ.Gravity(lon, out gx, out gy, out gz);
                 Console.WriteLine(String.Format("{0} {1} {2} {3}", lon, gx, gy, gz));
             }
         }
     }
     catch (GeographicErr e) {
         Console.WriteLine(String.Format("Caught exception: {0}", e.Message));
     }
 }
Beispiel #3
0
        private void OnValidate(object sender, EventArgs e)
        {
            try
            {
                double lon = -86.0;
                double lat = 32.0;
                double alt = 0.0;

                double       x, y, z;
                GravityModel gm = new GravityModel(m_name, m_path);
                gm.Disturbance(lat, lon, alt, out x, out y, out z);
                gm.GeoidHeight(lat, lon);
                gm.Gravity(lat, lon, alt, out x, out y, out z);
                gm.Phi(5000000.0, 5000000.0, out x, out y);
                gm.SphericalAnomaly(lat, lon, alt, out x, out y, out z);
                gm.T(5000000.0, 5000000.0, 5000000.0);
                gm.U(5000000.0, 5000000.0, 5000000.0, out x, out y, out z);
                gm.V(5000000.0, 5000000.0, 5000000.0, out x, out y, out z);
                gm.W(5000000.0, 5000000.0, 5000000.0, out x, out y, out z);
                NormalGravity ng = new NormalGravity(NormalGravity.StandardModels.GRS80);
                ng = new NormalGravity(NormalGravity.StandardModels.WGS84);
                ng = new NormalGravity(6378137.0, 3.986005e+14, 7.292115147e-5, 1.08263e-3, false);
                ng = gm.ReferenceEllipsoid();
                ng.DynamicalFormFactor(1);
                Geocentric geo = ng.Earth();
                ng.Gravity(lat, alt, out x, out z);
                ng.Phi(5000000.0, 5000000.0, out x, out y);
                ng.SurfaceGravity(lat);
                ng.U(5000000.0, 5000000.0, 5000000.0, out x, out y, out z);
                ng.V0(5000000.0, 5000000.0, 5000000.0, out x, out y, out z);
                GravityCircle gc = gm.Circle(lat, 0.0, GravityModel.Mask.ALL);
                gc.Capabilities();
                gc.Capabilities(GravityModel.Mask.GRAVITY);
                gc.Disturbance(lon, out x, out y, out z);
                gc.GeoidHeight(lon);
                gc.Gravity(lon, out x, out y, out z);
                gc.SphericalAnomaly(lon, out x, out y, out z);
                gc.T(lon);
                gc.V(lon, out x, out y, out z);
                gc.W(lon, out x, out y, out z);
                MessageBox.Show("No errors detected", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception xcpt)
            {
                MessageBox.Show(xcpt.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }