6#ifndef OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED 
    7#define OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED 
   25template<
typename Gr
idType>
 
   39    template<
typename TreeIterT> 
void operator()(
const TreeIterT& it)
 const 
   42        it.setValue(
mat.transformH(v));
 
 
 
   50    template<
typename TreeIterT>
 
   54        it.setValue(
mat.transform3x3(v));
 
 
 
   62    template<
typename TreeIterT>
 
   66        v = 
mat.transform3x3(v);
 
 
 
   77template<
typename Gr
idType> 
inline 
   78typename std::enable_if<!VecTraits<typename GridType::ValueType>::IsVec, 
void>::type
 
   79doTransformVectors(GridType&, 
const Mat4d&)
 
   85template<
typename Gr
idType> 
inline 
   86typename std::enable_if<VecTraits<typename GridType::ValueType>::IsVec, 
void>::type
 
   87doTransformVectors(GridType& grid, 
const Mat4d& mat)
 
   89    if (!grid.isInWorldSpace()) 
return;
 
   91    const VecType vecType = grid.getVectorType();
 
  100                foreach(grid.beginValueAll(), MatMulNormalize(invmat));
 
  102                foreach(grid.beginValueAll(), MatMul(invmat));
 
  108            foreach(grid.beginValueAll(), MatMul(mat));
 
  112            foreach(grid.beginValueAll(), HomogeneousMatMul(mat));
 
  124template<
typename Gr
idType>
 
  128    doTransformVectors<GridType>(grid, mat);
 
 
  137#ifdef OPENVDB_USE_EXPLICIT_INSTANTIATION 
  139#ifdef OPENVDB_INSTANTIATE_VECTORTRANSFORMER 
  143#define _FUNCTION(TreeT) \ 
  144    void transformVectors(Grid<TreeT>&, const Mat4d&) 
Definition Exceptions.h:64
Mat4 inverse(T tolerance=0) const
Definition Mat4.h:485
Mat4 transpose() const
Definition Mat4.h:472
bool normalize(T eps=T(1.0e-7))
this = normalized this
Definition Vec3.h:363
Vec3< double > Vec3d
Definition Vec3.h:665
Mat4< double > Mat4d
Definition Mat4.h:1355
VecType
Definition Types.h:483
@ VEC_CONTRAVARIANT_ABSOLUTE
Definition Types.h:488
@ VEC_CONTRAVARIANT_RELATIVE
Definition Types.h:487
@ VEC_COVARIANT
Definition Types.h:485
@ VEC_COVARIANT_NORMALIZE
Definition Types.h:486
@ VEC_INVARIANT
Definition Types.h:484
Definition Exceptions.h:13
#define OPENVDB_THROW(exception, message)
Definition Exceptions.h:74
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:218
#define OPENVDB_VEC3_TREE_INSTANTIATE(Function)
Definition version.h.in:164