【问题标题】:R-T matrix from rotation and translation without temporary matrices没有临时矩阵的旋转和平移的 R-T 矩阵
【发布时间】:2014-10-14 10:09:23
【问题描述】:

有没有一种方法可以从旋转四元数和平移向量创建矩阵,而无需先将两者都转换为矩阵?

我现在正在做的(使用我自己的小数学库)是:

var rotation = new quat(...);
var translation = new vec3(...);

var rotationMatrix = new mat4(rotation);
var translationMatrix = new mat4(translation);

var matrix = mat4.product(translationMatrix, rotationMatrix);

相反,我想执行以下操作:

var rotation = new quat(...);
var translation = new vec3(...);

var matrix = new mat4(rotation, translation);

分配两个临时矩阵似乎效率低下且浪费,尤其是在 Javascript 中,它们必须在堆上分配。

谢谢!

【问题讨论】:

    标签: javascript math matrix vector quaternions


    【解决方案1】:

    左上3×3子矩阵是旋转,右上3×1向量是平移,最下面一行是(0,0,0,1)。 (这是假设您将矩阵乘以列向量,而不是行向量乘以矩阵。否则情况会被转置。)所以是的,应该很容易调整从旋转创建矩阵的构造函数来满足存在额外平移向量的情况。或者,您可以从旋转创建矩阵,然后更改其中的一些条目以合并平移。

    请注意,这假定您的符号表示“旋转然后翻译”。如果反过来,则必须先将旋转应用于平移向量,然后再将其包含到矩阵中。

    【讨论】:

      猜你喜欢
      • 2014-08-24
      • 2021-12-14
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多