Provided by: inventor-doc_2.1.5-10-18_all bug

NAME

       SoDecomposeMatrix  —  decomposes  transformation  matrices  into  values  for translation,
       rotation, and scale

INHERITS FROM

       SoBase > SoFieldContainer > SoEngine > SoDecomposeMatrix

SYNOPSIS

       #include <Inventor/engines/SoCompose.h>

          Inputs from class SoDecomposeMatrix:

     SoMFMatrix          matrix
     SoMFVec3f           center

          Outputs from class SoDecomposeMatrix:

     (SoMFVec3f)         translation
     (SoMFRotation)      rotation
     (SoMFVec3f)         scaleFactor
     (SoMFRotation)      scaleOrientation

          Methods from class SoDecomposeMatrix:

                         SoDecomposeMatrix()

          Methods from class SoEngine:

     static SoType       getClassTypeId()
     virtual int         getOutputs(SoEngineOutputList &list) const
     SoEngineOutput *    getOutput(const SbName &outputName) const
     SbBool              getOutputName(const SoEngineOutput *output, SbName &outputName) const
     SoEngine *          copy() const
     static SoEngine *   getByName(const SbName &name)
     static int          getByName(const SbName &name, SoEngineList &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  engine  takes  as  input  a transformation matrix and a center of transformation. As
       output the engine produces the translation, rotation and scale  values  derived  from  the
       matrix.

       The  input  fields  can  have  multiple  values,  allowing the engine to decompose several
       matrices in parallel. One of the inputs may have more values than the other. In that case,
       the last value of the shorter input will be repeated as necessary.

INPUTS

     SoMFMatrix          matrix
          The 4x4 transformation matrix.

     SoMFVec3f           center
          The center of transformations.

OUTPUTS

     (SoMFVec3f)         translation
          Derived translation in x, y, and z.

     (SoMFRotation)      rotation
          Derived rotation.

     (SoMFVec3f)         scaleFactor
          Derived scale values in x, y, and z.

     (SoMFRotation)      scaleOrientation
          Derived rotational space for scaling.

METHODS

                         SoDecomposeMatrix()
          Constructor

FILE FORMAT/DEFAULTS

       DecomposeMatrix {
          matrix  1 0 0 0
                  0 1 0 0
                  0 0 1 0
                  0 0 0 1
          center  0 0 0
     }

SEE ALSO

       SoComposeMatrix, SoEngineOutput

                                                                         SoDecomposeMatrix(3IV)()