Go to the documentation of this file.
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
Mat4 inverse(T tolerance=0) const
Definition: Mat4.h:531
VecType
Definition: Types.h:532
Mat4 transpose() const
Definition: Mat4.h:518
Definition: Exceptions.h:91
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:177
Vec3< double > Vec3d
Definition: Vec3.h:689
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:125
Mat4< double > Mat4d
Definition: Mat4.h:1361
Definition: Exceptions.h:40
#define OPENVDB_THROW(exception, message)
Definition: Exceptions.h:109