|
http://www.coin3d.org/ http://www.kongsberg.com/kogt/ |
The SoTransform class is the "all-purpose" transformation node type.Like SoMatrixTransform, nodes of this type gives the application programmer maximum flexibility when specifying geometry transformations in a scene graph. If you want to set and keep the various components of the transformation matrix in separate entities, this node type is preferable, though. More...
#include <Inventor/nodes/SoTransform.h>
Public Member Functions | |
| SoTransform (void) | |
| void | pointAt (const SbVec3f &frompoint, const SbVec3f &topoint) |
| void | getScaleSpaceMatrix (SbMatrix &mat, SbMatrix &inv) const |
| void | getRotationSpaceMatrix (SbMatrix &mat, SbMatrix &inv) const |
| void | getTranslationSpaceMatrix (SbMatrix &mat, SbMatrix &inv) const |
| void | multLeft (const SbMatrix &mat) |
| void | multRight (const SbMatrix &mat) |
| void | combineLeft (SoTransformation *nodeonright) |
| void | combineRight (SoTransformation *nodeonleft) |
| void | setMatrix (const SbMatrix &mat) |
| void | recenter (const SbVec3f &newcenter) |
| virtual void | doAction (SoAction *action) |
| virtual void | GLRender (SoGLRenderAction *action) |
| virtual void | callback (SoCallbackAction *action) |
| virtual void | getBoundingBox (SoGetBoundingBoxAction *action) |
| virtual void | getMatrix (SoGetMatrixAction *action) |
| virtual void | pick (SoPickAction *action) |
| virtual void | getPrimitiveCount (SoGetPrimitiveCountAction *action) |
Static Public Member Functions | |
| static void | initClass (void) |
| Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system. | |
Public Attributes | |
| SoSFVec3f | translation |
| SoSFRotation | rotation |
| SoSFVec3f | scaleFactor |
| SoSFRotation | scaleOrientation |
| SoSFVec3f | center |
Protected Member Functions | |
| virtual | ~SoTransform () |
The SoTransform class is the "all-purpose" transformation node type.
Like SoMatrixTransform, nodes of this type gives the application programmer maximum flexibility when specifying geometry transformations in a scene graph. If you want to set and keep the various components of the transformation matrix in separate entities, this node type is preferable, though.
The order of operations is: first scaling is done, then rotation, then translation.
FILE FORMAT/DEFAULTS:
Transform {
translation 0 0 0
rotation 0 0 1 0
scaleFactor 1 1 1
scaleOrientation 0 0 1 0
center 0 0 0
}
| SoTransform::SoTransform | ( | void | ) |
Constructor.
| SoTransform::~SoTransform | ( | ) | [protected, virtual] |
Destructor.
Sets the transformation to translate to frompoint, with a rotation so that the (0,0,-1) vector is rotated into the vector from frompoint to topoint.
Calculates the matrices to/from scale space.
Calculates the matrices to/from rotation space.
Calculates the matrices to/from translation space.
| void SoTransform::multLeft | ( | const SbMatrix & | mat | ) |
Premultiplies this transformation by mat.
| void SoTransform::multRight | ( | const SbMatrix & | mat | ) |
Postmultiplies this transformation by mat.
| void SoTransform::combineLeft | ( | SoTransformation * | nodeonright | ) |
Premultiplies this transformation by the transformation in nodeonright.
| void SoTransform::combineRight | ( | SoTransformation * | nodeonleft | ) |
Postmultiplies this transformation by the transformation in nodeonleft.
| void SoTransform::setMatrix | ( | const SbMatrix & | mat | ) |
Sets the fields to create a transformation equal to mat.
| void SoTransform::recenter | ( | const SbVec3f & | newcenter | ) |
Sets the center field to newcenter. This might affect one or more of the other fields.
The translation part of the transformation.
The rotation part of the transformation.
Note that there is one very common mistake that is easy to make when setting the value of a an SoSFRotation field, and that is to inadvertently use the wrong SbRotation constructor. This example should clarify the problem:
mytransformnode->rotation.setValue(0, 0, 1, 1.5707963f);
The programmer clearly tries to set a PI/2 rotation around the Z axis, but this will fail, as the SbRotation constructor invoked above is the one that takes as arguments the 4 floats of a quaternion. What the programmer almost certainly wanted to do was to use the SbRotation constructor that takes a rotation vector and a rotation angle, which is invoked like this:
mytransformnode->rotation.setValue(SbVec3f(0, 0, 1), 1.5707963f);
The scaling part of the transformation.
The orientation the object is set to before scaling.
The center point for the rotation.
Copyright © by Kongsberg Oil & Gas Technologies. All rights reserved.
Generated on Mon Nov 7 20:02:06 2011 for Coin by Doxygen 1.6.3.