chencj
chencj
这家伙很懒,什么也没写!

注册于 1年前

回答
2
文章
0
关注者
0

大概解决了,就是先旋转再移动,移动的距离大概如下,l是圆锥的长度:

    let offset = new Cesium.Cartesian3(
      l/2 * Math.sin(pitch) * Math.cos(heading),
      -l/2 * Math.sin(heading) * Math.sin(pitch),
      0,
    );

    let enuTransform = Cesium.Transforms.eastNorthUpToFixedFrame(yz_position);
    Cesium.Matrix4.multiplyByPointAsVector(enuTransform, offset, offset);

    entity_yz.position = new Cesium.CallbackProperty(function () {
      return Cesium.Cartesian3.add(yz_position, offset, new Cesium.Cartesian3())
    }, false);

    entity_yz.orientation = new Cesium.CallbackProperty(function () {
      return Cesium.Transforms.headingPitchRollQuaternion(yz_position, hpr_yz)
    }, false);

发布
问题