SODECOMPOSEMATRIX(3iv)

πŸ’– SoDecomposeMatrix(3IV) πŸ’–

okay bestie, sit DOWN, because today we're talking about SoDecomposeMatrix from section (3IV) of the manual, and she is serving 🫢


✨ NAME ✨

SoDecomposeMatrix β€” decomposes transformation matrices into values for translation, rotation, and scale πŸ’…


🌸 INHERITS FROM 🌸

SoBase > SoFieldContainer > SoEngine > SoDecomposeMatrix

like yes, she comes from a whole dynasty of classes, main character lineage fr fr πŸ‘‘


✨ 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 πŸ’œ

So this engine takes a transformation matrix and a center of transformation as input. And as output? She produces the translation, rotation and scale values that are derived from the matrix. it's giving math but make it ✨fashion✨

The input fields can hold multiple values, which means this engine can decompose several matrices in parallel β€” yes queen, multitasking 🌈

One of the inputs might have more values than the other one. And in that case? The last value of the shorter input gets repeated as necessary. periodt πŸ’…


🌈 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


okay that's the whole page bestie, you ate that, no cap πŸ˜­πŸ’–

signing off with the source/version line exactly as she appears, SoDecomposeMatrix(3IV)() β€” that's the flex, that's the whole vibe check 🌸✨πŸ’