NAME
hwOrient - define a transformation
PROPERTIES
Scale 3F Scaling factors along each axis
Rotate 3F Rotation about each axis, in degrees
Pos 3F Offset from origin
DEFAULTS
Scale = {1,1,1}
Rotate = {0,0,0}
Pos = {0,0,0}
DESCRIPTION
The hwOrient class defines a transformation in terms of high-level
operations. The operations are always performed in the order:
scale, rotate, position. This will never yield a "skewed" matrix.
The Scale parameter specifies scaling along each of the X, Y, and Z
axes. The Rotate parameter specifies a rotation about the X, Y, and
Z axes *in turn*; that is, a rotation about X followed by a rotation
about Y followed by a rotation about Z. The angles are specified in
degrees. The Pos parameter specifies a translation from the
origin. Note that most primitives have embedded hwOrient classes; a
standalone hwOrient object is only useful to pass to multiple
primitives which might share an orientation.
C EXAMPLE
/* Create an X scale of 2 with 30 degree rotation about Y, moved
* 20 units in Z, and apply it to a box.
*/
hwObject
orient,
box;
orient = hwOrient->create( hwOrient );
HW_MODIFY_3F( orient, hwStrScale, 2, 1, 1 );
HW_MODIFY_3F( orient, hwStrRotate, 0, 30, 0 );
HW_MODIFY_3F( orient, hwStrPos, 0, 0, 20 );
box = hwBox->create( hwBox );
box->modify( box, hwStrOrient, HW_TYPE_OBJECT, orient );
box->draw( box, disp );
box->destroy( box );
orient->destroy( orient );
OBJECT FILE EXAMPLE
# Same as above
hwOrient orient {
Scale = {2, 1, 1}
Rotate = {0, 30, 0}
Pos = {0,0,20}
}
hwBox box {
Orient = orient
}
SEE ALSO
hw(3)