首页 > 解决方案 > 如何在 C 中反转欧几里得(仅变换和旋转)矩阵?

问题描述

你如何反转只有平移和旋转,没有比例的 4x3 矩阵?你会用什么来做一个OpenGL矩阵逆(只是没有缩放)?

标签: cmatrixmatrix-inversematrix-transform

解决方案


假设您的 TypeMatrix3x4 是一个 [3][4] 矩阵,并且您只是转换一个 1:1 的比例、旋转和平移矩阵,下面的代码似乎可以工作 -

这会转置旋转矩阵并应用平移的逆矩阵。

TypeMatrix3x4 InvertHmdMatrix34( TypeMatrix3x4 mtoinv )
{
    int i, j;
    TypeMatrix3x4 out = { 0 };
    for( i = 0; i < 3; i++ )
        for( j = 0; j < 3; j++ )
            out.m[j][i] = mtoinv.m[i][j];

    for ( i = 0; i < 3; i++ )
    {
        out.m[i][3] = 0;
        for( j = 0; j < 3; j++ )
            out.m[i][3] += out.m[i][j] * -mtoinv.m[j][3];
    }
    return out;
}

推荐阅读