swiftnav 0.12.0

GNSS positioning and related utilities
Documentation
use nalgebra::Vector3;

use super::{ReferenceFrame, TimeDependentHelmertParams, Transformation};

pub const TRANSFORMATIONS: [Transformation; 33] = [
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF2014,
        params: TimeDependentHelmertParams {
            t: Vector3::new(-1.4, -0.9, 1.4),
            t_dot: Vector3::new(0.0, -0.1, 0.2),
            s: -0.42,
            epoch: 2015.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF2008,
        params: TimeDependentHelmertParams {
            t: Vector3::new(0.2, 1.0, 3.3),
            t_dot: Vector3::new(0.0, -0.1, 0.1),
            s: -0.29,
            s_dot: 0.03,
            epoch: 2015.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF2005,
        params: TimeDependentHelmertParams {
            t: Vector3::new(2.7, 0.1, -1.4),
            t_dot: Vector3::new(0.3, -0.1, 0.1),
            s: 0.65,
            s_dot: 0.03,
            epoch: 2015.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF2000,
        params: TimeDependentHelmertParams {
            t: Vector3::new(-0.2, 0.8, -34.2),
            t_dot: Vector3::new(0.1, 0.0, -1.7),
            s: 2.25,
            s_dot: 0.11,
            epoch: 2015.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF97,
        params: TimeDependentHelmertParams {
            t: Vector3::new(6.5, -3.9, -77.9),
            t_dot: Vector3::new(0.1, -0.6, -3.1),
            s: 3.98,
            s_dot: 0.12,
            r: Vector3::new(0.0, 0.0, 0.36),
            r_dot: Vector3::new(0.0, 0.0, 0.02),
            epoch: 2015.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF96,
        params: TimeDependentHelmertParams {
            t: Vector3::new(6.5, -3.9, -77.9),
            t_dot: Vector3::new(0.1, -0.6, -3.1),
            s: 3.98,
            s_dot: 0.12,
            r: Vector3::new(0.0, 0.0, 0.36),
            r_dot: Vector3::new(0.0, 0.0, 0.02),
            epoch: 2015.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF94,
        params: TimeDependentHelmertParams {
            t: Vector3::new(6.5, -3.9, -77.9),
            t_dot: Vector3::new(0.1, -0.6, -3.1),
            s: 3.98,
            s_dot: 0.12,
            r: Vector3::new(0.0, 0.0, 0.36),
            r_dot: Vector3::new(0.0, 0.0, 0.02),
            epoch: 2015.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF93,
        params: TimeDependentHelmertParams {
            t: Vector3::new(-65.8, 1.9, -71.3),
            t_dot: Vector3::new(-2.8, -0.2, -2.3),
            s: 4.47,
            s_dot: 0.12,
            r: Vector3::new(-3.36, -4.33, 0.75),
            r_dot: Vector3::new(-0.11, -0.19, 0.07),
            epoch: 2015.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF92,
        params: TimeDependentHelmertParams {
            t: Vector3::new(14.5, -1.9, -85.9),
            t_dot: Vector3::new(0.1, -0.6, -3.1),
            s: 3.27,
            s_dot: 0.12,
            r: Vector3::new(0.00, 0.00, 0.36),
            r_dot: Vector3::new(0.00, 0.00, 0.02),
            epoch: 2015.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF91,
        params: TimeDependentHelmertParams {
            t: Vector3::new(26.5, 12.1, -91.9),
            t_dot: Vector3::new(0.1, -0.6, -3.1),
            s: 4.67,
            s_dot: 0.12,
            r: Vector3::new(0.00, 0.00, 0.36),
            r_dot: Vector3::new(0.00, 0.00, 0.02),
            epoch: 2015.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF90,
        params: TimeDependentHelmertParams {
            t: Vector3::new(24.5, 8.1, -107.9),
            t_dot: Vector3::new(0.1, -0.6, -3.1),
            s: 4.97,
            s_dot: 0.12,
            r: Vector3::new(0.00, 0.00, 0.36),
            r_dot: Vector3::new(0.00, 0.00, 0.02),
            epoch: 2015.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF89,
        params: TimeDependentHelmertParams {
            t: Vector3::new(29.5, 32.1, -145.9),
            t_dot: Vector3::new(0.1, -0.6, -3.1),
            s: 8.37,
            s_dot: 0.12,
            r: Vector3::new(0.00, 0.00, 0.36),
            r_dot: Vector3::new(0.00, 0.00, 0.02),
            epoch: 2015.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ITRF88,
        params: TimeDependentHelmertParams {
            t: Vector3::new(24.5, -3.9, -169.9),
            t_dot: Vector3::new(0.1, -0.6, -3.1),
            s: 11.47,
            s_dot: 0.12,
            r: Vector3::new(0.10, 0.00, 0.36),
            r_dot: Vector3::new(0.00, 0.00, 0.02),
            epoch: 2015.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::ETRF2020,
        params: TimeDependentHelmertParams {
            r_dot: Vector3::new(0.086, 0.519, -0.753),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2014,
        to: ReferenceFrame::ETRF2014,
        params: TimeDependentHelmertParams {
            r_dot: Vector3::new(0.085, 0.531, -0.770),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2005,
        to: ReferenceFrame::ETRF2005,
        params: TimeDependentHelmertParams {
            t: Vector3::new(56.0, 48.0, -37.0),
            r_dot: Vector3::new(0.054, 0.518, -0.781),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2000,
        to: ReferenceFrame::ETRF2000,
        params: TimeDependentHelmertParams {
            t: Vector3::new(54.0, 51.0, -48.0),
            r_dot: Vector3::new(0.081, 0.490, -0.792),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF97,
        to: ReferenceFrame::ETRF97,
        params: TimeDependentHelmertParams {
            t: Vector3::new(41.0, 41.0, -49.0),
            r_dot: Vector3::new(0.200, 0.500, -0.650),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF96,
        to: ReferenceFrame::ETRF96,
        params: TimeDependentHelmertParams {
            t: Vector3::new(41.0, 41.0, -49.0),
            r_dot: Vector3::new(0.200, 0.500, -0.650),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF94,
        to: ReferenceFrame::ETRF94,
        params: TimeDependentHelmertParams {
            t: Vector3::new(41.0, 41.0, -49.0),
            r_dot: Vector3::new(0.200, 0.500, -0.650),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF93,
        to: ReferenceFrame::ETRF93,
        params: TimeDependentHelmertParams {
            t: Vector3::new(19.0, 53.0, -21.0),
            r_dot: Vector3::new(0.320, 0.780, -0.670),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF92,
        to: ReferenceFrame::ETRF92,
        params: TimeDependentHelmertParams {
            t: Vector3::new(38.0, 40.0, -37.0),
            r_dot: Vector3::new(0.210, 0.520, -0.680),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF91,
        to: ReferenceFrame::ETRF91,
        params: TimeDependentHelmertParams {
            t: Vector3::new(21.0, 25.0, -37.0),
            r_dot: Vector3::new(0.210, 0.520, -0.680),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF90,
        to: ReferenceFrame::ETRF90,
        params: TimeDependentHelmertParams {
            t: Vector3::new(19.0, 28.0, -23.0),
            r_dot: Vector3::new(0.110, 0.570, -0.710),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF89,
        to: ReferenceFrame::ETRF89,
        params: TimeDependentHelmertParams {
            r_dot: Vector3::new(0.110, 0.570, -0.710),
            epoch: 1989.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2014,
        to: ReferenceFrame::NAD83_2011,
        params: TimeDependentHelmertParams {
            t: Vector3::new(1005.30, -1909.21, -541.57),
            t_dot: Vector3::new(0.79, -0.60, -1.44),
            s: 0.36891,
            s_dot: -0.07201,
            r: Vector3::new(-26.78138, 0.42027, -10.93206),
            r_dot: Vector3::new(-0.06667, 0.75744, 0.05133),
            epoch: 2010.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2008,
        to: ReferenceFrame::NAD83_CSRS,
        params: TimeDependentHelmertParams {
            t: Vector3::new(1003.70, -1911.11, -543.97),
            t_dot: Vector3::new(0.79, -0.60, -1.34),
            s: 0.38891,
            s_dot: -0.10201,
            r: Vector3::new(-26.78138, 0.42027, -10.93206),
            r_dot: Vector3::new(-0.06667, 0.75744, 0.05133),
            epoch: 2010.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2014,
        to: ReferenceFrame::NAD83_CSRS,
        params: TimeDependentHelmertParams {
            t: Vector3::new(1005.30, -1909.21, -541.57),
            t_dot: Vector3::new(0.79, -0.60, -1.44),
            s: 0.36891,
            s_dot: -0.07201,
            r: Vector3::new(-26.78138, 0.42027, -10.93206),
            r_dot: Vector3::new(-0.06667, 0.75744, 0.05133),
            epoch: 2010.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::NAD83_CSRS,
        params: TimeDependentHelmertParams {
            t: Vector3::new(1003.90, -1909.61, -541.17),
            t_dot: Vector3::new(0.79, -0.70, -1.24),
            s: -0.05109,
            s_dot: -0.07201,
            r: Vector3::new(-26.78138, 0.42027, -10.93206),
            r_dot: Vector3::new(-0.06667, 0.75744, 0.05133),
            epoch: 2010.0,
        },
    },
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::DREF91_R2016,
        params: TimeDependentHelmertParams {
            t: Vector3::new(-3.0821, 95.0769, -73.5435),
            t_dot: Vector3::new(-20.3181, -20.3593, 23.6394),
            s: 7.4874,
            s_dot: -0.3306,
            r: Vector3::new(2.5445, 17.6078, -27.6123),
            r_dot: Vector3::new(-0.5966, 1.4967, -0.5284),
            epoch: 2021.0,
        },
    },
    // WGS84(G2296) is defined to be the same as ITRF2020 at epoch 2024.0
    Transformation {
        from: ReferenceFrame::ITRF2020,
        to: ReferenceFrame::WGS84_G2296,
        params: TimeDependentHelmertParams {
            epoch: 2024.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    // WGS84(G2139) is defined to be the same as ITRF2014 at epoch 2016.0
    Transformation {
        from: ReferenceFrame::ITRF2014,
        to: ReferenceFrame::WGS84_G2139,
        params: TimeDependentHelmertParams {
            epoch: 2016.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
    // WGS84(G1762) is defined to be the same as ITRF2008 at epoch 2005.0
    Transformation {
        from: ReferenceFrame::ITRF2008,
        to: ReferenceFrame::WGS84_G1762,
        params: TimeDependentHelmertParams {
            epoch: 2005.0,
            ..TimeDependentHelmertParams::zeros()
        },
    },
];