mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 18:31:55 -04:00
doing better with the coordinate system of local forces
This commit is contained in:
parent
7492d74426
commit
f7a3d5803a
@ -112,6 +112,7 @@ child_integrate(Physical *physical,
|
||||
accum_quat += f;
|
||||
}
|
||||
|
||||
LOrientationf orientation = current_object->get_orientation();
|
||||
// local forces
|
||||
f_cur = physical->get_angular_forces().begin();
|
||||
for (; f_cur != physical->get_angular_forces().end(); ++f_cur) {
|
||||
@ -130,7 +131,7 @@ child_integrate(Physical *physical,
|
||||
f = cur_force->get_quat(current_object);
|
||||
|
||||
// tally it into the accumulation quaternion
|
||||
accum_quat += f;
|
||||
accum_quat += orientation.xform(f); // i.e. orientation * f * orientation.conjugate();
|
||||
}
|
||||
//assert(index == matrices.size());
|
||||
|
||||
@ -155,7 +156,7 @@ child_integrate(Physical *physical,
|
||||
}
|
||||
#else
|
||||
//accum_quat*=viscosityDamper;
|
||||
LOrientationf orientation = current_object->get_orientation();
|
||||
//LOrientationf orientation = current_object->get_orientation();
|
||||
|
||||
//accum_quat.normalize();
|
||||
// x = x + v * t + 0.5 * a * t * t
|
||||
@ -164,11 +165,11 @@ child_integrate(Physical *physical,
|
||||
rot_quat = rot_quat + (accum_quat * dt);
|
||||
|
||||
//if (rot_quat.normalize()) {
|
||||
//if (orientation.normalize() && rot_quat.normalize()) {
|
||||
if (orientation.normalize() && rot_quat.normalize()) {
|
||||
// and write the results back.
|
||||
current_object->set_orientation(orientation);
|
||||
current_object->set_rotation(rot_quat);
|
||||
//}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user