33 #ifndef OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED 34 #define OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED 40 #include <type_traits> 51 template<
typename Gr
idType>
65 template<
typename TreeIterT>
void operator()(
const TreeIterT& it)
const 68 it.setValue(mat.transformH(v));
76 template<
typename TreeIterT>
80 it.setValue(mat.transform3x3(v));
88 template<
typename TreeIterT>
92 v = mat.transform3x3(v);
103 template<
typename Gr
idType>
inline 104 typename std::enable_if<!VecTraits<typename GridType::ValueType>::IsVec,
void>::type
105 doTransformVectors(GridType&,
const Mat4d&)
111 template<
typename Gr
idType>
inline 112 typename std::enable_if<VecTraits<typename GridType::ValueType>::IsVec,
void>::type
113 doTransformVectors(GridType& grid,
const Mat4d& mat)
115 if (!grid.isInWorldSpace())
return;
117 const VecType vecType = grid.getVectorType();
126 foreach(grid.beginValueAll(), MatMulNormalize(invmat));
128 foreach(grid.beginValueAll(), MatMul(invmat));
134 foreach(grid.beginValueAll(), MatMul(mat));
138 foreach(grid.beginValueAll(), HomogeneousMatMul(mat));
150 template<
typename Gr
idType>
154 doTransformVectors<GridType>(grid, mat);
161 #endif // OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED
VecType
Definition: Types.h:305
Mat4< double > Mat4d
Definition: Mat4.h:1361
#define OPENVDB_THROW(exception, message)
Definition: Exceptions.h:109
Vec3< double > Vec3d
Definition: Vec3.h:679
Definition: Exceptions.h:91
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:136
Definition: Exceptions.h:40
Mat4 inverse(T tolerance=0) const
Definition: Mat4.h:531
Mat4 transpose() const
Definition: Mat4.h:518
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:188