gpt4 book ai didi

c++ - 四元数旋转到纬度/经度

转载 作者:太空狗 更新时间:2023-10-29 23:14:48 26 4
gpt4 key购买 nike

长话短说
我有一个代表球体(地球球体)方向的四元数。我希望从四元数中得出纬度/经度。我可以在脑海中想象这个过程,但数学(矩阵/四元数)很弱,代码也好不了多少(仍在学习 OpenGL/GLM)。我怎样才能做到这一点?这是为了在使用 C++ 和 GLM 库的 OpenGL 中使用。

长版
我正在制作一个基于地球的 map 程序 - 与 Google 地球不同,但出于定制目的,GE 无法适应。

我在 C++ 中将 OpenGL 与 GLM 库一起使用。

我已经成功地对球体进行了编码,并直接使用四元数来表示它的方向。不涉及欧拉角。我可以使用鼠标移动来旋转地球仪,从而根据当前视点和方向在任意轴上旋转地球仪。

但是,我想获得球体上某个点的纬度和经度,不仅供用户使用,也供某些内部程序使用。

我可以想象这一定是可能的。想象一下世界空间中没有应用旋转的球体。假设 OpenGL 的右手法则,北极指向 Y 轴,赤道平行于 X/Z​​ 平面。因此,Y 轴上的纬度/经度为 90N 和其他东西 E/W(退化)。本初子午线将位于 +Z 轴上。

如果任意旋转地球仪/球体,地球仪的北极现在位于其他地方。该点可以映射到旋转前原始球体的纬度/经度。想象一下两个重叠的球体,一个是旋转的地球,另一个是固定引用。

(实际上,它会反过来。我寻找的纬度/经度是旋转球体上与未旋转引用球体北极相关的点)

在我看来,似乎我应该能够以某种方式从四元数中获取地球地球方向轴的 vector ,并将其与未旋转球体的 vector 进行比较。但我似乎无法理解如何做到这一点。 (我想我仍然没有完全理解垫子和四肢训练,到目前为止只是失误导致了我的成功)

我希望在不需要深度数学速成类(class)的情况下实现这一目标。我正在从能够使用 GLM 库实现我的目标的角度寻找解决方案/理解/指导。理想情况下是带有一些一般性解释的代码示例。我从例子中学得最好。

仅供引用,在我的代码中,地球/球体的旋转完全独立于相机(使用欧拉角),因此它可以独立移动。所以我无法使用相机中的任何东西来确定这一点。

最佳答案

也许您可以尝试从该线程 Longitude / Latitude to quaternion 中访问该链接(即使用 boost ;))然后减去该转换的倒数。或者您也可以通过将四元数转换为欧拉角来添加一个步骤?

关于c++ - 四元数旋转到纬度/经度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31958219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com