Class: Transforms

Transforms

new Transforms()

包含将位置转换为各种参照系的函数。

Members

static eastNorthUpToFixedFrame

计算一个 4x4 变换矩阵,从一个以提供的原点为中心、东-北-上轴向的参考框架到提供的椭球体固定参考框架:

  • x轴指向本地东部方向。
  • y轴指向本地北方向。
  • z轴指向经过该位置的椭球面法线方向。
Example
// Get the transform from local east-north-up at cartographic (0.0, 0.0) to Earth's fixed frame.
var center = SuperMap3D.Cartesian3.fromDegrees(0.0, 0.0);
var transform = SuperMap3D.Transforms.eastNorthUpToFixedFrame(center);

static northEastDownToFixedFrame

计算一个 4x4 变换矩阵,从一个以提供的原点为中心、具有东北-西南轴的参考框架到提供的椭球体固定参考框架:

  • x 轴指向当地的北方。
  • y 轴指向本地东部方向。
  • z轴指向穿过该位置的椭球面法线的相反方向。
Example
// Get the transform from local north-east-down at cartographic (0.0, 0.0) to Earth's fixed frame.
var center = SuperMap3D.Cartesian3.fromDegrees(0.0, 0.0);
var transform = SuperMap3D.Transforms.northEastDownToFixedFrame(center);

static northUpEastToFixedFrame

计算一个 4x4 变换矩阵,从一个以提供的原点为中心、坐北向东的参考框架到提供的椭球体固定参考框架:

  • x轴指向本地北方方向。
  • y轴指向经过该位置的椭球面法线方向。
  • z轴指向本地东部方向。
Example
// Get the transform from local north-up-east at cartographic (0.0, 0.0) to Earth's fixed frame.
var center = SuperMap3D.Cartesian3.fromDegrees(0.0, 0.0);
var transform = SuperMap3D.Transforms.northUpEastToFixedFrame(center);

static northWestUpToFixedFrame

计算一个 4x4 变换矩阵,从一个以提供的原点为中心、坐标轴为西北向上的参照系到提供的椭球体固定参照系的变换矩阵。本地轴的定义如下:

  • x轴指向本地北方方向。
  • y轴指向本地西方向。
  • z轴指向经过该位置的椭球面法线方向。
Example
// Get the transform from local north-West-Up at cartographic (0.0, 0.0) to Earth's fixed frame.
var center = SuperMap3D.Cartesian3.fromDegrees(0.0, 0.0);
var transform = SuperMap3D.Transforms.northWestUpToFixedFrame(center);

Methods

static computeFixedToIcrfMatrix(date, result){Matrix3}

计算旋转矩阵,以便在给定时间内将一个点或矢量从地球固定框架轴(ITRF)转换到国际天体参考框架(GCRF/ICRF)惯性框架轴。 如果尚未加载进行转换所需的数据,该函数可能会返回未定义的结果。

Name Type Description
date JulianDate

计算旋转矩阵的时间。

result Matrix3 可选

存储结果的对象。如果未指定该参数,将创建并返回一个新实例。

See:
Returns:
Type Description
Matrix3 旋转矩阵,如果尚未加载进行转换所需的数据,则为未定义。
Example
// Transform a point from the ICRF axes to the Fixed axes.
var now = SuperMap3D.JulianDate.now();
var pointInFixed = SuperMap3D.Cartesian3.fromDegrees(0.0, 0.0);
var fixedToIcrf = SuperMap3D.Transforms.computeIcrfToFixedMatrix(now);
var pointInInertial = new SuperMap3D.Cartesian3();
if (SuperMap3D.defined(fixedToIcrf)) {
    pointInInertial = SuperMap3D.Matrix3.multiplyByVector(fixedToIcrf, pointInFixed, pointInInertial);
}

static computeIcrfToFixedMatrix(date, result){Matrix3}

计算旋转矩阵,以便在给定时间内将一个点或矢量从国际天体参考框架(GCRF/ICRF)惯性框架轴转换到地球固定框架轴(ITRF)。 如果尚未加载进行转换所需的数据,该函数可能会返回未定义的结果。

Name Type Description
date JulianDate

计算旋转矩阵的时间。

result Matrix3 可选

存储结果的对象。如果未指定该参数,将创建并返回一个新实例。

See:
Returns:
Type Description
Matrix3 旋转矩阵,如果尚未加载进行转换所需的数据,则为未定义。
Example
scene.preRender.addEventListener(function(scene, time) {
  var icrfToFixed = SuperMap3D.Transforms.computeIcrfToFixedMatrix(time);
  if (SuperMap3D.defined(icrfToFixed)) {
    var offset = SuperMap3D.Matrix4.multiplyByPoint(camera.transform, camera.position, new SuperMap3D.Cartesian3());
    var transform = SuperMap3D.Matrix4.fromRotationTranslation(icrfToFixed)
    var inverseTransform = SuperMap3D.Matrix4.inverseTransformation(transform, new SuperMap3D.Matrix4());
    SuperMap3D.Matrix4.multiplyByPoint(inverseTransform, offset, offset);
    camera.lookAtTransform(transform, offset);
  }
});

static computeTemeToPseudoFixedMatrix(date, result){Matrix3}

计算旋转矩阵,将一个点或矢量从真赤道均分(TEME)轴转换到给定时间的伪固定轴。 该方法将UT1 时间标准等同于 UTC。

Name Type Description
date JulianDate

计算旋转矩阵的时间。

result Matrix3 可选

存储结果的对象。

Returns:
Type Description
Matrix3 修改后的结果参数,或者一个新的 Matrix3 实例(如果没有提供)。
Example
scene.preRender.addEventListener(function(scene, time) {
   var now = SuperMap3D.JulianDate.now();
   var offset = SuperMap3D.Matrix4.multiplyByPoint(camera.transform, camera.position, new SuperMap3D.Cartesian3());
   var transform = SuperMap3D.Matrix4.fromRotationTranslation(SuperMap3D.Transforms.computeTemeToPseudoFixedMatrix(now));
   var inverseTransform = SuperMap3D.Matrix4.inverseTransformation(transform, new SuperMap3D.Matrix4());
   SuperMap3D.Matrix4.multiplyByPoint(inverseTransform, offset, offset);
   camera.lookAtTransform(transform, offset);
});

static headingPitchRollQuaternion(origin, headingPitchRoll, ellipsoid, fixedFrameTransformOrResult, result){Quaternion}

以提供的原点为中心,根据航向-间距-滚动角计算出的轴线,从参考框架中计算出一个四元数。方位是指从本地北方向旋转,正角向东增大。 俯仰角是从当地东-北平面开始的旋转。正俯仰角在平面上方。负俯仰角在平面以下。滚转是围绕当地东轴线的第一次旋转。

Name Type Default Description
origin Cartesian3

本地参照系的中心点。

headingPitchRoll HeadingPitchRoll

方位、俯仰和滚转。

ellipsoid Ellipsoid Ellipsoid.WGS84 可选

椭球体,其固定框架用于变换。

fixedFrameTransformOrResult Transforms~LocalFrameToFixedFrame Transforms.eastNorthUpToFixedFrame 可选

从参考框架到所提供椭球体固定参考框架的 4x4 变换矩阵

result Quaternion 可选

存储结果的对象。

Returns:
Type Description
Quaternion 修改后的结果参数,或一个新的 Matrix4 实例(如果没有提供)。
Example
var center = SuperMap3D.Cartesian3.fromDegrees(0.0, 0.0);
var heading = -SuperMap3D.Math.PI_OVER_TWO;
var pitch = SuperMap3D.Math.PI_OVER_FOUR;
var roll = 0.0;
var hpr = new HeadingPitchRoll(heading, pitch, roll);
var quaternion = SuperMap3D.Transforms.headingPitchRollQuaternion(center, hpr);

static headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, fixedFrameTransformOrResult, result){Matrix4}

从参考框架计算一个 4x4 变换矩阵,参考框架的坐标轴是由以提供的原点为中心的航向-俯仰-滚动角计算出来的,变换矩阵则是由提供的椭球体固定参考框架计算出来的。方位是指从本地北方向旋转,正角向东增大。 俯仰角是从当地的东-北平面开始的旋转。正俯仰角在平面上方。负俯仰角在平面以下。滚转是围绕本地东轴的第一次旋转。

Name Type Default Description
origin Cartesian3

本地参照系的中心点。

headingPitchRoll HeadingPitchRoll

方位、俯仰和滚转。

ellipsoid Ellipsoid Ellipsoid.WGS84 可选

椭球体,其固定框架用于变换。

fixedFrameTransformOrResult Transforms~LocalFrameToFixedFrame Transforms.eastNorthUpToFixedFrame 可选

从参考框架到所提供椭球体固定参考框架的 4x4 变换矩阵

result Matrix4 可选

存储结果的对象。

Returns:
Type Description
Matrix4 修改后的结果参数,或一个新的 Matrix4 实例(如果没有提供)。
Example
var center = SuperMap3D.Cartesian3.fromDegrees(0.0, 0.0);
var heading = -SuperMap3D.Math.PI_OVER_TWO;
var pitch = SuperMap3D.Math.PI_OVER_FOUR;
var roll = 0.0;
var hpr = new SuperMap3D.HeadingPitchRoll(heading, pitch, roll);
var transform = SuperMap3D.Transforms.headingPitchRollToFixedFrame(center, hpr);

static localFrameToFixedFrameGenerator(firstAxis, secondAxis){localFrameToFixedFrameGenerator~resultat}

生成一个函数,该函数计算从给定原点为中心的参考系到给定椭球体的固定参考系的4x4变换矩阵。

Name Type Description
firstAxis String

本地参考系的第一个轴的名称。必须是“东”、“北”、“上”、“西”、“南”或“下”。

secondAxis String

本地参考系的第二个轴的名称。必须是“东”、“北”、“上”、“西”、“南”或“下”。

Returns:
Type Description
localFrameToFixedFrameGenerator~resultat 函数将从参考系计算4x4变换矩阵,第一轴和第二轴符合参数。

static pointToWindowCoordinates(modelViewProjectionMatrix, viewportTransformation, point, result){Cartesian2}

将一个点从模型坐标转换为窗口坐标。

Name Type Description
modelViewProjectionMatrix Matrix4

4x4 模型-视角-投影矩阵。

viewportTransformation Matrix4

4x4 视口变换。

point Cartesian3

转变的要点。

result Cartesian2 可选

存储结果的对象。

Returns:
Type Description
Cartesian2 修改后的结果参数,或者一个新的 Cartesian2 实例(如果没有提供)。

static preloadIcrfFixed(timeInterval){Promise.<undefined>}

在给定的时间间隔内,预载在 ICRF 轴和固定轴之间进行任一方向转换所需的数据。该函数返回一个Promise,当该Promise被解析时,表示预加载已完成。

Name Type Description
timeInterval TimeInterval

预加载的时间间隔。

See:
Returns:
Type Description
Promise.<undefined> 一个Promise,解析后表示预加载已完成,对固定轴和 ICRF 轴之间的变换进行评估时,在时间间隔内将不再返回未定义的结果。
Example
var interval = new SuperMap3D.TimeInterval(...);
when(SuperMap3D.Transforms.preloadIcrfFixed(interval), function() {
    // the data is now loaded
});

Type Definitions

LocalFrameToFixedFrame(origin, ellipsoid, result){Matrix4}

计算从给定原点为中心的参考系到给定椭球体的固定参考系的4x4变换矩阵。

Name Type Default Description
origin Cartesian3

本地参照系的中心点。

ellipsoid Ellipsoid Ellipsoid.WGS84 可选

椭球体,其固定框架用于变换。

result Matrix4 可选

存储结果的对象。

Returns:
Type Description
Matrix4 修改后的结果参数,或一个新的 Matrix4 实例(如果没有提供)。