[Fix] Fixed precision bug in TransformToModelCoords.

This commit is contained in:
Allanis 2018-01-13 18:11:36 +00:00
parent 7e83de07ee
commit f533c94456

View File

@ -101,19 +101,18 @@ void ModelBody::GetRotMatrix(matrix4x4d& m) {
} }
void ModelBody::TransformToModelCoords(const Frame* camFrame) { void ModelBody::TransformToModelCoords(const Frame* camFrame) {
printf("ModelBody::TransformToMOdelCoords(): Warning! This becomes horribly",
"inaccurate if the Body is in the root frame, and a few AUs out.\n");
const vector3d pos = GetPosition(); const vector3d pos = GetPosition();
const dReal* r = dGeomGetRotation(geoms[0]); const dReal* r = dGeomGetRotation(geoms[0]);
matrix4x4d m; matrix4x4d m, m2;
Frame::GetFrameTransform(GetFrame(), camFrame, m); Frame::GetFrameTransform(GetFrame(), camFrame, m2);
glMultMatrixd(&m[0]);
m[ 0] = r[ 0]; m[ 1] = r[ 4]; m[ 2] = r[ 8]; m[ 3] = 0; m[ 0] = r[ 0]; m[ 1] = r[ 4]; m[ 2] = r[ 8]; m[ 3] = 0;
m[ 4] = r[ 1]; m[ 5] = r[ 5]; m[ 6] = r[ 9]; m[ 7] = 0; m[ 4] = r[ 1]; m[ 5] = r[ 5]; m[ 6] = r[ 9]; m[ 7] = 0;
m[ 8] = r[ 2]; m[ 9] = r[ 6]; m[10] = r[10]; m[11] = 0; m[ 8] = r[ 2]; m[ 9] = r[ 6]; m[10] = r[10]; m[11] = 0;
m[12] = pos.x; m[13] = pos.y; m[14] = pos.z; m[15] = 1; m[12] = pos.x; m[13] = pos.y; m[14] = pos.z; m[15] = 1;
m = m2 * m;
glMultMatrixd(&m[0]); glMultMatrixd(&m[0]);
} }