【问题标题】:Decomposing a transformed pivot matrix分解转换后的枢轴矩阵
【发布时间】:2014-04-06 10:34:40
【问题描述】:

给定一个按以下方式组成的枢轴矩阵:

  mat4w pivotedMat(true);
  pivotedMat.translate(P);
  pivotedMat *= pivotPos;
  pivotedMat *= pivotRot;
  pivotedMat *= R;
  pivotedMat *= pivotRot.getInverse();
  pivotedMat *= pivotPos.getInverse();
  pivotedMat.scale(S);

然后由另一个矩阵平移和旋转,这样:

mat4w newMat = transformMat * pivotedMat;

如果构成前一个旋转矩阵的所有值都已知,是否可以分解矩阵 (newMat) 以检索 P、R 和 S 的新值?

【问题讨论】:

    标签: opengl math graphics matrix geometry


    【解决方案1】:

    您可以使用以下代码将仿射变换矩阵T 分解为平移Pos 和旋转矩阵Rot

    mat4 Rot;
    mat4 Pos;
    mat4 InvT = T.GetInversed();
    
    for ( int i = 0 ; i < 3 ; i++ )
    {
        for ( int j = 0 ; j < 3 ; j++ )
        {
            Rot[i][j] = InvT[j][i];
        }
    }
    
    Pos = Rot.GetInversed() * vec3( -InvT[3].x, -InvT[3].y, -InvT[3].z );
    

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 2013-01-17
      • 2022-12-21
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多