示例#1
0
        public void Construct()
        {
            Geodetic3D a = new Geodetic3D(1.0, 2.0, 3.0);

            Assert.AreEqual(1.0, a.Longitude);
            Assert.AreEqual(2.0, a.Latitude);
            Assert.AreEqual(3.0, a.Height);
        }
示例#2
0
        public Vector3D GeodeticSurfaceNormal(Geodetic3D geodetic)
        {
            double cosLatitude = Math.Cos(geodetic.Latitude);

            return(new Vector3D(
                       cosLatitude * Math.Cos(geodetic.Longitude),
                       cosLatitude * Math.Sin(geodetic.Longitude),
                       Math.Sin(geodetic.Latitude)));
        }
示例#3
0
        public void TestEquals()
        {
            Geodetic3D a = new Geodetic3D(1.0, 2.0, 3.0);
            Geodetic3D b = new Geodetic3D(1.0, 2.0, 4.0);
            Geodetic3D c = new Geodetic3D(1.0, 3.0, 3.0);
            Geodetic3D d = new Geodetic3D(2.0, 2.0, 3.0);
            Geodetic3D e = new Geodetic3D(1.0, 2.0, 3.0);

            object objA = a;
            object objB = b;
            object objC = c;
            object objD = d;
            object objE = e;

            Assert.IsTrue(a.Equals(a));
            Assert.IsTrue(a.Equals(e));
            Assert.IsTrue(e.Equals(a));
            Assert.IsTrue(a.Equals(objA));
            Assert.IsTrue(a.Equals(objE));
            Assert.IsTrue(objA.Equals(objA));
            Assert.IsTrue(objA.Equals(objE));

            Assert.IsTrue(a == e);
            Assert.IsTrue(e == a);
            Assert.IsTrue(a != b);
            Assert.IsTrue(a != c);
            Assert.IsTrue(a != d);

            Assert.IsFalse(a.Equals(b));
            Assert.IsFalse(a.Equals(c));
            Assert.IsFalse(a.Equals(d));

            Assert.IsFalse(b.Equals(a));
            Assert.IsFalse(c.Equals(a));
            Assert.IsFalse(d.Equals(a));

            Assert.IsFalse(a.Equals(objB));
            Assert.IsFalse(a.Equals(objC));
            Assert.IsFalse(a.Equals(objD));

            Assert.IsFalse(objA.Equals(objB));
            Assert.IsFalse(objA.Equals(objC));
            Assert.IsFalse(objA.Equals(objD));

            Assert.IsFalse(a == b);
            Assert.IsFalse(a == c);
            Assert.IsFalse(a == d);
            Assert.IsFalse(a != e);

            Assert.IsFalse(a.Equals(null));
            Assert.IsFalse(a.Equals(5));
        }
示例#4
0
        public void TestGetHashCode()
        {
            Geodetic3D a = new Geodetic3D(1.0, 2.0, 3.0);
            Geodetic3D b = new Geodetic3D(1.0, 2.0, 4.0);
            Geodetic3D c = new Geodetic3D(1.0, 3.0, 3.0);
            Geodetic3D d = new Geodetic3D(2.0, 2.0, 3.0);
            Geodetic3D e = new Geodetic3D(1.0, 2.0, 3.0);

            Assert.AreEqual(a.GetHashCode(), e.GetHashCode());
            Assert.AreNotEqual(a.GetHashCode(), b.GetHashCode());
            Assert.AreNotEqual(a.GetHashCode(), c.GetHashCode());
            Assert.AreNotEqual(a.GetHashCode(), d.GetHashCode());
        }
示例#5
0
        public Vector3D ToVector3D(Geodetic3D geodetic)
        {
            Vector3D n     = GeodeticSurfaceNormal(geodetic);
            Vector3D k     = _radiiSquared.MultiplyComponents(n);
            double   gamma = Math.Sqrt(
                (k.X * n.X) +
                (k.Y * n.Y) +
                (k.Z * n.Z));

            Vector3D rSurface = k / gamma;

            return(rSurface + (geodetic.Height * n));
        }
示例#6
0
        public void ToGeodetic3D()
        {
            Ellipsoid ellipsoid = new Ellipsoid(6378137.0, 6378137.0, 6356752.314245);

            Vector3D   v = ellipsoid.ToVector3D(new Geodetic3D(0, 0, 0));
            Geodetic3D g = ellipsoid.ToGeodetic3D(v);

            Assert.AreEqual(0.0, g.Longitude, 1e-10);
            Assert.AreEqual(0.0, g.Latitude, 1e-8);
            Assert.AreEqual(0.0, g.Height, 1e-10);

            v = ellipsoid.ToVector3D(new Geodetic3D(Trig.ToRadians(45.0), Trig.ToRadians(-60.0), -123.4));
            g = ellipsoid.ToGeodetic3D(v);
            Assert.AreEqual(Trig.ToRadians(45.0), g.Longitude, 1e-10);
            Assert.AreEqual(Trig.ToRadians(-60.0), g.Latitude, 1e-3);
            Assert.AreEqual(-123.4, g.Height, 1e-3);

            v = ellipsoid.ToVector3D(new Geodetic3D(Trig.ToRadians(-97.3), Trig.ToRadians(71.2), 1188.7));
            g = ellipsoid.ToGeodetic3D(v);
            Assert.AreEqual(Trig.ToRadians(-97.3), g.Longitude, 1e-10);
            Assert.AreEqual(Trig.ToRadians(71.2), g.Latitude, 1e-3);
            Assert.AreEqual(1188.7, g.Height, 1e-3);
        }
示例#7
0
 public static Geodetic3D ToDegrees(Geodetic3D geodetic)
 {
     return(new Geodetic3D(ToDegrees(geodetic.Longitude), ToDegrees(geodetic.Latitude), geodetic.Height));
 }
示例#8
0
 public Geodetic2D(Geodetic3D geodetic3D)
 {
     _longitude = geodetic3D.Longitude;
     _latitude  = geodetic3D.Latitude;
 }