我有一个openGL格式的3x3矩阵和一个翻译向量。旋转一个点时我感到困惑,因为我的旋转功能不考虑翻译。
对于旋转,我假设我可以简单地将3x3矩阵更改为四元数,旋转它然后再将其更改。当围绕物体当前位置旋转时,这不起作用。
4x4 matrcies的正常程序是:
按-(point - position)
旋转
按(point - position)
可选建议:
Bullet物理学使用这种格式,这就是我考虑使用他们的数据格式来存储变换的原因。我最终必须转换为4x4矩阵进行投影,但这并不重要。 Bullet的格式很有吸引力,因为它消除了无用的剪切数据。以子弹格式保留变换还是没有值得麻烦吗?
答案 0 :(得分:0)
想出了一个。只做矩阵数学。手动或从四元数创建旋转矩阵,然后将它们相乘。 Bullet会为你做这件事,但我也会在内部展示子弹的内容。
*伪造的代码
@tie = Av.where("usuario_id IN (#{Usuario.select('id').where('tienda = ?', @nom).to_sql})")
我还没有测试过代码。我有点害怕它可能会受到万向节锁定的影响所以在我的实际代码中,当我必须乘以2个基础时,我可能只会做四元数学。