HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ImathMatrixAlgo.h File Reference
#include "ImathExport.h"
#include "ImathMatrix.h"
#include "ImathQuat.h"
#include "ImathEuler.h"
#include "ImathExc.h"
#include "ImathVec.h"
#include "ImathLimits.h"
#include "ImathNamespace.h"
#include <math.h>
+ Include dependency graph for ImathMatrixAlgo.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

template<class T >
bool extractScaling (const Matrix44< T > &mat, Vec3< T > &scl, bool exc=true)
 
template<class T >
Matrix44< T > sansScaling (const Matrix44< T > &mat, bool exc=true)
 
template<class T >
bool removeScaling (Matrix44< T > &mat, bool exc=true)
 
template<class T >
bool extractScalingAndShear (const Matrix44< T > &mat, Vec3< T > &scl, Vec3< T > &shr, bool exc=true)
 
template<class T >
Matrix44< T > sansScalingAndShear (const Matrix44< T > &mat, bool exc=true)
 
template<class T >
void sansScalingAndShear (Matrix44< T > &result, const Matrix44< T > &mat, bool exc=true)
 
template<class T >
bool removeScalingAndShear (Matrix44< T > &mat, bool exc=true)
 
template<class T >
bool extractAndRemoveScalingAndShear (Matrix44< T > &mat, Vec3< T > &scl, Vec3< T > &shr, bool exc=true)
 
template<class T >
void extractEulerXYZ (const Matrix44< T > &mat, Vec3< T > &rot)
 
template<class T >
void extractEulerZYX (const Matrix44< T > &mat, Vec3< T > &rot)
 
template<class T >
Quat< T > extractQuat (const Matrix44< T > &mat)
 
template<class T >
bool extractSHRT (const Matrix44< T > &mat, Vec3< T > &s, Vec3< T > &h, Vec3< T > &r, Vec3< T > &t, bool exc, typename Euler< T >::Order rOrder)
 
template<class T >
bool extractSHRT (const Matrix44< T > &mat, Vec3< T > &s, Vec3< T > &h, Vec3< T > &r, Vec3< T > &t, bool exc=true)
 
template<class T >
bool extractSHRT (const Matrix44< T > &mat, Vec3< T > &s, Vec3< T > &h, Euler< T > &r, Vec3< T > &t, bool exc=true)
 
template<class T >
bool checkForZeroScaleInRow (const T &scl, const Vec3< T > &row, bool exc=true)
 
template<class T >
Matrix44< T > outerProduct (const Vec4< T > &a, const Vec4< T > &b)
 
template<class T >
Matrix44< T > rotationMatrix (const Vec3< T > &fromDirection, const Vec3< T > &toDirection)
 
template<class T >
Matrix44< T > rotationMatrixWithUpDir (const Vec3< T > &fromDir, const Vec3< T > &toDir, const Vec3< T > &upDir)
 
template<class T >
void alignZAxisWithTargetDir (Matrix44< T > &result, Vec3< T > targetDir, Vec3< T > upDir)
 
template<class T >
Matrix44< T > computeLocalFrame (const Vec3< T > &p, const Vec3< T > &xDir, const Vec3< T > &normal)
 
template<class T >
Matrix44< T > addOffset (const Matrix44< T > &inMat, const Vec3< T > &tOffset, const Vec3< T > &rOffset, const Vec3< T > &sOffset, const Vec3< T > &ref)
 
template<class T >
Matrix44< T > computeRSMatrix (bool keepRotateA, bool keepScaleA, const Matrix44< T > &A, const Matrix44< T > &B)
 
template<class T >
bool extractScaling (const Matrix33< T > &mat, Vec2< T > &scl, bool exc=true)
 
template<class T >
Matrix33< T > sansScaling (const Matrix33< T > &mat, bool exc=true)
 
template<class T >
bool removeScaling (Matrix33< T > &mat, bool exc=true)
 
template<class T >
bool extractScalingAndShear (const Matrix33< T > &mat, Vec2< T > &scl, T &h, bool exc=true)
 
template<class T >
Matrix33< T > sansScalingAndShear (const Matrix33< T > &mat, bool exc=true)
 
template<class T >
bool removeScalingAndShear (Matrix33< T > &mat, bool exc=true)
 
template<class T >
bool extractAndRemoveScalingAndShear (Matrix33< T > &mat, Vec2< T > &scl, T &shr, bool exc=true)
 
template<class T >
void extractEuler (const Matrix33< T > &mat, T &rot)
 
template<class T >
bool extractSHRT (const Matrix33< T > &mat, Vec2< T > &s, T &h, T &r, Vec2< T > &t, bool exc=true)
 
template<class T >
bool checkForZeroScaleInRow (const T &scl, const Vec2< T > &row, bool exc=true)
 
template<class T >
Matrix33< T > outerProduct (const Vec3< T > &a, const Vec3< T > &b)
 
template<class T >
Matrix44< T > addOffset (const Matrix44< T > &inMat, const Vec3< T > &tOffset, const Vec3< T > &rOffset, const Vec3< T > &sOffset, const Matrix44< T > &ref)
 
template<typename T >
IMATH_INTERNAL_NAMESPACE::M44d procrustesRotationAndTranslation (const IMATH_INTERNAL_NAMESPACE::Vec3< T > *A, const IMATH_INTERNAL_NAMESPACE::Vec3< T > *B, const T *weights, const size_t numPoints, const bool doScaling=false)
 
template<typename T >
IMATH_INTERNAL_NAMESPACE::M44d procrustesRotationAndTranslation (const IMATH_INTERNAL_NAMESPACE::Vec3< T > *A, const IMATH_INTERNAL_NAMESPACE::Vec3< T > *B, const size_t numPoints, const bool doScaling=false)
 
template<typename T >
void jacobiSVD (const IMATH_INTERNAL_NAMESPACE::Matrix33< T > &A, IMATH_INTERNAL_NAMESPACE::Matrix33< T > &U, IMATH_INTERNAL_NAMESPACE::Vec3< T > &S, IMATH_INTERNAL_NAMESPACE::Matrix33< T > &V, const T tol=IMATH_INTERNAL_NAMESPACE::limits< T >::epsilon(), const bool forcePositiveDeterminant=false)
 
template<typename T >
void jacobiSVD (const IMATH_INTERNAL_NAMESPACE::Matrix44< T > &A, IMATH_INTERNAL_NAMESPACE::Matrix44< T > &U, IMATH_INTERNAL_NAMESPACE::Vec4< T > &S, IMATH_INTERNAL_NAMESPACE::Matrix44< T > &V, const T tol=IMATH_INTERNAL_NAMESPACE::limits< T >::epsilon(), const bool forcePositiveDeterminant=false)
 
template<typename T >
void jacobiEigenSolver (Matrix33< T > &A, Vec3< T > &S, Matrix33< T > &V, const T tol)
 
template<typename T >
void jacobiEigenSolver (Matrix33< T > &A, Vec3< T > &S, Matrix33< T > &V)
 
template<typename T >
void jacobiEigenSolver (Matrix44< T > &A, Vec4< T > &S, Matrix44< T > &V, const T tol)
 
template<typename T >
void jacobiEigenSolver (Matrix44< T > &A, Vec4< T > &S, Matrix44< T > &V)
 
template<typename TM , typename TV >
void maxEigenVector (TM &A, TV &S)
 
template<typename TM , typename TV >
void minEigenVector (TM &A, TV &S)
 

Variables

IMATH_INTERNAL_NAMESPACE_HEADER_ENTER
IMATH_EXPORT_VAR const M33f 
identity33f
 
IMATH_EXPORT_VAR const M44f identity44f
 
IMATH_EXPORT_VAR const M33d identity33d
 
IMATH_EXPORT_VAR const M44d identity44d
 

Function Documentation

template<class T >
Matrix44<T> addOffset ( const Matrix44< T > &  inMat,
const Vec3< T > &  tOffset,
const Vec3< T > &  rOffset,
const Vec3< T > &  sOffset,
const Vec3< T > &  ref 
)
template<class T >
Matrix44<T> addOffset ( const Matrix44< T > &  inMat,
const Vec3< T > &  tOffset,
const Vec3< T > &  rOffset,
const Vec3< T > &  sOffset,
const Matrix44< T > &  ref 
)

Definition at line 982 of file ImathMatrixAlgo.h.

template<class T >
void alignZAxisWithTargetDir ( Matrix44< T > &  result,
Vec3< T >  targetDir,
Vec3< T >  upDir 
)

Definition at line 860 of file ImathMatrixAlgo.h.

template<class T >
bool checkForZeroScaleInRow ( const T &  scl,
const Vec3< T > &  row,
bool  exc = true 
)

Definition at line 786 of file ImathMatrixAlgo.h.

template<class T >
bool checkForZeroScaleInRow ( const T &  scl,
const Vec2< T > &  row,
bool  exc = true 
)

Definition at line 1283 of file ImathMatrixAlgo.h.

template<class T >
Matrix44< T > computeLocalFrame ( const Vec3< T > &  p,
const Vec3< T > &  xDir,
const Vec3< T > &  normal 
)

Definition at line 938 of file ImathMatrixAlgo.h.

template<class T >
Matrix44< T > computeRSMatrix ( bool  keepRotateA,
bool  keepScaleA,
const Matrix44< T > &  A,
const Matrix44< T > &  B 
)

Definition at line 1015 of file ImathMatrixAlgo.h.

template<class T >
bool extractAndRemoveScalingAndShear ( Matrix44< T > &  mat,
Vec3< T > &  scl,
Vec3< T > &  shr,
bool  exc = true 
)

Definition at line 467 of file ImathMatrixAlgo.h.

template<class T >
bool extractAndRemoveScalingAndShear ( Matrix33< T > &  mat,
Vec2< T > &  scl,
T &  shr,
bool  exc = true 
)

Definition at line 1148 of file ImathMatrixAlgo.h.

template<class T >
void extractEuler ( const Matrix33< T > &  mat,
T &  rot 
)

Definition at line 1237 of file ImathMatrixAlgo.h.

template<class T >
void extractEulerXYZ ( const Matrix44< T > &  mat,
Vec3< T > &  rot 
)

Definition at line 582 of file ImathMatrixAlgo.h.

template<class T >
void extractEulerZYX ( const Matrix44< T > &  mat,
Vec3< T > &  rot 
)

Definition at line 629 of file ImathMatrixAlgo.h.

template<class T >
Quat< T > extractQuat ( const Matrix44< T > &  mat)

Definition at line 676 of file ImathMatrixAlgo.h.

template<class T >
bool extractScaling ( const Matrix44< T > &  mat,
Vec3< T > &  scl,
bool  exc = true 
)

Definition at line 355 of file ImathMatrixAlgo.h.

template<class T >
bool extractScaling ( const Matrix33< T > &  mat,
Vec2< T > &  scl,
bool  exc = true 
)

Definition at line 1050 of file ImathMatrixAlgo.h.

template<class T >
bool extractScalingAndShear ( const Matrix44< T > &  mat,
Vec3< T > &  scl,
Vec3< T > &  shr,
bool  exc = true 
)

Definition at line 412 of file ImathMatrixAlgo.h.

template<class T >
bool extractScalingAndShear ( const Matrix33< T > &  mat,
Vec2< T > &  scl,
T &  h,
bool  exc = true 
)

Definition at line 1107 of file ImathMatrixAlgo.h.

template<class T >
bool extractSHRT ( const Matrix44< T > &  mat,
Vec3< T > &  s,
Vec3< T > &  h,
Vec3< T > &  r,
Vec3< T > &  t,
bool  exc,
typename Euler< T >::Order  rOrder 
)

Definition at line 729 of file ImathMatrixAlgo.h.

template<class T >
bool extractSHRT ( const Matrix44< T > &  mat,
Vec3< T > &  s,
Vec3< T > &  h,
Vec3< T > &  r,
Vec3< T > &  t,
bool  exc = true 
)

Definition at line 761 of file ImathMatrixAlgo.h.

template<class T >
bool extractSHRT ( const Matrix44< T > &  mat,
Vec3< T > &  s,
Vec3< T > &  h,
Euler< T > &  r,
Vec3< T > &  t,
bool  exc = true 
)

Definition at line 773 of file ImathMatrixAlgo.h.

template<class T >
bool extractSHRT ( const Matrix33< T > &  mat,
Vec2< T > &  s,
T &  h,
T &  r,
Vec2< T > &  t,
bool  exc = true 
)

Definition at line 1259 of file ImathMatrixAlgo.h.

template<typename T >
void jacobiEigenSolver ( Matrix33< T > &  A,
Vec3< T > &  S,
Matrix33< T > &  V,
const tol 
)
template<typename T >
void jacobiEigenSolver ( Matrix33< T > &  A,
Vec3< T > &  S,
Matrix33< T > &  V 
)
inline

Definition at line 1390 of file ImathMatrixAlgo.h.

template<typename T >
void jacobiEigenSolver ( Matrix44< T > &  A,
Vec4< T > &  S,
Matrix44< T > &  V,
const tol 
)
template<typename T >
void jacobiEigenSolver ( Matrix44< T > &  A,
Vec4< T > &  S,
Matrix44< T > &  V 
)
inline

Definition at line 1407 of file ImathMatrixAlgo.h.

template<typename T >
void jacobiSVD ( const IMATH_INTERNAL_NAMESPACE::Matrix33< T > &  A,
IMATH_INTERNAL_NAMESPACE::Matrix33< T > &  U,
IMATH_INTERNAL_NAMESPACE::Vec3< T > &  S,
IMATH_INTERNAL_NAMESPACE::Matrix33< T > &  V,
const tol = IMATH_INTERNAL_NAMESPACE::limits< T >::epsilon(),
const bool  forcePositiveDeterminant = false 
)
template<typename T >
void jacobiSVD ( const IMATH_INTERNAL_NAMESPACE::Matrix44< T > &  A,
IMATH_INTERNAL_NAMESPACE::Matrix44< T > &  U,
IMATH_INTERNAL_NAMESPACE::Vec4< T > &  S,
IMATH_INTERNAL_NAMESPACE::Matrix44< T > &  V,
const tol = IMATH_INTERNAL_NAMESPACE::limits< T >::epsilon(),
const bool  forcePositiveDeterminant = false 
)
template<typename TM , typename TV >
void maxEigenVector ( TM &  A,
TV &  S 
)
template<typename TM , typename TV >
void minEigenVector ( TM &  A,
TV &  S 
)
template<class T >
Matrix44< T > outerProduct ( const Vec4< T > &  a,
const Vec4< T > &  b 
)

Definition at line 807 of file ImathMatrixAlgo.h.

template<class T >
Matrix33< T > outerProduct ( const Vec3< T > &  a,
const Vec3< T > &  b 
)

Definition at line 1305 of file ImathMatrixAlgo.h.

template<typename T >
IMATH_INTERNAL_NAMESPACE::M44d procrustesRotationAndTranslation ( const IMATH_INTERNAL_NAMESPACE::Vec3< T > *  A,
const IMATH_INTERNAL_NAMESPACE::Vec3< T > *  B,
const T *  weights,
const size_t  numPoints,
const bool  doScaling = false 
)
template<typename T >
IMATH_INTERNAL_NAMESPACE::M44d procrustesRotationAndTranslation ( const IMATH_INTERNAL_NAMESPACE::Vec3< T > *  A,
const IMATH_INTERNAL_NAMESPACE::Vec3< T > *  B,
const size_t  numPoints,
const bool  doScaling = false 
)
template<class T >
bool removeScaling ( Matrix44< T > &  mat,
bool  exc = true 
)

Definition at line 391 of file ImathMatrixAlgo.h.

template<class T >
bool removeScaling ( Matrix33< T > &  mat,
bool  exc = true 
)

Definition at line 1086 of file ImathMatrixAlgo.h.

template<class T >
bool removeScalingAndShear ( Matrix44< T > &  mat,
bool  exc = true 
)

Definition at line 453 of file ImathMatrixAlgo.h.

template<class T >
bool removeScalingAndShear ( Matrix33< T > &  mat,
bool  exc = true 
)

Definition at line 1135 of file ImathMatrixAlgo.h.

template<class T >
Matrix44< T > rotationMatrix ( const Vec3< T > &  fromDirection,
const Vec3< T > &  toDirection 
)

Definition at line 817 of file ImathMatrixAlgo.h.

template<class T >
Matrix44< T > rotationMatrixWithUpDir ( const Vec3< T > &  fromDir,
const Vec3< T > &  toDir,
const Vec3< T > &  upDir 
)

Definition at line 827 of file ImathMatrixAlgo.h.

template<class T >
Matrix44< T > sansScaling ( const Matrix44< T > &  mat,
bool  exc = true 
)

Definition at line 369 of file ImathMatrixAlgo.h.

template<class T >
Matrix33< T > sansScaling ( const Matrix33< T > &  mat,
bool  exc = true 
)

Definition at line 1064 of file ImathMatrixAlgo.h.

template<class T >
Matrix44< T > sansScalingAndShear ( const Matrix44< T > &  mat,
bool  exc = true 
)

Definition at line 426 of file ImathMatrixAlgo.h.

template<class T >
void sansScalingAndShear ( Matrix44< T > &  result,
const Matrix44< T > &  mat,
bool  exc = true 
)

Definition at line 441 of file ImathMatrixAlgo.h.

template<class T >
Matrix33< T > sansScalingAndShear ( const Matrix33< T > &  mat,
bool  exc = true 
)

Definition at line 1120 of file ImathMatrixAlgo.h.

Variable Documentation

Definition at line 69 of file ImathMatrixAlgo.h.

Definition at line 70 of file ImathMatrixAlgo.h.

Definition at line 68 of file ImathMatrixAlgo.h.