Пример #1
0
        public static Geodetic <TLinear, TAngular> ChangeDatum <TLinear, TAngular>(
            IGeodetic oldGeodeticCoordinate,
            IEllipsoid newDatum)
            where TLinear : LinearUnit, new()
            where TAngular : AngularUnit, new()
        {
            ICartesian3D tempCoordinate = GeodeticToAverage <TLinear>(oldGeodeticCoordinate);

            return(AverageToGeodetic <TLinear, TAngular>(tempCoordinate, newDatum, oldGeodeticCoordinate.LongitudinalRange));
        }
Пример #2
0
        public static Cartesian3D <TLinear> GeodeticToAverage <TLinear>(IGeodetic geodetic)
            where TLinear : LinearUnit, new()
        {
            //check if not geodetic is Right Handed

            Cartesian3D <TLinear> cartesianFormOfGeodetic = geodetic.GetCartesianForm <TLinear>();

            Matrix rotationMatrix = Transformation.CalculateEulerElementMatrix(geodetic.Datum.DatumMisalignment);

            return((Cartesian3D <TLinear>)cartesianFormOfGeodetic.Transform(rotationMatrix, geodetic.Datum.DatumTranslation.Negate()));
        }