indexing description: "[ Implements support routines for classes of objects which have an orientation. ]" date: "$Date$" revision: "$Revision$" class EM3D_ROTATABLE inherit EM3D_TRANSFORMABLE feature -- Status orientation: EM_QUATERNION is -- Describes the local orientation, relative to the parent entity do result := transformation end set_orientation (a_orientation: EM_QUATERNION) is -- Set `orientation' to `a_orientation'. do rotate( orientation.inversed * a_orientation ) ensure definition_of_set_orientation: orientation = a_orientation end rotate(a_rotation: EM_QUATERNION) is -- Rotate the object with a quaternion. do transformation.multiply ( a_rotation ) end end