Flo*_* Du 5 quaternions euler-angles cesium czml
我有包含位置(纬度、经度、高度)和方向(俯仰、滚动、航向)随时间变化的飞行数据。
我想在 CesiumJS 中代表飞机。
我试图从飞行数据创建 CZML 文件。一切都很适合这个职位。但是 CZML 格式仅支持基于地球固定轴参考中的四元数的方向。 这意味着我必须为每个位置、俯仰、滚动、航向预处理这个四元数,以便编写 CZML。
你认为我应该实现这个四元数计算(不是直接的)?
或者我应该使用另一种解决方案来使用允许我直接使用俯仰、滚转、航向值的铯函数吗?。在这种情况下,我想知道可以使用哪种格式将我的飞行数据传输到 Cesium。
谢谢你的建议
我自己还没有尝试过,但应该可以仅使用铯附带的数学函数将飞机航向/俯仰/滚动(在已知飞机位置的局部轴上)转换为地球固定的四元数。
这里需要两种转换,一种是将航向-俯仰-横滚转换为四元数,另一种是将局部轴转换为地球固定轴。
现在我们需要本地到地球固定。
使用Transforms.eastNorthUpToFixedFrame。这考虑了位置,但以 Matrix4 的形式为您提供了超出您需要的内容。
使用Matrix4.getMatrix3从 Matrix4 获取旋转。这会去掉变换偏移(地球到飞机)并生成一个仅包含旋转偏移(和比例)的 Matrix3,但这应该只是我们在上一步中获得该矩阵的位置给出的恒等比例,因此我们可以放心地认为这仅作为旋转)。
使用Quaternion.fromRotationMatrix将 Matrix3 转换为四元数。
现在您有 2 个四元数,一个来自步骤 1,另一个来自步骤 4。
我希望我的数学是正确的。祝你好运!