4 * This software is distributed under a zlib-style license.
\r
5 * See license.txt for more information.
\r
9 using System.Collections.Generic;
\r
14 public class EnuCoordinate
\r
20 #region constructors
\r
22 public EnuCoordinate(double e, double n, double u)
\r
30 public EnuCoordinate(EcefCoordinate target, EcefCoordinate origin)
\r
31 : this(target, origin, origin.ToGeodeticCoordinate())
\r
35 public EnuCoordinate(GeodeticCoordinate target,
\r
36 GeodeticCoordinate origin)
\r
37 : this(target.ToEcefCoordinate(),
\r
38 origin.ToEcefCoordinate(), origin)
\r
42 private EnuCoordinate(EcefCoordinate target,
\r
43 EcefCoordinate origin, GeodeticCoordinate llhOrigin)
\r
46 double dx = target.X - origin.X;
\r
47 double dy = target.Y - origin.Y;
\r
48 double dz = target.Z - origin.Z;
\r
49 double d = Math.Sqrt(dx * dx + dy * dy + dz * dz);
\r
50 double longitude = llhOrigin.Longitude.Radian;
\r
51 double latitude = llhOrigin.Latitude.Radian;
\r
52 double sinLongitude = Math.Sin(longitude);
\r
53 double cosLongitude = Math.Cos(longitude);
\r
54 double sinLatitude = Math.Sin(latitude);
\r
55 double cosLatitude = Math.Cos(latitude);
\r
58 E = -sinLongitude * dx +
\r
60 N = -sinLatitude * cosLongitude * dx -
\r
61 sinLatitude * sinLongitude * dy +
\r
63 U = cosLatitude * cosLongitude * dx +
\r
64 cosLatitude * sinLongitude * dy +
\r
90 public EcefCoordinate Origin
\r