OpenVDB  1.2.0
Classes | Namespaces | Constant Groups | Functions
Mat.h File Reference
#include <math.h>
#include <cstdlib>
#include <cstdio>
#include <assert.h>
#include <iostream>
#include <sstream>
#include <boost/format.hpp>
#include <openvdb/Exceptions.h>
#include "Math.h"

Go to the source code of this file.

Classes

class  Mat< SIZE, T >
 
class  Quat< T >
 
class  Vec3< T >
 

Namespaces

 openvdb
 
 openvdb::v1_2_0
 
 openvdb::v1_2_0::math
 

Constant Groups

 openvdb
 
 openvdb::v1_2_0
 
 openvdb::v1_2_0::math
 

Functions

template<class MatType >
MatType rotation (const Quat< typename MatType::value_type > &q, typename MatType::value_type eps=1.0e-8)
 
template<class MatType >
MatType rotation (Axis axis, typename MatType::value_type angle)
 Set the matrix to a rotation about the given axis. More...
 
template<class MatType >
MatType rotation (const Vec3< typename MatType::value_type > &_axis, typename MatType::value_type angle)
 
template<class MatType >
Vec3< typename
MatType::value_type > 
eulerAngles (const MatType &mat, RotationOrder rotationOrder, typename MatType::value_type eps=1.0e-8)
 
template<class MatType >
MatType rotation (const Vec3< typename MatType::value_type > &_v1, const Vec3< typename MatType::value_type > &_v2, typename MatType::value_type eps=1.0e-8)
 Set the matrix to a rotation that maps v1 onto v2 about the cross product of v1 and v2. More...
 
template<class MatType >
MatType scale (const Vec3< typename MatType::value_type > &scaling)
 
template<class MatType >
Vec3< typename
MatType::value_type > 
getScale (const MatType &mat)
 
template<class MatType >
MatType unit (const MatType &mat, typename MatType::value_type eps=1.0e-8)
 
template<class MatType >
MatType unit (const MatType &in, typename MatType::value_type eps, Vec3< typename MatType::value_type > &scaling)
 
template<class MatType >
MatType shear (Axis axis0, Axis axis1, typename MatType::value_type shear)
 Set the matrix to a shear along axis0 by a fraction of axis1. More...
 
template<class MatType >
MatType skew (const Vec3< typename MatType::value_type > &skew)
 
template<class MatType >
MatType aim (const Vec3< typename MatType::value_type > &direction, const Vec3< typename MatType::value_type > &vertical)
 
template<class MatType >
static MatType & padMat4 (MatType &dest)
 
template<typename MatType >
void sqrtSolve (const MatType &aA, MatType &aB, double aTol=0.01)
 
template<typename MatType >
void powSolve (const MatType &aA, MatType &aB, double aPower, double aTol=0.01)
 
template<typename MatType >
bool isIdentity (const MatType &m)
 
template<typename MatType >
bool isInvertible (const MatType &m)
 
template<typename MatType >
bool isSymmetric (const MatType &m)
 
template<typename MatType >
bool isUnitary (const MatType &m)
 Determine is a matrix is Unitary (i.e. rotation or reflection) More...
 
template<typename MatType >
bool isDiagonal (const MatType &mat)
 Determine if a matrix is diagonal. More...
 
template<typename MatType >
MatType::ValueType lInfinityNorm (const MatType &matrix)
 takes a n by n matrix and returns the L_Infinty norm More...
 
template<typename MatType >
MatType::ValueType lOneNorm (const MatType &matrix)
 takes an n by n matrix and returns the L_1 norm More...
 
template<typename MatType >
bool polarDecomposition (const MatType &input, MatType &unitary, MatType &positive_hermitian, unsigned int MAX_ITERATIONS=100)
 Decompose an invertible 3x3 matrix into Unitary following a symmetric matrix (postitive semi-defininte Hermitian): i.e. M = U * S if the Unitary.det() = 1 it is a rotation, otherwise Unitary.det() = -1, meaning there is some part reflection. See "Computing the polar decomposition with applications" Higham, N.J. - SIAM J. Sc. Stat Comput 7(4):1160-1174. More...
 

Detailed Description

Author
Joshua Schpok