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);
134 #endif // OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED
Mat4< double > Mat4d
Definition: Mat4.h:1334
Vec3< double > Vec3d
Definition: Vec3.h:662
#define OPENVDB_THROW(exception, message)
Definition: Exceptions.h:82
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:102
Definition: Exceptions.h:13
VecType
Definition: Types.h:482
Mat4 transpose() const
Definition: Mat4.h:491
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:154
Definition: Exceptions.h:64
Mat4 inverse(T tolerance=0) const
Definition: Mat4.h:504