| 
| void  | frame_field (const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::VectorXi &b, const Eigen::MatrixXd &bc1, const Eigen::MatrixXd &bc2, Eigen::MatrixXd &FF1, Eigen::MatrixXd &FF2) | 
|   | Generate a piecewise-constant frame-field field from a sparse set of constraints on faces using the algorithm proposed in: Frame Fields: Anisotropic and Non-Orthogonal Cross Fields Daniele Panozzo, Enrico Puppo, Marco Tarini, Olga Sorkine-Hornung, ACM Transactions on Graphics (SIGGRAPH, 2014)  
  | 
|   | 
| template<typename DerivedV , typename DerivedF , typename DerivedU >  | 
| void  | miq (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, const Eigen::PlainObjectBase< DerivedV > &PD1, const Eigen::PlainObjectBase< DerivedV > &PD2, Eigen::PlainObjectBase< DerivedU > &UV, Eigen::PlainObjectBase< DerivedF > &FUV, double gradientSize=30.0, double stiffness=5.0, bool directRound=false, unsigned int iter=5, unsigned int localIter=5, bool doRound=true, bool singularityRound=true, const std::vector< int > &roundVertices=std::vector< int >(), const std::vector< std::vector< int > > &hardFeatures=std::vector< std::vector< int > >()) | 
|   | Global seamless parametrization aligned with a given per-face Jacobian (PD1, PD2).  
  | 
|   | 
| template<typename DerivedV , typename DerivedF , typename DerivedU >  | 
| void  | miq (const Eigen::PlainObjectBase< DerivedV > &V, const Eigen::PlainObjectBase< DerivedF > &F, const Eigen::PlainObjectBase< DerivedV > &PD1_combed, const Eigen::PlainObjectBase< DerivedV > &PD2_combed, const Eigen::Matrix< int, Eigen::Dynamic, 3 > &mismatch, const Eigen::Matrix< int, Eigen::Dynamic, 1 > &singular, const Eigen::Matrix< int, Eigen::Dynamic, 3 > &seams, Eigen::PlainObjectBase< DerivedU > &UV, Eigen::PlainObjectBase< DerivedF > &FUV, double gradientSize=30.0, double stiffness=5.0, bool directRound=false, unsigned int iter=5, unsigned int localIter=5, bool doRound=true, bool singularityRound=true, const std::vector< int > &roundVertices=std::vector< int >(), const std::vector< std::vector< int > > &hardFeatures=std::vector< std::vector< int > >()) | 
|   | miq Helper function that allows to directly provided pre-combed bisectors for an already cut mesh  
  | 
|   | 
| void  | nrosy (const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::VectorXi &b, const Eigen::MatrixXd &bc, const Eigen::VectorXi &b_soft, const Eigen::VectorXd &w_soft, const Eigen::MatrixXd &bc_soft, int N, double soft, Eigen::MatrixXd &R, Eigen::VectorXd &S) | 
|   | Generate a N-RoSy field from a sparse set of constraints.  
  | 
|   | 
| void  | nrosy (const Eigen::MatrixXd &V, const Eigen::MatrixXi &F, const Eigen::VectorXi &b, const Eigen::MatrixXd &bc, int N, Eigen::MatrixXd &R, Eigen::VectorXd &S) | 
|   | This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.  
  | 
|   | 
template<typename DerivedV , typename DerivedF , typename DerivedU > 
      
        
          | void igl::copyleft::comiso::miq  | 
          ( | 
          const Eigen::PlainObjectBase< DerivedV > &  | 
          V,  | 
        
        
           | 
           | 
          const Eigen::PlainObjectBase< DerivedF > &  | 
          F,  | 
        
        
           | 
           | 
          const Eigen::PlainObjectBase< DerivedV > &  | 
          PD1,  | 
        
        
           | 
           | 
          const Eigen::PlainObjectBase< DerivedV > &  | 
          PD2,  | 
        
        
           | 
           | 
          Eigen::PlainObjectBase< DerivedU > &  | 
          UV,  | 
        
        
           | 
           | 
          Eigen::PlainObjectBase< DerivedF > &  | 
          FUV,  | 
        
        
           | 
           | 
          double  | 
          gradientSize = 30.0,  | 
        
        
           | 
           | 
          double  | 
          stiffness = 5.0,  | 
        
        
           | 
           | 
          bool  | 
          directRound = false,  | 
        
        
           | 
           | 
          unsigned int  | 
          iter = 5,  | 
        
        
           | 
           | 
          unsigned int  | 
          localIter = 5,  | 
        
        
           | 
           | 
          bool  | 
          doRound = true,  | 
        
        
           | 
           | 
          bool  | 
          singularityRound = true,  | 
        
        
           | 
           | 
          const std::vector< int > &  | 
          roundVertices = std::vector< int >(),  | 
        
        
           | 
           | 
          const std::vector< std::vector< int > > &  | 
          hardFeatures = std::vector< std::vector< int > >()  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Global seamless parametrization aligned with a given per-face Jacobian (PD1, PD2). 
The algorithm is based on "Mixed-Integer Quadrangulation" by D. Bommes, H. Zimmer, L. Kobbelt ACM SIGGRAPH 2009, Article No. 77 (http://dl.acm.org/citation.cfm?id=1531383) We thank Nico Pietroni for providing a reference implementation of MIQ on which our code is based.
- Parameters
 - 
  
    | [in] | V | #V by 3 list of mesh vertex 3D positions  | 
    | [in] | F | #F by 3 list of faces indices in V  | 
    | [in] | PD1 | #V by 3 first line of the Jacobian per triangle  | 
    | [in] | PD2 | #V by 3 second line of the Jacobian per triangle (optional, if empty it will be a vector in the tangent plane orthogonal to PD1)  | 
    | [in] | gradientSize | global scaling for the gradient (controls the quads resolution)  | 
    | [in] | stiffness | weight for the stiffness iterations (Reserved but not used!)  | 
    | [in] | directRound | greedily round all integer variables at once (greatly improves optimization speed but lowers quality)  | 
    | [in] | iter | stiffness iterations (0 = no stiffness)  | 
    | [in] | localIter | number of local iterations for the integer rounding  | 
    | [in] | doRound | enables the integer rounding (disabling it could be useful for debugging)  | 
    | [in] | singularityRound | set true/false to decide if the singularities' coordinates should be rounded to the nearest integers  | 
    | [in] | roundVertices | id of additional vertices that should be snapped to integer coordinates  | 
    | [in] | hardFeatures | #H by 2 list of pairs of vertices that belongs to edges that should be snapped to integer coordinates  | 
    | [out] | UV | #UV by 2 list of vertices in 2D  | 
    | [out] | FUV | #FUV by 3 list of face indices in UV  |