c - 如何在 C 中反转欧几里得(仅变换和旋转)矩阵?
问题描述
你如何反转只有平移和旋转,没有比例的 4x3 矩阵?你会用什么来做一个OpenGL矩阵逆(只是没有缩放)?
解决方案
假设您的 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;
}
推荐阅读
- amazon-web-services - 如何按实例类型和日期获取 AWS EC2/Sagemaker 实例的使用时间?
- python - 在 python2 中使用 XAdes-BES 签署文档
- python-3.x - 将 ISO 周数列添加到数据框中会删除其他添加列的结果
- flutter - 在 AlertDialog 之外构建小部件
- laravel-8 - 在 dompdf laravel 8 中启用引导程序
- arrays - 如何比较系统数组和系统对象?
- reactjs - 有什么办法可以改变material-ui data-grid默认文本
- c# - 尽管使用 String Builder 编辑了代码,但 Unity 会停止
- python - 有没有办法将特定列中的值添加到之前的行?
- reactjs - 如何使用 React.js 从外部 API 将值存储在变量中?