Description

Polar decomposition of a general 3x3 matrix.

This class is wrapped by ChPolarDecomposition. It is based on VEGA (J. Barbic).

#include <ChPolarDecomposition.h>

Static Public Member Functions

static double Compute (const double *M, double *Q, double *S, double tolerance=1E-6)
 Computes the Polar Decomposition of a general 3x3 matrix M. More...
 

Static Protected Member Functions

static double oneNorm (const double *A)
 
static double infNorm (const double *A)
 
static void crossProduct (const double *a, const double *b, double *c)
 

Member Function Documentation

double chrono::fea::PolarDecomposition::Compute ( const double *  M,
double *  Q,
double *  S,
double  tolerance = 1E-6 
)
static

Computes the Polar Decomposition of a general 3x3 matrix M.

M = Q * S. M is 3x3 input matrix. Q is 3x3 orthogonal output matrix, Q Q^T = Q^T Q = I. S is 3x3 symmetric output matrix. Note: det(Q)=sgn(det(M)); this sign can be 1 or -1, depending on M. M is not modified. All matrices are row-major.