1*16矩阵运算
来源:互联网 发布:苍之骑士团日服数据库 编辑:程序博客网 时间:2024/04/29 11:59
来自// MatrixMath.c
////////////////////////////////////////////////////////////////////////////
1. 求行列式
/// This function is not exported by library, just for this modules use only// 3x3 determinant
static float DetIJ(const GLTMatrix m, int i, int j)
{
int x, y, ii, jj;
float ret, mat[3][3];
x = 0;
for (ii = 0; ii < 4; ii++)
{
if (ii == i) continue;
y = 0;
for (jj = 0; jj < 4; jj++)
{
if (jj == j) continue;
mat[x][y] = m[(ii*4)+jj];
y++;
}
x++;
}
ret = mat[0][0]*(mat[1][1]*mat[2][2]-mat[2][1]*mat[1][2]);
ret -= mat[0][1]*(mat[1][0]*mat[2][2]-mat[2][0]*mat[1][2]);
ret += mat[0][2]*(mat[1][0]*mat[2][1]-mat[2][0]*mat[1][1]);
return ret;
}
2.求逆运算
///////////////////////////////////////////////////////////////////////////////
// Invert matrix
void gltInvertMatrix(const GLTMatrix m, GLTMatrix mInverse)
{
int i, j;
float det, detij;
// calculate 4x4 determinant
det = 0.0f;
for (i = 0; i < 4; i++)
{
det += (i & 0x1) ? (-m[i] * DetIJ(m, 0, i)) : (m[i] * DetIJ(m, 0,i));
}
det = 1.0f / det;
// calculate inverse
for (i = 0; i < 4; i++)
{
for (j = 0; j < 4; j++)
{
detij = DetIJ(m, j, i);
mInverse[(i*4)+j] = ((i+j) & 0x1) ? (-detij * det) : (detij *det);
}
}
}
0 0
- 1*16矩阵运算
- 1 矩阵运算
- 矩阵运算1
- opencv矩阵运算(1)
- opencv矩阵运算(1)
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- 矩阵运算
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- Binary Tree Maximum Path Sum
- Android 防住用户查看文件和文件夹思路
- 深入详解javascript之delete操作符
- 10(maven+SSH)网上商城项目实战之页面缓存OSCache
- 1*16矩阵运算
- 移动端远程调测工具weinre使用
- HDU 5565:Clarke and baton
- iOS xcode 7网络请求错误failure Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded
- Telegram 还不够如意?这可能是更好的选择:Dove
- iOS经典讲解之UIImage初始化一张图片的方法及优缺点
- REST表述性状态传递
- UIView的生命周期
- iOS开发 单手使触摸的视图旋转