Cesium实体旋转问题

发布于 2023-06-21 14:00:35

image.png
如图,我想改变圆锥和卫星的朝向,改变的值是heading和pitch,但是改变之后圆锥和卫星发生了偏离,请问有没有什么好的解决办法?

查看更多

关注者
0
被浏览
898
chencj
chencj 2023-06-25
这家伙很懒,什么也没写!

大概解决了,就是先旋转再移动,移动的距离大概如下,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);
1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览