使用3x3矩阵和平移向量围绕点旋转

时间:2016-01-05 21:01:34

标签: c++ opengl linear-algebra opengl-3

我有一个openGL格式的3x3矩阵和一个翻译向量。旋转一个点时我感到困惑,因为我的旋转功能不考虑翻译。

对于旋转,我假设我可以简单地将3x3矩阵更改为四元数,旋转它然后再将其更改。当围绕物体当前位置旋转时,这不起作用。

4x4 matrcies的正常程序是:

-(point - position)

翻译点数

旋转

(point - position)

翻译点数

可选建议:

Bullet物理学使用这种格式,这就是我考虑使用他们的数据格式来存储变换的原因。我最终必须转换为4x4矩阵进行投影,但这并不重要。 Bullet的格式很有吸引力,因为它消除了无用的剪切数据。以子弹格式保留变换还是没有值得麻烦吗?

1 个答案:

答案 0 :(得分:0)

想出了一个。只做矩阵数学。手动或从四元数创建旋转矩阵,然后将它们相乘。 Bullet会为你做这件事,但我也会在内部展示子弹的内容。

*伪造的代码

@tie = Av.where("usuario_id IN (#{Usuario.select('id').where('tienda = ?', @nom).to_sql})")

我还没有测试过代码。我有点害怕它可能会受到万向节锁定的影响所以在我的实际代码中,当我必须乘以2个基础时,我可能只会做四元数学。