sample_edges.cpp 578 B

1234567891011121314151617181920212223242526
  1. #include "sample_edges.h"
  2. IGL_INLINE void igl::sample_edges(
  3. const Eigen::MatrixXd & V,
  4. const Eigen::MatrixXi & E,
  5. const int k,
  6. Eigen::MatrixXd & S)
  7. {
  8. using namespace Eigen;
  9. // Resize output
  10. S.resize(V.rows() + k * E.rows(),V.cols());
  11. // Copy V at front of S
  12. S.block(0,0,V.rows(),V.cols()) = V;
  13. // loop over edges
  14. for(int i = 0;i<E.rows();i++)
  15. {
  16. VectorXd tip = V.row(E(i,0));
  17. VectorXd tail = V.row(E(i,1));
  18. for(int s=0;s<k;s++)
  19. {
  20. double f = double(s+1)/double(k+1);
  21. S.row(V.rows()+k*i+s) = f*tail + (1.0-f)*tip;
  22. }
  23. }
  24. }