SoAntiSquish(3IV)

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

As shipped in IRIX 6.5.30. Added in IRIX 6.5.22.

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

INHERITS FROM
     SoBase > SoFieldContainer > SoNode > SoTransformation > SoAntiSquish

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

     enum SoAntiSquishSizing {
          SO_ANTI_SQUISH_X    fits the other two axes to match the X axis,
                                   whose size is unchanged
          SO_ANTI_SQUISH_Y    fits the other two axes to match the Y axis,
                                   whose size is unchanged
          SO_ANTI_SQUISH_Z    fits the other two axes to match the Z axis,
                                   whose size is unchanged
          SO_ANTI_SQUISH_AVERAGE_DIMENSION
                              uses average of 3 scales in the matrix
          SO_ANTI_SQUISH_BIGGEST_DIMENSION
                              uses biggest of 3 scales in the matrix
          SO_ANTI_SQUISH_SMALLEST_DIMENSION
                              uses smallest of 3 scales in the matrix
          SO_ANTI_SQUISH_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

          Functions from class SoAntiSquish:

     SoAntiSquish *      SoAntiSquishCreate()
     SoType              SoAntiSquishGetClassTypeId()
     void                SoAntiSquishRecalc(SoAntiSquish *this)

          Functions from class SoNode:

     void                SoAntiSquishSetOverride(SoAntiSquish *this, SbBool
                              state)
     SbBool              SoAntiSquishIsOverride(const SoAntiSquish *this)
     SoNode *            SoAntiSquishCopy(const SoAntiSquish *this, SbBool
                              copyConnections = FALSE)
     SbBool              SoAntiSquishAffectsState(const SoAntiSquish *this)
     SoNode *            SoAntiSquishGetByName(const char *name)
     int                 SoAntiSquishGetByNameList(const char *name,
                              SoNodeList *list)

          Functions from class SoFieldContainer:

     void                SoAntiSquishSetToDflts(SoAntiSquish *this)
     SbBool              SoAntiSquishHasDfltVals(const SoAntiSquish *this)
     SbBool              SoAntiSquishFldsAreEq(const SoAntiSquish *this, const
                              SoFieldContainer *fc)
     void                SoAntiSquishCopyFieldVals(SoAntiSquish *this, const
                              SoFieldContainer *fc, SbBool copyConnections =
                              FALSE)
     SbBool              SoAntiSquishSet(SoAntiSquish *this, const char
                              *fieldDataString)
     void                SoAntiSquishGet(SoAntiSquish *this, SbString
                              *fieldDataString)
     int                 SoAntiSquishGetFields(const SoAntiSquish *this,
                              SoFieldList *resultList)
     SoField *           SoAntiSquishGetField(const SoAntiSquish *this, const
                              char *fieldName)
     SbBool              SoAntiSquishGetFieldName(const SoAntiSquish *this,
                              const SoField *field, SbName *fieldName)
     SbBool              SoAntiSquishIsNotifyEnabled(const SoAntiSquish *this)
     SbBool              SoAntiSquishEnableNotify(SoAntiSquish *this, SbBool
                              flag)

          Functions from class SoBase:

     void                SoAntiSquishRef(SoAntiSquish *this)
     void                SoAntiSquishUnref(const SoAntiSquish *this)
     void                SoAntiSquishUnrefNoDelete(const SoAntiSquish *this)
     void                SoAntiSquishTouch(SoAntiSquish *this)
     SoType              SoAntiSquishGetTypeId(const SoAntiSquish *this)
     SbBool              SoAntiSquishIsOfType(const SoAntiSquish *this, SoType
                              type)
     void                SoAntiSquishSetName(SoAntiSquish *this, const char
                              *name)
     SbName              SoAntiSquishGetName(const SoAntiSquish *this)


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().


FUNCTIONS
     SoAntiSquish *      SoAntiSquishCreate()
          Creates an anti-squish node with default settings.

     SoType              SoAntiSquishGetClassTypeId()
          Returns type identifier for this class.

     void                SoAntiSquishRecalc(SoAntiSquish *this)
          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