在Cesiumjs中的方向上创建一个点

问题描述 投票:0回答:1

我正在使用CesiumJs。我想使用方向B

在距点A的距离C处创建点D。
Point A => start Position (CartographicPosition {latitude, longitude; altitude})
Direction B => direction from A (HeadingPitchRoll {heading, pitch, roll})
Distance C => in meters

我正在尝试使对象面对旋转,并在其前面创建一个点。

我当前的实现是

  public createROIfromRotation(position: Cartographic, rotation: HeadingPitchRoll): Cartographic {

    const pos = Cesium.Ellipsoid.WGS84.cartographicToCartesian(position);
    const quat = Cesium.Transforms.headingPitchRollQuaternion(pos, rotation);
    const rot = CesiumMath.QuaternionToEuler(quat);

    const dir = Cesium.Cartesian3.multiplyByScalar(rot, 10, new Cesium.Cartesian3());
    const roiPos = Cesium.Cartesian3.add(pos, dir, new Cesium.Cartesian3());


    return Cesium.Ellipsoid.WGS84.cartesianToCartographic(roiPos);
  }

但是它不是围绕对象旋转的,它是在不同平面上做某种弯曲。

我希望红点始终在卡车前方10米的距离处Exemple

math matrix quaternions cesium euler-angles
1个回答
0
投票
因此,基本上,在应用我的计算之前,将所有内容转换为Matrix3
© www.soinside.com 2019 - 2024. All rights reserved.