首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >and从2个cartesian3点计算航向和俯仰

and从2个cartesian3点计算航向和俯仰
EN

Stack Overflow用户
提问于 2019-10-10 21:21:20
回答 1查看 302关注 0票数 1

我正在尝试使用as中的两个cartesian3点来计算航向和俯仰,如下所示:

代码语言:javascript
复制
getHeading(pointA,pointB){
    const transform=Cesium.Transforms.eastNorthUpToFixedFrame(pointA);
    const vector2=Cesium.Cartesian3.subtract(pointA,pointB,new Cesium.Cartesian3());
    const vector=Cesium.Matrix4.multiplyByPoint(fixedTransform,vector2,new Cesium.Cartesian3());
    const direction=Cesium.Cartesian3.normalize(vector,new Cesium.Cartesian3());
    const heading=Math.atan2(direction.y,direction.x)-Cesium.Math.PI_OVER_TWO;
    return Cesium.Math.toDegrees(Cesium.Math.TWO_PI-Cesium.Math.zeroToTwoPi(heading));
}

但是它不起作用,有人能给我一些建议吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-10-11 11:35:49

解决方案:

代码语言:javascript
复制
getHeading(pointA:Cesium.Cartesian3,pointB:Cesium.Cartesian3){
    const transform=Cesium.Transforms.eastNorthUpToFixedFrame(pointA);
    const positionvector=Cesium.Cartesian3.subtract(pointB,pointA,new Cesium.Cartesian3());
    const vector=Cesium.Matrix4.multiplyByPointAsVector(Cesium.Matrix4.inverse(transform,new Cesium.Matrix4()),positionvector,new Cesium.Cartesian3());
    const direction=Cesium.Cartesian3.normalize(vector,new Cesium.Cartesian3());
    //heading
    const heading=Math.atan2(direction.y,direction.x)-Cesium.Math.PI_OVER_TWO;
    //pitch
    const pitch=Cesium.Math.PI_OVER_TWO-Cesium.Math.acosClamped(direction.z);
    return Cesium.Math.toDegrees(Cesium.Math.TWO_PI-Cesium.Math.zeroToTwoPi(heading));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58323971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档