Transforms

Transforms()

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

Members

staticSuperMap3D.Transforms.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);

staticSuperMap3D.Transforms.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);

staticSuperMap3D.Transforms.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);

staticSuperMap3D.Transforms.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

staticSuperMap3D.Transforms.computeFixedToIcrfMatrix(date, result)Matrix3

计算旋转矩阵,以便在给定时间内将一个点或矢量从地球固定框架轴(ITRF)转换到国际天体参考框架(GCRF/ICRF)惯性框架轴。 如果尚未加载进行转换所需的数据,该函数可能会返回未定义的结果。
Name Type Description
date JulianDate 计算旋转矩阵的时间。
result Matrix3 optional 存储结果的对象。如果未指定该参数,将创建并返回一个新实例。
Returns:
旋转矩阵,如果尚未加载进行转换所需的数据,则为未定义。
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);
}
See:

staticSuperMap3D.Transforms.computeIcrfToFixedMatrix(date, result)Matrix3

计算旋转矩阵,以便在给定时间内将一个点或矢量从国际天体参考框架(GCRF/ICRF)惯性框架轴转换到地球固定框架轴(ITRF)。 如果尚未加载进行转换所需的数据,该函数可能会返回未定义的结果。
Name Type Description
date JulianDate 计算旋转矩阵的时间。
result Matrix3 optional 存储结果的对象。如果未指定该参数,将创建并返回一个新实例。
Returns:
旋转矩阵,如果尚未加载进行转换所需的数据,则为未定义。
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);
  }
});
See:

staticSuperMap3D.Transforms.computeTemeToPseudoFixedMatrix(date, result)Matrix3

计算旋转矩阵,将一个点或矢量从真赤道均分(TEME)轴转换到给定时间的伪固定轴。 该方法将UT1 时间标准等同于 UTC。
Name Type Description
date JulianDate 计算旋转矩阵的时间。
result Matrix3 optional 存储结果的对象。
Returns:
修改后的结果参数,或者一个新的 Matrix3 实例(如果没有提供)。
Example:
//Set the view to in the inertial frame.
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);
});

staticSuperMap3D.Transforms.headingPitchRollQuaternion(origin, headingPitchRoll, ellipsoid, fixedFrameTransformOrResult, result)Quaternion

以提供的原点为中心,根据航向-间距-滚动角计算出的轴线,从参考框架中计算出一个四元数。方位是指从本地北方向旋转,正角向东增大。 俯仰角是从当地东-北平面开始的旋转。正俯仰角在平面上方。负俯仰角在平面以下。滚转是围绕当地东轴线的第一次旋转。
Name Type Default Description
origin Cartesian3 本地参照系的中心点。
headingPitchRoll HeadingPitchRoll 方位、俯仰和滚转。
ellipsoid Ellipsoid Ellipsoid.WGS84 optional 椭球体,其固定框架用于变换。
fixedFrameTransformOrResult Transforms~LocalFrameToFixedFrame Transforms.eastNorthUpToFixedFrame optional 从参考框架到所提供椭球体固定参考框架的 4x4 变换矩阵
result Quaternion optional 存储结果的对象。
Returns:
修改后的结果参数,或一个新的 Matrix4 实例(如果没有提供)。
Example:
// Get the quaternion from local heading-pitch-roll at cartographic (0.0, 0.0) to Earth's fixed frame.
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);

staticSuperMap3D.Transforms.headingPitchRollToFixedFrame(origin, headingPitchRoll, ellipsoid, fixedFrameTransformOrResult, result)Matrix4

从参考框架计算一个 4x4 变换矩阵,参考框架的坐标轴是由以提供的原点为中心的航向-俯仰-滚动角计算出来的,变换矩阵则是由提供的椭球体固定参考框架计算出来的。方位是指从本地北方向旋转,正角向东增大。 俯仰角是从当地的东-北平面开始的旋转。正俯仰角在平面上方。负俯仰角在平面以下。滚转是围绕本地东轴的第一次旋转。
Name Type Default Description
origin Cartesian3 本地参照系的中心点。
headingPitchRoll HeadingPitchRoll 方位、俯仰和滚转。
ellipsoid Ellipsoid Ellipsoid.WGS84 optional 椭球体,其固定框架用于变换。
fixedFrameTransformOrResult Transforms~LocalFrameToFixedFrame Transforms.eastNorthUpToFixedFrame optional 从参考框架到所提供椭球体固定参考框架的 4x4 变换矩阵
result Matrix4 optional 存储结果的对象。
Returns:
修改后的结果参数,或一个新的 Matrix4 实例(如果没有提供)。
Example:
// Get the transform from local heading-pitch-roll at cartographic (0.0, 0.0) to Earth's fixed frame.
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);

staticSuperMap3D.Transforms.localFrameToFixedFrameGenerator(firstAxis, secondAxis)localFrameToFixedFrameGenerator~resultat

生成一个函数,该函数计算从给定原点为中心的参考系到给定椭球体的固定参考系的4x4变换矩阵。
Name Type Description
firstAxis String 本地参考系的第一个轴的名称。必须是“东”、“北”、“上”、“西”、“南”或“下”。
secondAxis String 本地参考系的第二个轴的名称。必须是“东”、“北”、“上”、“西”、“南”或“下”。
Returns:
函数将从参考系计算4x4变换矩阵,第一轴和第二轴符合参数。

staticSuperMap3D.Transforms.pointToWindowCoordinates(modelViewProjectionMatrix, viewportTransformation, point, result)Cartesian2

将一个点从模型坐标转换为窗口坐标。
Name Type Description
modelViewProjectionMatrix Matrix4 4x4 模型-视角-投影矩阵。
viewportTransformation Matrix4 4x4 视口变换。
point Cartesian3 转变的要点。
result Cartesian2 optional 存储结果的对象。
Returns:
修改后的结果参数,或者一个新的 Cartesian2 实例(如果没有提供)。

staticSuperMap3D.Transforms.preloadIcrfFixed(timeInterval)Promise.<undefined>

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

Type Definitions

LocalFrameToFixedFrame(origin, ellipsoid, result)Matrix4

计算从给定原点为中心的参考系到给定椭球体的固定参考系的4x4变换矩阵。
Name Type Default Description
origin Cartesian3 本地参照系的中心点。
ellipsoid Ellipsoid Ellipsoid.WGS84 optional 椭球体,其固定框架用于变换。
result Matrix4 optional 存储结果的对象。
Returns:
修改后的结果参数,或一个新的 Matrix4 实例(如果没有提供)。