6 #ifndef OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED
7 #define OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED
13 #include <type_traits>
24 template<
typename Gr
idType>
38 template<
typename TreeIterT>
void operator()(
const TreeIterT& it)
const
41 it.setValue(mat.transformH(v));
49 template<
typename TreeIterT>
53 it.setValue(mat.transform3x3(v));
61 template<
typename TreeIterT>
65 v = mat.transform3x3(v);
76 template<
typename Gr
idType>
inline
77 typename std::enable_if<!VecTraits<typename GridType::ValueType>::IsVec,
void>::type
78 doTransformVectors(GridType&,
const Mat4d&)
84 template<
typename Gr
idType>
inline
85 typename std::enable_if<VecTraits<typename GridType::ValueType>::IsVec,
void>::type
86 doTransformVectors(GridType& grid,
const Mat4d& mat)
88 if (!grid.isInWorldSpace())
return;
90 const VecType vecType = grid.getVectorType();
99 foreach(grid.beginValueAll(), MatMulNormalize(invmat));
101 foreach(grid.beginValueAll(), MatMul(invmat));
107 foreach(grid.beginValueAll(), MatMul(mat));
111 foreach(grid.beginValueAll(), HomogeneousMatMul(mat));
123 template<
typename Gr
idType>
127 doTransformVectors<GridType>(grid, mat);
Definition: openvdb/Exceptions.h:64
Mat4 inverse(T tolerance=0) const
Definition: Mat4.h:499
Mat4 transpose() const
Definition: Mat4.h:486
Vec3< double > Vec3d
Definition: Vec3.h:668
Mat4< double > Mat4d
Definition: Mat4.h:1368
VecType
Definition: openvdb/Types.h:343
@ VEC_CONTRAVARIANT_ABSOLUTE
Definition: openvdb/Types.h:348
@ VEC_CONTRAVARIANT_RELATIVE
Definition: openvdb/Types.h:347
@ VEC_COVARIANT
Definition: openvdb/Types.h:345
@ VEC_COVARIANT_NORMALIZE
Definition: openvdb/Types.h:346
@ VEC_INVARIANT
Definition: openvdb/Types.h:344
Definition: openvdb/Exceptions.h:13
#define OPENVDB_THROW(exception, message)
Definition: openvdb/Exceptions.h:74
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:101
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:153