qCC_db version 2.13.alpha (Qt) - 31 May 2022
CloudCompare 3D entities
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
ccIndexedTransformation Class Reference

A 4x4 'transformation' matrix (column major order) associated to an index (typically a timestamp) More...

#include <ccIndexedTransformation.h>

Inheritance diagram for ccIndexedTransformation:
Inheritance graph
[legend]
Collaboration diagram for ccIndexedTransformation:
Collaboration graph
[legend]

Public Member Functions

 ccIndexedTransformation ()
 Default constructor. More...
 
 ccIndexedTransformation (const ccGLMatrix &matrix)
 Constructor from a transformation matrix. More...
 
 ccIndexedTransformation (const ccGLMatrix &matrix, double index)
 Constructor from a transformation matrix and an index. More...
 
 ccIndexedTransformation (const ccIndexedTransformation &trans)=default
 Copy constructor.
 
double getIndex () const
 Returns associated index (e.g. timestamp)
 
void setIndex (double index)
 Sets associated index (e.g. timestamp)
 
ccIndexedTransformation operator* (const ccGLMatrix &mat) const
 Multiplication by a ccGLMatrix operator.
 
ccIndexedTransformationoperator*= (const ccGLMatrix &mat)
 (in place) Multiplication by a ccGLMatrix operator More...
 
ccIndexedTransformationoperator+= (const CCVector3 &T)
 Multiplication operator. More...
 
ccIndexedTransformationoperator-= (const CCVector3 &T)
 (in place) Translation operator More...
 
ccIndexedTransformation transposed () const
 Returns transposed transformation. More...
 
ccIndexedTransformation inverse () const
 Returns inverse transformation. More...
 
bool toAsciiFile (QString filename, int precision=12) const override
 Saves matrix to an ASCII file. More...
 
bool fromAsciiFile (QString filename) override
 Loads matrix from an ASCII file. More...
 
bool isSerializable () const override
 Returns whether object is serializable of not. More...
 
bool toFile (QFile &out) const override
 Saves data to binary stream. More...
 
bool fromFile (QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap) override
 Loads data from binary stream. More...
 
- Public Member Functions inherited from ccGLMatrix
 ccGLMatrix ()
 Default constructor. More...
 
 ccGLMatrix (const ccGLMatrixTpl< float > &mat)
 Copy constructor from a ccGLMatrixTpl. More...
 
 ccGLMatrix (const float *mat16f)
 Constructor from a float GL matrix array. More...
 
 ccGLMatrix (const double *mat16d)
 Constructor from a double GL matrix array. More...
 
 ccGLMatrix (const Vector3Tpl< float > &X, const Vector3Tpl< float > &Y, const Vector3Tpl< float > &Z, const Vector3Tpl< float > &Tr)
 Constructor from 4 columns (X,Y,Z,Tr) More...
 
- Public Member Functions inherited from ccGLMatrixTpl< float >
 ccGLMatrixTpl ()
 Default constructor. More...
 
 ccGLMatrixTpl (const ccGLMatrixTpl< float > &mat)
 Copy constructor.
 
 ccGLMatrixTpl (const float *mat16f)
 Constructor from a float GL matrix array. More...
 
 ccGLMatrixTpl (const double *mat16d)
 Constructor from a double GL matrix array. More...
 
 ccGLMatrixTpl (const Vector3Tpl< float > &X, const Vector3Tpl< float > &Y, const Vector3Tpl< float > &Z, const Vector3Tpl< float > &Tr)
 Constructor from 4 columns (X,Y,Z,T) More...
 
QString toString (int precision=12, QChar separator=' ') const
 Returns matrix as a string. More...
 
virtual bool toAsciiFile (QString filename, int precision=12) const
 Saves matrix to an ASCII file. More...
 
virtual bool fromAsciiFile (QString filename)
 Loads matrix from an ASCII file. More...
 
ccGLMatrixTpl< float > xRotation () const
 Returns the rotation component around X only.
 
ccGLMatrixTpl< float > yRotation () const
 Returns the rotation component around Y only.
 
ccGLMatrixTpl< float > zRotation () const
 Returns the rotation component around Z only.
 
virtual void toZero ()
 Clears matrix. More...
 
virtual void toIdentity ()
 Sets matrix to identity.
 
void clearTranslation ()
 Clears translation. More...
 
void initFromParameters (float alpha_rad, const Vector3Tpl< float > &axis3D, const Vector3Tpl< float > &t3D)
 Inits transformation from a rotation axis, an angle and a translation. More...
 
void initFromParameters (float phi_rad, float theta_rad, float psi_rad, const Vector3Tpl< float > &t3D)
 Inits transformation from 3 rotation angles and a translation. More...
 
void getParameters (float &alpha_rad, Vector3Tpl< float > &axis3D, Vector3Tpl< float > &t3D) const
 Returns equivalent parameters: a rotation axis, an angle and a translation. More...
 
void getParameters (float &phi_rad, float &theta_rad, float &psi_rad, Vector3Tpl< float > &t3D) const
 Returns equivalent parameters: 3 rotation angles and a translation. More...
 
float * data ()
 Returns a pointer to internal data.
 
const float * data () const
 Returns a const pointer to internal data.
 
float * getTranslation ()
 Returns a pointer to internal translation. More...
 
const float * getTranslation () const
 Returns a const pointer to internal translation. More...
 
Vector3Tpl< float > getTranslationAsVec3D () const
 Returns a copy of the translation as a CCVector3. More...
 
void setTranslation (const Vector3Tpl< float > &Tr)
 Sets translation (float version) More...
 
void setTranslation (const Vector3Tpl< double > &Tr)
 Sets translation (double version) More...
 
void setTranslation (const float Tr[3])
 Sets translation from a float array. More...
 
void setTranslation (const double Tr[3])
 Sets translation from a double array. More...
 
float * getColumn (unsigned index)
 Returns a pointer to a given column. More...
 
const float * getColumn (unsigned index) const
 Returns a const pointer to a given column. More...
 
Vector3Tpl< float > getColumnAsVec3D (unsigned index) const
 Returns a copy of a given column as a CCVector3. More...
 
void setColumn (unsigned index, const Vector3Tpl< float > &v)
 Sets the content of a given column. More...
 
void setColumn (unsigned index, const Tuple4Tpl< float > &v)
 Sets the content of a given column. More...
 
ccGLMatrixTpl< float > operator* (const ccGLMatrixTpl< float > &mat) const
 Multiplication by a matrix operator.
 
Vector3Tpl< float > operator* (const Vector3Tpl< float > &vec) const
 Multiplication by a vector operator (float version)
 
Vector3Tpl< double > operator* (const Vector3Tpl< double > &vec) const
 Multiplication by a vector operator (double version)
 
Tuple4Tpl< float > operator* (const Tuple4Tpl< float > &vec) const
 Multiplication by a 4D vector operator (float version)
 
Tuple4Tpl< double > operator* (const Tuple4Tpl< double > &vec) const
 Multiplication by a 4D vector operator (double version)
 
ccGLMatrixTpl< float > & operator+= (const ccGLMatrixTpl< float > &mat)
 (in place) Addition operator
 
ccGLMatrixTpl< float > & operator+= (const Vector3Tpl< float > &Tr)
 (in place) Forward translation operator (float version)
 
ccGLMatrixTpl< float > & operator+= (const Vector3Tpl< double > &Tr)
 (in place) Forward translation operator (double version)
 
ccGLMatrixTpl< float > & operator-= (const ccGLMatrixTpl< float > &mat)
 (in place) Difference operator
 
ccGLMatrixTpl< float > & operator-= (const Vector3Tpl< float > &Tr)
 (in place) Backward translation operator (float version)
 
ccGLMatrixTpl< float > & operator-= (const Vector3Tpl< double > &Tr)
 (in place) Backward translation operator (double version)
 
ccGLMatrixTpl< float > & operator*= (const ccGLMatrixTpl< float > &mat)
 (in place) Multiplication operator
 
float operator() (unsigned row, unsigned col) const
 Returns the value at a given position.
 
void apply (Vector3Tpl< float > &vec) const
 Applies transformation to a 3D vector (in place) - float version. More...
 
void apply (Vector3Tpl< double > &vec) const
 Applies transformation to a 3D vector (in place) - double version. More...
 
void apply (Tuple4Tpl< float > &vec) const
 Applies transformation to a 4D vector (in place) - float version. More...
 
void apply (Tuple4Tpl< double > &vec) const
 Applies transformation to a 3D vector (in place) - double version. More...
 
float applyX (const Vector3Tpl< float > &vec) const
 Get the resulting transformation along X dimension (float version)
 
double applyX (const Vector3Tpl< double > &vec) const
 Get the resulting transformation along X dimension (double version)
 
float applyX (const Tuple4Tpl< float > &vec) const
 Get the resulting transformation along X dimension (float version)
 
double applyX (const Tuple4Tpl< double > &vec) const
 Get the resulting transformation along X dimension (double version)
 
float applyY (const Vector3Tpl< float > &vec) const
 Get the resulting transformation along Y dimension (float version)
 
double applyY (const Vector3Tpl< double > &vec) const
 Get the resulting transformation along Y dimension (double version)
 
float applyY (const Tuple4Tpl< float > &vec) const
 Get the resulting transformation along Y dimension (float version)
 
double applyY (const Tuple4Tpl< double > &vec) const
 Get the resulting transformation along Y dimension (double version)
 
float applyZ (const Vector3Tpl< float > &vec) const
 Get the resulting transformation along Z dimension (float version)
 
double applyZ (const Vector3Tpl< double > &vec) const
 Get the resulting transformation along Z dimension (double version)
 
float applyZ (const Tuple4Tpl< float > &vec) const
 Get the resulting transformation along Z dimension (float version)
 
double applyZ (const Tuple4Tpl< double > &vec) const
 Get the resulting transformation along Z dimension (double version)
 
float applyW (const Tuple4Tpl< float > &vec) const
 Get the resulting transformation along the 4th dimension (float version)
 
double applyW (const Tuple4Tpl< double > &vec) const
 Get the resulting transformation along the 4th dimension (double version)
 
void applyRotation (Vector3Tpl< float > &vec) const
 Applies rotation only to a 3D vector (in place) - float version. More...
 
void applyRotation (Vector3Tpl< double > &vec) const
 Applies rotation only to a 3D vector (in place) - double version. More...
 
void applyRotation (float vec[3]) const
 Applies rotation only to a 3D vector (in place) - float version. More...
 
void applyRotation (double vec[3]) const
 Applies rotation only to a 3D vector (in place) - float version. More...
 
void shiftRotationCenter (const Vector3Tpl< float > &vec)
 Shifts rotation center. More...
 
void transpose ()
 Transposes matrix (in place)
 
ccGLMatrixTpl< float > transposed () const
 Returns transposed matrix.
 
void invert ()
 Inverts transformation.
 
ccGLMatrixTpl< float > inverse () const
 Returns inverse transformation.
 
void scaleRotation (float coef)
 Scales the rotation part of the matrix. More...
 
void scaleRow (unsigned rowIndex, float coef)
 Scales one row of the matrix. More...
 
void scaleColumn (unsigned colIndex, float coef)
 Scales one column of the matrix. More...
 
bool isSerializable () const override
 Returns whether object is serializable of not. More...
 
bool toFile (QFile &out) const override
 Saves data to binary stream. More...
 
bool fromFile (QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap) override
 Loads data from binary stream. More...
 
- Public Member Functions inherited from ccSerializableObject
virtual ~ccSerializableObject ()=default
 Destructor.
 
virtual bool isSerializable () const
 Returns whether object is serializable of not. More...
 
virtual bool toFile (QFile &out) const
 Saves data to binary stream. More...
 
virtual bool fromFile (QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap)
 Loads data from binary stream. More...
 

Static Public Member Functions

static ccIndexedTransformation Interpolate (double interpIndex, const ccIndexedTransformation &trans1, const ccIndexedTransformation &trans2)
 Interpolates two transformations at an absolute position (index) More...
 
- Static Public Member Functions inherited from ccGLMatrixTpl< float >
static ccGLMatrixTpl Interpolate (float coef, const ccGLMatrixTpl< float > &glMat1, const ccGLMatrixTpl< float > &glMat2)
 Interpolates two matrices at relative position 'coef'. More...
 
static ccGLMatrixTpl< float > FromToRotation (const Vector3Tpl< float > &from, const Vector3Tpl< float > &to)
 Creates a transformation matrix that rotates a vector to another. More...
 
static ccGLMatrixTpl< float > FromQuaternion (const Tq q[])
 Converts a quaternion to a rotation matrix. More...
 
static ccGLMatrixTpl< float > FromViewDirAndUpDir (const Vector3Tpl< float > &forward, const Vector3Tpl< float > &up)
 Generates a 'viewing' matrix from a looking vector and a 'up' direction. More...
 
static ccGLMatrixTpl< float > FromString (const QString &matText, bool &success)
 Converts a 'text' matrix to a ccGLMatrix. More...
 
- Static Public Member Functions inherited from ccSerializableObject
static bool WriteError ()
 Sends a custom error message (write error) and returns 'false'. More...
 
static bool ReadError ()
 Sends a custom error message (read error) and returns 'false'. More...
 
static bool MemoryError ()
 Sends a custom error message (not enough memory) and returns 'false'. More...
 
static bool CorruptError ()
 Sends a custom error message (corrupted file) and returns 'false'. More...
 

Protected Attributes

double m_index
 Associated index (e.g. timestamp)
 
- Protected Attributes inherited from ccGLMatrixTpl< float >
float m_mat [OPENGL_MATRIX_SIZE]
 Internal 4x4 GL-style matrix data.
 

Additional Inherited Members

- Public Types inherited from ccSerializableObject
enum  DeserializationFlags { DF_POINT_COORDS_64_BITS = 1 , DF_SCALAR_VAL_32_BITS = 2 }
 Deserialization flags (bit-field) More...
 
typedef QMultiMap< unsigned, unsigned > LoadedIDMap
 Map of loaded unique IDs (old ID --> new ID)
 
- Protected Member Functions inherited from ccGLMatrixTpl< float >
void internalRescale ()
 Transfers the homogenous coordinate (scale) to the whole matrix.
 

Detailed Description

A 4x4 'transformation' matrix (column major order) associated to an index (typically a timestamp)

Constructor & Destructor Documentation

◆ ccIndexedTransformation() [1/3]

ccIndexedTransformation::ccIndexedTransformation ( )

Default constructor.

Matrix is set to identity (see ccGLMatrix::toIdentity) by default. Index is set to zero by default.

◆ ccIndexedTransformation() [2/3]

ccIndexedTransformation::ccIndexedTransformation ( const ccGLMatrix matrix)

Constructor from a transformation matrix.

Index is set to zero by default.

Parameters
matrixtransformation matrix

◆ ccIndexedTransformation() [3/3]

ccIndexedTransformation::ccIndexedTransformation ( const ccGLMatrix matrix,
double  index 
)

Constructor from a transformation matrix and an index.

Parameters
matrixtransformation matrix
indexassociated index (e.g. timestamp)

Member Function Documentation

◆ fromAsciiFile()

bool ccIndexedTransformation::fromAsciiFile ( QString  filename)
overridevirtual

Loads matrix from an ASCII file.

Parameters
filenameinput file name

Reimplemented from ccGLMatrixTpl< float >.

◆ fromFile()

bool ccIndexedTransformation::fromFile ( QFile &  in,
short  dataVersion,
int  flags,
LoadedIDMap oldToNewIDMap 
)
overridevirtual

Loads data from binary stream.

Parameters
ininput file (already opened)
dataVersionfile version
flagsdeserialization flags (see ccSerializableObject::DeserializationFlags)
oldToNewIDMapmap to link old IDs with new IDs
Returns
success

Reimplemented from ccSerializableObject.

◆ Interpolate()

ccIndexedTransformation ccIndexedTransformation::Interpolate ( double  interpIndex,
const ccIndexedTransformation trans1,
const ccIndexedTransformation trans2 
)
static

Interpolates two transformations at an absolute position (index)

Warning: interpolation index must lie between the two input matrices indexes!

Parameters
interpIndexinterpolation position (should be between trans1 and trans2 indexes).
trans1first transformation
trans2second transformation

◆ inverse()

ccIndexedTransformation ccIndexedTransformation::inverse ( ) const

Returns inverse transformation.

Warning: index is not modified by this operation.

◆ isSerializable()

bool ccIndexedTransformation::isSerializable ( ) const
inlineoverridevirtual

Returns whether object is serializable of not.

Reimplemented from ccSerializableObject.

◆ operator*=()

ccIndexedTransformation & ccIndexedTransformation::operator*= ( const ccGLMatrix mat)

(in place) Multiplication by a ccGLMatrix operator

Warning: index is not modified by this operation.

◆ operator+=()

ccIndexedTransformation & ccIndexedTransformation::operator+= ( const CCVector3 &  T)

Multiplication operator.

(in place) Multiplication operator Warning: index is not modified by this operation. (in place) Translation operator Warning: index is not modified by this operation.

◆ operator-=()

ccIndexedTransformation & ccIndexedTransformation::operator-= ( const CCVector3 &  T)

(in place) Translation operator

Warning: index is not modified by this operation.

◆ toAsciiFile()

bool ccIndexedTransformation::toAsciiFile ( QString  filename,
int  precision = 12 
) const
overridevirtual

Saves matrix to an ASCII file.

Parameters
filenameoutput file name
precisionoutput digits precision

Reimplemented from ccGLMatrixTpl< float >.

◆ toFile()

bool ccIndexedTransformation::toFile ( QFile &  out) const
overridevirtual

Saves data to binary stream.

Parameters
outoutput file (already opened)
Returns
success

Reimplemented from ccSerializableObject.

◆ transposed()

ccIndexedTransformation ccIndexedTransformation::transposed ( ) const

Returns transposed transformation.

Warning: index is not modified by this operation.


The documentation for this class was generated from the following files: