#ifndef IGL_FIND_CROSS_FIELD_SINGULARITIES_H #define IGL_FIND_CROSS_FIELD_SINGULARITIES_H #include "igl_inline.h" #include namespace igl { //todo // Creates a quad mesh from a triangular mesh and a set of two directions // per face, using the algorithm described in the paper // "Mixed-Integer Quadrangulation" by D. Bommes, H. Zimmer, L. Kobbelt // ACM SIGGRAPH 2009, Article No. 77 (http://dl.acm.org/citation.cfm?id=1531383) // Inputs: // Vin #V by 3 eigen Matrix of mesh vertex 3D positions // F #F by 4 eigen Matrix of face (quad) indices // maxIter maximum numbers of iterations // threshold minimum allowed threshold for non-planarity // Output: // Vout #V by 3 eigen Matrix of planar mesh vertex 3D positions // template IGL_INLINE void find_cross_field_singularities(const Eigen::PlainObjectBase &V, const Eigen::PlainObjectBase &F, const Eigen::PlainObjectBase &Handle_MMatch, Eigen::PlainObjectBase &isSingularity, Eigen::PlainObjectBase &singularityIndex); // TODO: this returns singularity index modulo 4. It may need to be modified to cover indices template IGL_INLINE void find_cross_field_singularities(const Eigen::PlainObjectBase &V, const Eigen::PlainObjectBase &F, const Eigen::PlainObjectBase &PD1, const Eigen::PlainObjectBase &PD2, Eigen::PlainObjectBase &isSingularity, Eigen::PlainObjectBase &singularityIndex); } #ifdef IGL_HEADER_ONLY #include "find_cross_field_singularities.cpp" #endif #endif