Auxiliary class for quaternion computation.
More...
Auxiliary class for quaternion computation.
Definition at line 233 of file JSVD3D.hh.
JMATH::JSVD3D::JQuaternion::JQuaternion |
( |
JMatrix3S & |
S | ) |
|
|
inline |
Constructor.
Finds transformation that diagonalizes the given symmetric matrix by using Jacobi eigen analysis.
- Parameters
-
Definition at line 243 of file JSVD3D.hh.
252 for (
int i = 0; i != 4; ++i) {
void conjugate(const int x, const int y, const int z, JMatrix3S &S)
Get conjugate of symmetric matrix for given order.
void JMATH::JSVD3D::JQuaternion::conjugate |
( |
const int |
x, |
|
|
const int |
y, |
|
|
const int |
z, |
|
|
JMatrix3S & |
S |
|
) |
| |
|
inlineprivate |
Get conjugate of symmetric matrix for given order.
- Parameters
-
x | 1st index |
y | 2nd index |
z | 3rd index |
S | matrix |
Definition at line 274 of file JSVD3D.hh.
279 static const double GAMMA = sqrt(8.0) + 3.0;
280 static const double CSTAR = cos(
PI/8.0);
281 static const double SSTAR = sin(
PI/8.0);
285 double ch = 2.0*(S.
a00 - S.
a11);
288 if (GAMMA*sh*sh < ch*ch) {
290 const double w = 1.0 / sqrt(ch*ch+sh*sh);
301 const double scale = ch*ch + sh*sh;
302 const double a = (ch+sh)*(ch-sh) /
scale;
303 const double b = (2.0*sh*ch) / scale;
308 double s10 = S.
a10;
double s11 = S.
a11;
309 double s20 = S.
a20;
double s21 = S.
a21;
double s22 = S.
a22;
314 S.
a00 = a*( a*s00 + b*s10) + b*( a*s10 + b*s11);
315 S.
a10 = a*(-b*s00 + a*s10) + b*(-b*s10 + a*s11);
316 S.
a11 = -b*(-b*s00 + a*s10) + a*(-b*s10 + a*s11);
317 S.
a20 = a*s20 + b*s21;
318 S.
a21 = -b*s20 + a*s21;
340 (*this)[3] -= tmp[z];
341 (*this)[
x] += tmp[y];
342 (*this)[y] -= tmp[
x];
static const double PI
Mathematical constants.
void scale(vector< double > &v, double c)
scale vector content
The documentation for this struct was generated from the following file: