aslaksen opened this issue on May 10, 2006 · 17 posts
kuroyume0161 posted Fri, 12 May 2006 at 1:17 AM
I'd watch the terms 'local' and 'global'. In 3D mathematics and CG, global means the absolute reference system (world coordinate system) and there are no 'local' world coordinate systems. There is a global space and local spaces below it. Local spaces are arbitrary with respect to or relative to some coordinate basis within the absolute global space. A set of rotations is either defined in the global space or a local space (there is no hierarchy per se). One could start with an object whose coordinate basis coincides with the global system and after the first rotation, it is no longer coincident (and then call it local). This is incorrect. You were always in local space - and coincidences happen. :)
The 'hierarchy' is more of an ordering of rotational bases and how the system is affected by each rotation. With rotations and translations, you can take it with you (as it were). When you translate an object along an axis, you are changing the origin of its local coordinate space. The next translation occurs from there (and not from 0,0,0). Same with rotations, except that translations are commutative (order doesn't matter). Each rotation is modifying the object's local coordinate system within the global system. Poser may not have a specific order, but you must specify a specific order and that is enough to allow gimbal lock. Quaternions avoid gimbal lock by using a homogenous coordinate to do interpolative rotations within a 4-dimensional coordinate basis (see Ken Shoemake for in-depth explanation). In other words, it is not misleaing to talk about Euler angles in Poser, no matter the rotation order, whether it be XYZ XZY YXZ YZX ZXY ZYX XYX XZX YZY YXY ZXZ or ZYZ (these are all Euler angle orders, although the latter six are not valid Poser rotation sequences).
C makes it easy to shoot yourself in the
foot. C++ makes it harder, but when you do, you blow your whole leg
off.
-- Bjarne
Stroustrup
Contact Me | Kuroyume's DevelopmentZone