173 |
|
IAtom(0, 0) += mtmp * r2; |
174 |
|
IAtom(1, 1) += mtmp * r2; |
175 |
|
IAtom(2, 2) += mtmp * r2; |
176 |
+ |
Itmp += IAtom; |
177 |
|
|
178 |
|
//project the inertial moment of directional atoms into this rigid body |
179 |
|
if (atoms_[i]->isDirectional()) { |
180 |
< |
IAtom += atoms_[i]->getI(); |
181 |
< |
Itmp += refOrients_[i].transpose() * IAtom * refOrients_[i]; |
181 |
< |
} else { |
182 |
< |
Itmp += IAtom; |
183 |
< |
} |
180 |
> |
Itmp += refOrients_[i].transpose() * atoms_[i]->getI() * refOrients_[i]; |
181 |
> |
} |
182 |
|
} |
183 |
|
|
184 |
+ |
// std::cout << Itmp << std::endl; |
185 |
+ |
|
186 |
|
//diagonalize |
187 |
|
Vector3d evals; |
188 |
|
Mat3x3d::diagonalize(Itmp, evals, sU_); |
483 |
|
"RigidBody error.\n" |
484 |
|
"\tAtom %s does not have a position specified.\n" |
485 |
|
"\tThis means RigidBody cannot set up reference coordinates.\n", |
486 |
< |
ats->getType() ); |
486 |
> |
ats->getType().c_str() ); |
487 |
|
painCave.isFatal = 1; |
488 |
|
simError(); |
489 |
|
} |
503 |
|
"RigidBody error.\n" |
504 |
|
"\tAtom %s does not have an orientation specified.\n" |
505 |
|
"\tThis means RigidBody cannot set up reference orientations.\n", |
506 |
< |
ats->getType() ); |
506 |
> |
ats->getType().c_str() ); |
507 |
|
painCave.isFatal = 1; |
508 |
|
simError(); |
509 |
|
} |