SoAntiSquish(3IV)

SoAntiSquish - transformation node that undoes non-uniform 3D scales

Showing IRIX 6.5.30 (default release). Added in IRIX 6.5.22.

NAME
     SoAntiSquish - transformation node that undoes non-uniform 3D scales

INHERITS FROM
     SoBase > SoFieldContainer > SoNode > SoTransformation > SoAntiSquish

SYNOPSIS
     #include <Inventor/nodes/SoAntiSquish.h>

     enum Sizing {
          SoAntiSquish::X     fits the other two axes to match the X axis,
                                   whose size is unchanged
          SoAntiSquish::Y     fits the other two axes to match the Y axis,
                                   whose size is unchanged
          SoAntiSquish::Z     fits the other two axes to match the Z axis,
                                   whose size is unchanged
          SoAntiSquish::AVERAGE_DIMENSION
                              uses average of 3 scales in the matrix
          SoAntiSquish::BIGGEST_DIMENSION
                              uses biggest of 3 scales in the matrix
          SoAntiSquish::SMALLEST_DIMENSION
                              uses smallest of 3 scales in the matrix
          SoAntiSquish::LONGEST_DIAGONAL
                              accounts for shearing; transforms a cube by the
                                   matrix and then uses length of longest
                                   diagonal
     }

          Fields from class SoAntiSquish:

     SoSFEnum            sizing
     SoSFBool            recalcAlways

          Methods from class SoAntiSquish:

                         SoAntiSquish()
     static SoType       getClassTypeId()
     void                recalc()

          Methods from class SoNode:

     void                setOverride(SbBool state)
     SbBool              isOverride() const
     SoNode *            copy(SbBool copyConnections = FALSE) const
     virtual SbBool      affectsState() const
     static SoNode *     getByName(const SbName &name)
     static int          getByName(const SbName &name, SoNodeList &list)

          Methods from class SoFieldContainer:

     void                setToDefaults()
     SbBool              hasDefaultValues() const
     SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
     void                copyFieldValues(const SoFieldContainer *fc, SbBool
                              copyConnections = FALSE)
     SbBool              set(const char *fieldDataString)
     void                get(SbString &fieldDataString)
     virtual int         getFields(SoFieldList &resultList) const
     virtual SoField *   getField(const SbName &fieldName) const
     SbBool              getFieldName(const SoField *field, SbName &fieldName)
                              const
     SbBool              isNotifyEnabled() const
     SbBool              enableNotify(SbBool flag)

          Methods from class SoBase:

     void                ref()
     void                unref() const
     void                unrefNoDelete() const
     void                touch()
     virtual SoType      getTypeId() const
     SbBool              isOfType(SoType type) const
     virtual void        setName(const SbName &name)
     virtual SbName      getName() const


DESCRIPTION
     This node removes nonuniform 3D scaling from the current transformation
     matrix when traversed by an action. It is used by draggers such as the
     SoTrackballDragger that need to stay uniformly scaled no matter where
     they are located in the scene graph.

     The magnitude of the new scale is determined by the current
     transformation matrix and the sizing field. This node does not change the
     translation or rotation in the matrix.

FIELDS
     SoSFEnum            sizing
          Determines which of the algorithms enumerated by the type Sizing
          will be used to select the new scale when the x,y, and z scales are
          not equal.

     SoSFBool            recalcAlways
          If recalcAlways is TRUE, this node calculates its unsquishing matrix
          every time it is traversed. If FALSE, then this only occurs during
          the first traversal folllowing a call to recalc().


METHODS
                         SoAntiSquish()
          Creates an anti-squish node with default settings.

     static SoType       getClassTypeId()
          Returns type identifier for this class.

     void                recalc()
          Sets a flag so that the next time the node is traversed, it will
          recalculate its unsquishing matrix.


ACTION BEHAVIOR
     SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction,
     SoGetMatrixAction, SoRayPickAction
          Appends the current transformation with a new matrix to create an
          unsquished result.


FILE FORMAT/DEFAULTS
     AntiSquish {
          sizing        AVERAGE_DIMENSION
          recalcAlways  TRUE
     }

SEE ALSO
     SoCenterballDragger, SoJackDragger, SoTrackballDragger,
     SoTransformerDragger, SoTransformation, SoTransformBoxDragger