转置
来源:互联网 发布:大数据修炼系统女主 编辑:程序博客网 时间:2024/06/06 11:17
Cross product
//====================================================================
void Helpers::crossProduct(double *a, double *b, double *c)
{
c[0] = a[1]*b[2] - a[2]*b[1];
c[1] = a[2]*b[0] - a[0]*b[2];
c[2] = a[0]*b[1] - a[1]*b[0];
}
//====================================================================
// Invert 4x4 matrix (for visualiztion only)
//====================================================================
void Helpers::invertMatrix(const double *a, double *inva)
{
#define ENTRY(A, i, j) (A)[4*(i)+(j)]
int i, j, k;
double c[4][8];
double cik, ckk;
// Initialize:
//-------------
for(i = 0; i < 4; i++) {
for(j = 0; j < 4; j++) {
c[i][j] = ENTRY(a, i, j);
c[i][j+4] = 0.0;
}
c[i][i+4] = 1.0;
}
// Eliminate:
//------------
for(k = 0; k < 4; k++) {
ckk = c[k][k];
if(ckk == 0.0) return;
for(j = 0; j < 8; j++)
c[k][j] /= ckk;
for(i = 0; i < 4; i++) {
if(i == k) continue;
cik = c[i][k];
for(j = 0; j < 8; j++)
c[i][j] -= cik * c[k][j];
}
}
// Result:
//---------
for(i = 0; i < 4; i++) {
for(j = 0; j < 4; j++)
ENTRY(inva, i, j) = c[i][j+4];
}
#undef ENTRY
}
//====================================================================
void Helpers::crossProduct(double *a, double *b, double *c)
{
c[0] = a[1]*b[2] - a[2]*b[1];
c[1] = a[2]*b[0] - a[0]*b[2];
c[2] = a[0]*b[1] - a[1]*b[0];
}
//====================================================================
// Invert 4x4 matrix (for visualiztion only)
//====================================================================
void Helpers::invertMatrix(const double *a, double *inva)
{
#define ENTRY(A, i, j) (A)[4*(i)+(j)]
int i, j, k;
double c[4][8];
double cik, ckk;
// Initialize:
//-------------
for(i = 0; i < 4; i++) {
for(j = 0; j < 4; j++) {
c[i][j] = ENTRY(a, i, j);
c[i][j+4] = 0.0;
}
c[i][i+4] = 1.0;
}
// Eliminate:
//------------
for(k = 0; k < 4; k++) {
ckk = c[k][k];
if(ckk == 0.0) return;
for(j = 0; j < 8; j++)
c[k][j] /= ckk;
for(i = 0; i < 4; i++) {
if(i == k) continue;
cik = c[i][k];
for(j = 0; j < 8; j++)
c[i][j] -= cik * c[k][j];
}
}
// Result:
//---------
for(i = 0; i < 4; i++) {
for(j = 0; j < 4; j++)
ENTRY(inva, i, j) = c[i][j+4];
}
#undef ENTRY
}
- 转置
- 转置
- 转置
- VBA 转置
- hive转置
- python转置
- 简单的sql转置
- “转置”在哪
- python 实现list转置
- 转置3乘3
- 矩阵求逆 转置 行列式
- 矩阵求逆 转置 行列式
- ADT稀疏矩阵 及 转置
- 转置-置换-向量空间R
- C 语言程序设计实践 7.1 转置
- 数据结构--稀疏矩阵(转置)
- json 填充表格数据 转置
- 矩阵求逆、转置、行列式(转)
- HDU 4151The Special Number(暴力+二分)
- Linux Kernel Development——定时器和时间管理
- HDU 1010——Tempter of the Bone
- Ant(1)
- Win7系统下解决魔兽争霸全屏问题
- 转置
- C++标准库 Numeric limits climits cfloat cstdint
- 虚拟机下Ubuntu修改root密码
- web项目中的乱码问题的原因及解决办法
- Windows Phone 7使用本地数据库
- 开发者需知的10类工具
- 黑马程序员-java学习之String字符串类
- Android自动化测试工具
- The Linux Pub Quiz answers