52 void DLM::doRotate(
StuntDouble* sd, Vector3d& ji, RealType dt) {
53 RealType dt2 = 0.5 * dt;
56 RotMat3x3d A = sd->getA();
57 Mat3x3d I = sd->getI();
62 int i = sd->linearAxis();
66 angle = dt2 * ji[j] / I(j, j);
67 rotateStep(k, i, angle, ji, A);
69 angle = dt * ji[k] / I(k, k);
70 rotateStep(i, j, angle, ji, A);
72 angle = dt2 * ji[j] / I(j, j);
73 rotateStep(k, i, angle, ji, A);
77 angle = dt2 * ji[0] / I(0, 0);
78 rotateStep(1, 2, angle, ji, A);
81 angle = dt2 * ji[1] / I(1, 1);
82 rotateStep(2, 0, angle, ji, A);
85 angle = dt * ji[2] / I(2, 2);
86 rotateStep(0, 1, angle, ji, A);
89 angle = dt2 * ji[1] / I(1, 1);
90 rotateStep(2, 0, angle, ji, A);
93 angle = dt2 * ji[0] / I(0, 0);
94 rotateStep(1, 2, angle, ji, A);
100 void DLM::rotateStep(
int axes1,
int axes2, RealType angle, Vector3d& ji,
124 cosAngle = cos(angle);
125 sinAngle = sin(angle);
126 rot(axes1, axes1) = cosAngle;
127 rot(axes2, axes2) = cosAngle;
129 rot(axes1, axes2) = sinAngle;
130 rot(axes2, axes1) = -sinAngle;
static SquareMatrix< Real, Dim > identity()
Returns an identity matrix.
"Don't move, or you're dead! Stand up! Captain, we've got them!"
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.