Go to the documentation of this file.
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
VecType
Definition: Types.h:482
@ VEC_CONTRAVARIANT_ABSOLUTE
Definition: Types.h:487
@ VEC_INVARIANT
Definition: Types.h:483
Mat4< double > Mat4d
Definition: Mat4.h:1334
Vec3< double > Vec3d
Definition: Vec3.h:662
@ VEC_CONTRAVARIANT_RELATIVE
Definition: Types.h:486
Mat4 transpose() const
Definition: Mat4.h:491
Definition: Exceptions.h:64
@ VEC_COVARIANT_NORMALIZE
Definition: Types.h:485
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:154
@ VEC_COVARIANT
Definition: Types.h:484
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:102
Mat4 inverse(T tolerance=0) const
Definition: Mat4.h:504
Definition: Exceptions.h:13
#define OPENVDB_THROW(exception, message)
Definition: Exceptions.h:82