Skip to main content

Cesium 获取某点垂直地表的坐标系-23

可以通过Cesium.Transforms对象来获取到相关的方法:

  • Cesium.Transforms.eastNorthUpToFixedFrame
    常用的有Cesium.Transforms.eastNorthUpToFixedFrame这个方法,这个方法支持通过传入一个中心点,然后获取到中心点的正东正北,和地表法线的方向:
    x轴指向当前点的东方向。
    y轴指向当前点的北方向。
    z轴在椭圆体的方向轴指向表面法线穿过的位置。

    var center = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
    var transform = Cesium.Transforms.eastNorthUpToFixedFrame(center);
  • 和eastNorthUpToFixedFrame方法相匹配的还有相应的:
    northEastDownToFixedFrame
    northUpEastToFixedFrame
    northWestUpToFixedFrame

  • Cesium.Transforms.northEastDownToFixedFrame
    和eastNorthUpToFixedFrame用法相同,返回的矩阵的轴向略有不同:
    x轴指向当地的北方
    y轴指向当前地点的东方
    z轴指向当前地点地表法线穿过的方向,也就是垂直于地表

  • Cesium.Transforms.northUpEastToFixedFrame
    和eastNorthUpToFixedFrame用法相同,返回的矩阵的轴向略有不同:
    x轴指向北方
    y轴垂直于地表
    z轴指向于东方

  • Cesium.Transforms.northWestUpToFixedFrame
    和eastNorthUpToFixedFrame用法相同,返回的矩阵的轴向略有不同:
    x轴指向北方
    y轴指向西方
    z轴垂直于地表

  • 除了前面获取某个位置的局部坐标系矩阵,我们还可以获取某个地表位置的局部旋转修改成全局设置的方式。

  • Cesium.Transforms.fixedFrameToHeadingPitchRoll
    fixedFrameToHeadingPitchRoll方法可以根据特定参考系中的变换计算航向俯仰角滚动角。
    fixedFrameToHeadingPitchRoll支持四个值:transform,ellipsoid,fixedFrameTransform,result
    transform-需要变换的四维矩阵
    ellipsoid-当前使用的坐标系,可选,默认值:Ellipsoid.WGS84
    fixedFrameTransform - 当前使用全局转局部的方式,也是前面提供的四种,默认Transforms.eastNorthUpToFixedFrame
    result - 可选,如果设置,将返回的HeadingPitchRoll值放置在此对象内。

  • Cesium.Transforms.headingPitchRollQuaternion
    可以根据根据位置和设置的HeadingPitchRoll的值获取到在当前坐标系中的四元数

    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 hpr = new HeadingPitchRoll(heading, pitch, roll);
    var quaternion = Cesium.Transforms.headingPitchRollQuaternion(center, hpr); 
    Cesium.Transforms.headingPitchRollToFixedFrame
  • 可以根据根据位置和设置的HeadingPitchRoll的值获取到在当前坐标系中的四维矩阵

    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 hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);
    var transform = Cesium.Transforms.headingPitchRollToFixedFrame(center, hpr);

发表回复