【问题标题】:Adjust camera co-ordinates to represent change in azimuth, elevation and roll values调整相机坐标以表示方位角、仰角和滚动值的变化
【发布时间】:2011-06-20 15:51:56
【问题描述】:

我目前正在使用libQGLViewer,我正在接收来自我的传感器的数据流,持有方位角、高度 和 roll 值,3 个欧拉角。

这个问题可以认为是相机代表了一架飞机,而飞机的方位角、仰角和滚转变化。

我需要一组通用的变换矩阵来变换相机点和向上向量来表示这一点,但我不确定如何计算它们,因为每次旋转后要旋转的轴都会发生变化(我认为?)。

要么这样,要么只是以某种方式将方位角、仰角、滚动值传递给相机并为我提供一些功能?我知道cameraPosition.setOrientation(Quaterion something) 可能有效,但我无法真正理解。有什么想法吗?

【问题讨论】:

    标签: qt math transform 3d


    【解决方案1】:

    例如,您可以只取三个矩阵绕坐标轴旋转,分别插入您的角度,然后将这三个矩阵相乘以获得最终的旋转矩阵(但使用正确的乘法顺序)。

    您也可以只从欧拉角计算四元数。查看here 的想法。请记住,您始终必须使用正确的欧拉角顺序(无论您的三个值是什么意思),也许需要进行一些实验(那些不同的欧拉约定总是让我抓狂)。

    编辑:回复您的评论:这是按轮换顺序计算的。像 v' = XYZv 这样应用的矩阵对应于围绕 z 旋转,y 不变,然后 x 不变,等于 x,y',然后 z''。因此,您必须密切注意轴(方位角等字的含义)以及围绕这些轴旋转的顺序。

    【讨论】:

    • 我以为在 x 轴上旋转后,您会围绕 y'(y 已映射到的轴)旋转,然后围绕 z'' 旋转以获得结束坐标?既然是相机在移动,而不是轴本身,我们不需要以某种方式考虑这一点吗?
    • 我尝试对相机点应用矩阵变换,但我注意到仰角的值只有 -90 到 +90 度的范围。这是某种标准吗?它似乎弄乱了我的旋转矩阵。
    • @Chaos 我不确定。我在方位角、仰角、滚动角方面没有太多经验,因为每个人似乎对它们的定义都不一样。这实际上是欧拉角的一个普遍问题,因为每个人都使用其他约定,但假设他是标准的,尽管您实际上至少有 12 种不同的约定。尽管这三个词似乎具有特殊的标准含义,但我不确定。以这种方式限制海拔是有意义的,尽管我不知道为什么这对你来说是个问题。
    猜你喜欢
    • 2013-11-05
    • 1970-01-01
    • 2020-01-17
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多