# Transforms

#### Transforms()
Core/Transforms.js 47

  Contains functions for transforming positions to various reference frames.

### Methods

#### staticCesium.Transforms.computeFixedToIcrfMatrix(date, result) → Matrix3
Core/Transforms.js 627

  Computes a rotation matrix to transform a point or vector from the Earth-Fixed frame axes (ITRF) to the International Celestial Reference Frame (GCRF/ICRF) inertial frame axes at a given time. This function may return undefined if the data necessary to do the transformation is not yet loaded.

  Name | Type | Description
  --- | --- | ---
  `date` | JulianDate | The time at which to compute the rotation matrix.
  `result` | Matrix3 | optional The object onto which to store the result. If this parameter is not specified, a new instance is created and returned.

  ##### Returns:

  The rotation matrix, or undefined if the data necessary to do the transformation is not yet loaded.

  ##### Example:

      // Transform a point from the ICRF axes to the Fixed axes.
      var now = Cesium.JulianDate.now();
      var pointInFixed = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
      var fixedToIcrf = Cesium.Transforms.computeIcrfToFixedMatrix(now);
      var pointInInertial = new Cesium.Cartesian3();
      if (Cesium.defined(fixedToIcrf)) {
          pointInInertial = Cesium.Matrix3.multiplyByVector(fixedToIcrf, pointInFixed, pointInInertial);
      }

  ##### See:

  - Transforms.preloadIcrfFixed

#### staticCesium.Transforms.computeIcrfToFixedMatrix(date, result) → Matrix3
Core/Transforms.js 579

  Computes a rotation matrix to transform a point or vector from the International Celestial Reference Frame (GCRF/ICRF) inertial frame axes to the Earth-Fixed frame axes (ITRF) at a given time. This function may return undefined if the data necessary to do the transformation is not yet loaded.

  Name | Type | Description
  --- | --- | ---
  `date` | JulianDate | The time at which to compute the rotation matrix.
  `result` | Matrix3 | optional The object onto which to store the result. If this parameter is not specified, a new instance is created and returned.

  ##### Returns:

  The rotation matrix, or undefined if the data necessary to do the transformation is not yet loaded.

  ##### Example:

      scene.preRender.addEventListener(function(scene, time) {
        var icrfToFixed = Cesium.Transforms.computeIcrfToFixedMatrix(time);
        if (Cesium.defined(icrfToFixed)) {
          var offset = Cesium.Matrix4.multiplyByPoint(camera.transform, camera.position, new Cesium.Cartesian3());
          var transform = Cesium.Matrix4.fromRotationTranslation(icrfToFixed)
          var inverseTransform = Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4());
          Cesium.Matrix4.multiplyByPoint(inverseTransform, offset, offset);
          camera.lookAtTransform(transform, offset);
        }
      });

  ##### See:

  - Transforms.preloadIcrfFixed

#### staticCesium.Transforms.computeTemeToPseudoFixedMatrix(date, result) → Matrix3
Core/Transforms.js 443

  Computes a rotation matrix to transform a point or vector from True Equator Mean Equinox (TEME) axes to the pseudo-fixed axes at a given time. This method treats the UT1 time standard as equivalent to UTC.

  Name | Type | Description
  --- | --- | ---
  `date` | JulianDate | The time at which to compute the rotation matrix.
  `result` | Matrix3 | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Matrix3 instance if none was provided.

  ##### Example:

      //Set the view to in the inertial frame.
      scene.preRender.addEventListener(function(scene, time) {
         var now = Cesium.JulianDate.now();
         var offset = Cesium.Matrix4.multiplyByPoint(camera.transform, camera.position, new Cesium.Cartesian3());
         var transform = Cesium.Matrix4.fromRotationTranslation(Cesium.Transforms.computeTemeToPseudoFixedMatrix(now));
         var inverseTransform = Cesium.Matrix4.inverseTransformation(transform, new Cesium.Matrix4());
         Cesium.Matrix4.multiplyByPoint(inverseTransform, offset, offset);
         camera.lookAtTransform(transform, offset);
      });

#### staticCesium.Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, result) → Matrix4
Core/Transforms.js 73

  Computes a 4x4 transformation matrix from a reference frame with an east-north-up axes centered at the provided origin to the provided ellipsoid's fixed reference frame. The local axes are defined as:
  - The `x` axis points in the local east direction.
  - The `y` axis points in the local north direction.
  - The `z` axis points in the direction of the ellipsoid surface normal which passes through the position.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `origin` | Cartesian3 |  | The center point of the local reference frame.
  `ellipsoid` | Ellipsoid | `Ellipsoid.WGS84` | optional The ellipsoid whose fixed frame is used in the transformation.
  `result` | Matrix4 |  | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Matrix4 instance if none was provided.

  ##### Example:

      // Get the transform from local east-north-up at cartographic (0.0, 0.0) to Earth's fixed frame.
      var center = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
      var transform = Cesium.Transforms.eastNorthUpToFixedFrame(center);

#### staticCesium.Transforms.headingPitchRollQuaternion(origin, heading, pitch, roll, ellipsoid, result) → Quaternion
Core/Transforms.js 407

  Computes a quaternion from a reference frame with axes computed from the heading-pitch-roll angles centered at the provided origin. Heading is the rotation from the local north direction where a positive angle is increasing eastward. Pitch is the rotation from the local east-north plane. Positive pitch angles are above the plane. Negative pitch angles are below the plane. Roll is the first rotation applied about the local east axis.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `origin` | Cartesian3 |  | The center point of the local reference frame.
  `heading` | Number |  | The heading angle in radians.
  `pitch` | Number |  | The pitch angle in radians.
  `roll` | Number |  | The roll angle in radians.
  `ellipsoid` | Ellipsoid | `Ellipsoid.WGS84` | optional The ellipsoid whose fixed frame is used in the transformation.
  `result` | Quaternion |  | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Quaternion instance if none was provided.

  ##### Example:

      // Get the quaternion from local heading-pitch-roll at cartographic (0.0, 0.0) to Earth's fixed frame.
      var center = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
      var heading = -Cesium.Math.PI_OVER_TWO;
      var pitch = Cesium.Math.PI_OVER_FOUR;
      var roll = 0.0;
      var quaternion = Cesium.Transforms.headingPitchRollQuaternion(center, heading, pitch, roll);

#### staticCesium.Transforms.headingPitchRollToFixedFrame(origin, heading, pitch, roll, ellipsoid, result) → Matrix4
Core/Transforms.js 374

  Computes a 4x4 transformation matrix from a reference frame with axes computed from the heading-pitch-roll angles centered at the provided origin to the provided ellipsoid's fixed reference frame. Heading is the rotation from the local north direction where a positive angle is increasing eastward. Pitch is the rotation from the local east-north plane. Positive pitch angles are above the plane. Negative pitch angles are below the plane. Roll is the first rotation applied about the local east axis.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `origin` | Cartesian3 |  | The center point of the local reference frame.
  `heading` | Number |  | The heading angle in radians.
  `pitch` | Number |  | The pitch angle in radians.
  `roll` | Number |  | The roll angle in radians.
  `ellipsoid` | Ellipsoid | `Ellipsoid.WGS84` | optional The ellipsoid whose fixed frame is used in the transformation.
  `result` | Matrix4 |  | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Matrix4 instance if none was provided.

  ##### Example:

      // Get the transform from local heading-pitch-roll at cartographic (0.0, 0.0) to Earth's fixed frame.
      var center = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
      var heading = -Cesium.Math.PI_OVER_TWO;
      var pitch = Cesium.Math.PI_OVER_FOUR;
      var roll = 0.0;
      var transform = Cesium.Transforms.headingPitchRollToFixedFrame(center, heading, pitch, roll);

#### staticCesium.Transforms.northEastDownToFixedFrame(origin, ellipsoid, result) → Matrix4
Core/Transforms.js 174

  Computes a 4x4 transformation matrix from a reference frame with an north-east-down axes centered at the provided origin to the provided ellipsoid's fixed reference frame. The local axes are defined as:
  - The `x` axis points in the local north direction.
  - The `y` axis points in the local east direction.
  - The `z` axis points in the opposite direction of the ellipsoid surface normal which passes through the position.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `origin` | Cartesian3 |  | The center point of the local reference frame.
  `ellipsoid` | Ellipsoid | `Ellipsoid.WGS84` | optional The ellipsoid whose fixed frame is used in the transformation.
  `result` | Matrix4 |  | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Matrix4 instance if none was provided.

  ##### Example:

      // Get the transform from local north-east-down at cartographic (0.0, 0.0) to Earth's fixed frame.
      var center = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
      var transform = Cesium.Transforms.northEastDownToFixedFrame(center);

#### staticCesium.Transforms.northUpEastToFixedFrame(origin, ellipsoid, result) → Matrix4
Core/Transforms.js 271

  Computes a 4x4 transformation matrix from a reference frame with an north-up-east axes centered at the provided origin to the provided ellipsoid's fixed reference frame. The local axes are defined as:
  - The `x` axis points in the local north direction.
  - The `y` axis points in the direction of the ellipsoid surface normal which passes through the position.
  - The `z` axis points in the local east direction.

  Name | Type | Default | Description
  --- | --- | --- | ---
  `origin` | Cartesian3 |  | The center point of the local reference frame.
  `ellipsoid` | Ellipsoid | `Ellipsoid.WGS84` | optional The ellipsoid whose fixed frame is used in the transformation.
  `result` | Matrix4 |  | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Matrix4 instance if none was provided.

  ##### Example:

      // Get the transform from local north-up-east at cartographic (0.0, 0.0) to Earth's fixed frame.
      var center = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
      var transform = Cesium.Transforms.northUpEastToFixedFrame(center);

#### staticCesium.Transforms.pointToWindowCoordinates(modelViewProjectionMatrix, viewportTransformation, point, result) → Cartesian2
Core/Transforms.js 742

  Transform a point from model coordinates to window coordinates.

  Name | Type | Description
  --- | --- | ---
  `modelViewProjectionMatrix` | Matrix4 | The 4x4 model-view-projection matrix.
  `viewportTransformation` | Matrix4 | The 4x4 viewport transformation.
  `point` | Cartesian3 | The point to transform.
  `result` | Cartesian2 | optional The object onto which to store the result.

  ##### Returns:

  The modified result parameter or a new Cartesian2 instance if none was provided.

#### staticCesium.Transforms.preloadIcrfFixed(timeInterval) → Promise.<undefined>
Core/Transforms.js 540

  Preloads the data necessary to transform between the ICRF and Fixed axes, in either direction, over a given interval. This function returns a promise that, when resolved, indicates that the preload has completed.

  Name | Type | Description
  --- | --- | ---
  `timeInterval` | TimeInterval | The interval to preload.

  ##### Returns:

  A promise that, when resolved, indicates that the preload has completed and evaluation of the transformation between the fixed and ICRF axes will no longer return undefined for a time inside the interval.

  ##### Example:

      var interval = new Cesium.TimeInterval(...);
      when(Cesium.Transforms.preloadIcrfFixed(interval), function() {
          // the data is now loaded
      });

  ##### See:

  - Transforms.computeIcrfToFixedMatrix
  - Transforms.computeFixedToIcrfMatrix
  - when