dqs.h 808 B

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef IGL_DQS_H
  2. #define IGL_DQS_H
  3. #include "igl_inline.h"
  4. #include <vector>
  5. #include <Eigen/Core>
  6. namespace igl
  7. {
  8. // Dual quaternion skinning
  9. //
  10. // Inputs:
  11. // V #V by 3 list of rest positions
  12. // W #W by #C list of weights
  13. // vQ #C list of rotation quaternions
  14. // vT #C list of translation vectors
  15. // Outputs:
  16. // U #V by 3 list of new positions
  17. template <
  18. typename DerivedV,
  19. typename DerivedW,
  20. typename Q,
  21. typename QAlloc,
  22. typename T,
  23. typename DerivedU>
  24. IGL_INLINE void dqs(
  25. const Eigen::PlainObjectBase<DerivedV> & V,
  26. const Eigen::PlainObjectBase<DerivedW> & W,
  27. const std::vector<Q,QAlloc> & vQ,
  28. const std::vector<T> & vT,
  29. Eigen::PlainObjectBase<DerivedU> & U);
  30. };
  31. #ifdef IGL_HEADER_ONLY
  32. # include "dqs.cpp"
  33. #endif
  34. #endif