本文整理汇总了C++中SbMatrix::transpose方法的典型用法代码示例。如果您正苦于以下问题:C++ SbMatrix::transpose方法的具体用法?C++ SbMatrix::transpose怎么用?C++ SbMatrix::transpose使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SbMatrix
的用法示例。
在下文中一共展示了SbMatrix::transpose方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SbMatrix
SbBool
SbMatrix::factor(SbMatrix &r, SbVec3f &s, SbMatrix &u, SbVec3f &t,
SbMatrix &proj) const
{
double det; /* Determinant of matrix A */
double det_sign; /* -1 if det < 0, 1 if det > 0 */
double scratch;
int i, j;
int junk;
SbMatrix a, b, si;
float evalues[3];
SbVec3f evectors[3];
a = *this;
proj.makeIdentity();
scratch = 1.0;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
a.matrix[i][j] *= scratch;
}
t[i] = matrix[3][i] * scratch;
a.matrix[3][i] = a.matrix[i][3] = 0.0;
}
a.matrix[3][3] = 1.0;
/* (3) Compute det A. If negative, set sign = -1, else sign = 1 */
det = a.det3();
det_sign = (det < 0.0 ? -1.0 : 1.0);
if (det_sign * det < 1e-12)
return(FALSE); // singular
/* (4) B = A * A^ (here A^ means A transpose) */
b = a * a.transpose();
b.jacobi3(evalues, evectors, junk);
// find min / max eigenvalues and do ratio test to determine singularity
r = SbMatrix(evectors[0][0], evectors[0][1], evectors[0][2], 0.0,
evectors[1][0], evectors[1][1], evectors[1][2], 0.0,
evectors[2][0], evectors[2][1], evectors[2][2], 0.0,
0.0, 0.0, 0.0, 1.0);
/* Compute s = sqrt(evalues), with sign. Set si = s-inverse */
si.makeIdentity();
for (i = 0; i < 3; i++) {
s[i] = det_sign * sqrt(evalues[i]);
si.matrix[i][i] = 1.0 / s[i];
}
/* (5) Compute U = R^ S! R A. */
u = r * si * r.transpose() * a;
return(TRUE);
}
示例2: orientationMatrix
SbMatrix IVElement::orientationMatrix() {
SbMatrix mat;
SbRotation rr = rotVec->getValue();
rr.getValue(mat);
return mat.transpose();
}