const char *__doc_igl_principal_curvature = R"igl_Qu8mg5v7(// Compute the principal curvature directions and magnitude of the given triangle mesh // DerivedV derived from vertex positions matrix type: i.e. MatrixXd // DerivedF derived from face indices matrix type: i.e. MatrixXi // Inputs: // V eigen matrix #V by 3 // F #F by 3 list of mesh faces (must be triangles) // radius controls the size of the neighbourhood used, 1 = average edge lenght // // Outputs: // PD1 #V by 3 maximal curvature direction for each vertex. // PD2 #V by 3 minimal curvature direction for each vertex. // PV1 #V by 1 maximal curvature value for each vertex. // PV2 #V by 1 minimal curvature value for each vertex. // // See also: average_onto_faces, average_onto_vertices // // This function has been developed by: Nikolas De Giorgis, Luigi Rocca and Enrico Puppo. // The algorithm is based on: // Efficient Multi-scale Curvature and Crease Estimation // Daniele Panozzo, Enrico Puppo, Luigi Rocca // GraVisMa, 2010)igl_Qu8mg5v7"; const char *__doc_igl_local_basis = R"igl_Qu8mg5v7(// Compute a local orthogonal reference system for each triangle in the given mesh // Templates: // DerivedV derived from vertex positions matrix type: i.e. MatrixXd // DerivedF derived from face indices matrix type: i.e. MatrixXi // Inputs: // V eigen matrix #V by 3 // F #F by 3 list of mesh faces (must be triangles) // Outputs: // B1 eigen matrix #F by 3, each vector is tangent to the triangle // B2 eigen matrix #F by 3, each vector is tangent to the triangle and perpendicular to B1 // B3 eigen matrix #F by 3, normal of the triangle // // See also: adjacency_matrix)igl_Qu8mg5v7"; const char *__doc_igl_signed_distance = R"igl_Qu8mg5v7(// Computes signed distance to a mesh // // Inputs: // P #P by 3 list of query point positions // V #V by 3 list of vertex positions // F #F by ss list of triangle indices, ss should be 3 unless sign_type == // SIGNED_DISTANCE_TYPE_UNSIGNED // sign_type method for computing distance _sign_ S // Outputs: // S #P list of smallest signed distances // I #P list of facet indices corresponding to smallest distances // C #P by 3 list of closest points // N #P by 3 list of closest normals (only set if // sign_type=SIGNED_DISTANCE_TYPE_PSEUDONORMAL) // // Known bugs: This only computes distances to triangles. So unreferenced // vertices and degenerate triangles are ignored.)igl_Qu8mg5v7"; const char *__doc_igl_signed_distance_pseudonormal = R"igl_Qu8mg5v7(// Computes signed distance to mesh // // Inputs: // tree AABB acceleration tree (see AABB.h) // F #F by 3 list of triangle indices // FN #F by 3 list of triangle normals // VN #V by 3 list of vertex normals (ANGLE WEIGHTING) // EN #E by 3 list of edge normals (UNIFORM WEIGHTING) // EMAP #F*3 mapping edges in F to E // q Query point // Returns signed distance to mesh //)igl_Qu8mg5v7"; const char *__doc_igl_signed_distance_winding_number = R"igl_Qu8mg5v7(// Inputs: // tree AABB acceleration tree (see cgal/point_mesh_squared_distance.h) // hier Winding number evaluation hierarchy // q Query point // Returns signed distance to mesh)igl_Qu8mg5v7"; const char *__doc_igl_triangle_triangulate = R"igl_Qu8mg5v7(// Triangulate the interior of a polygon using the triangle library. // // Inputs: // V #V by 2 list of 2D vertex positions // E #E by 2 list of vertex ids forming unoriented edges of the boundary of the polygon // H #H by 2 coordinates of points contained inside holes of the polygon // flags string of options pass to triangle (see triangle documentation) // Outputs: // V2 #V2 by 2 coordinates of the vertives of the generated triangulation // F2 #F2 by 3 list of indices forming the faces of the generated triangulation // // TODO: expose the option to prevent Steiner points on the boundary //)igl_Qu8mg5v7"; const char *__doc_igl_embree_ambient_occlusion = R"igl_Qu8mg5v7(// Compute ambient occlusion per given point // // Inputs: // ei EmbreeIntersector containing (V,F) // P #P by 3 list of origin points // N #P by 3 list of origin normals // Outputs: // S #P list of ambient occlusion values between 1 (fully occluded) and // 0 (not occluded) //)igl_Qu8mg5v7"; const char *__doc_igl_cotmatrix = R"igl_Qu8mg5v7(// Constructs the cotangent stiffness matrix (discrete laplacian) for a given // mesh (V,F). // // Templates: // DerivedV derived type of eigen matrix for V (e.g. derived from // MatrixXd) // DerivedF derived type of eigen matrix for F (e.g. derived from // MatrixXi) // Scalar scalar type for eigen sparse matrix (e.g. double) // Inputs: // V #V by dim list of mesh vertex positions // F #F by simplex_size list of mesh faces (must be triangles) // Outputs: // L #V by #V cotangent matrix, each row i corresponding to V(i,:) // // See also: adjacency_matrix // // Note: This Laplacian uses the convention that diagonal entries are // **minus** the sum of off-diagonal entries. The diagonal entries are // therefore in general negative and the matrix is **negative** semi-definite // (immediately, -L is **positive** semi-definite) // // Known bugs: off by 1e-16 on regular grid. I think its a problem of // arithmetic order in cotmatrix_entries.h: C(i,e) = (arithmetic)/dblA/4)igl_Qu8mg5v7"; const char *__doc_igl_floor = R"igl_Qu8mg5v7(// Floor a given matrix to nearest integers // // Inputs: // X m by n matrix of scalars // Outputs: // Y m by n matrix of floored integers)igl_Qu8mg5v7"; const char *__doc_igl_slice = R"igl_Qu8mg5v7(// Act like the matlab X(row_indices,col_indices) operator, where // row_indices, col_indices are non-negative integer indices. // // Inputs: // X m by n matrix // R list of row indices // C list of column indices // Output: // Y #R by #C matrix // // See also: slice_mask)igl_Qu8mg5v7"; const char *__doc_igl_per_face_normals = R"igl_Qu8mg5v7(// Compute face normals via vertex position list, face list // Inputs: // V #V by 3 eigen Matrix of mesh vertex 3D positions // F #F by 3 eigen Matrix of face (triangle) indices // Z 3 vector normal given to faces with degenerate normal. // Output: // N #F by 3 eigen Matrix of mesh face (triangle) 3D normals // // Example: // // Give degenerate faces (1/3,1/3,1/3)^0.5 // per_face_normals(V,F,Vector3d(1,1,1).normalized(),N);)igl_Qu8mg5v7"; const char *__doc_igl_per_face_normals_stable = R"igl_Qu8mg5v7(// Special version where order of face indices is guaranteed not to effect // output.)igl_Qu8mg5v7"; const char *__doc_igl_quad_planarity = R"igl_Qu8mg5v7(// Compute planarity of the faces of a quad mesh // Inputs: // V #V by 3 eigen Matrix of mesh vertex 3D positions // F #F by 4 eigen Matrix of face (quad) indices // Output: // P #F by 1 eigen Matrix of mesh face (quad) planarities //)igl_Qu8mg5v7"; const char *__doc_igl_readOFF = R"igl_Qu8mg5v7(// Read a mesh from an ascii obj file, filling in vertex positions, normals // and texture coordinates. Mesh may have faces of any number of degree // // Templates: // Scalar type for positions and vectors (will be read as double and cast // to Scalar) // Index type for indices (will be read as int and cast to Index) // Inputs: // str path to .obj file // Outputs: // V double matrix of vertex positions #V by 3 // F #F list of face indices into vertex positions // TC double matrix of texture coordinats #TC by 2 // FTC #F list of face indices into vertex texture coordinates // N double matrix of corner normals #N by 3 // FN #F list of face indices into vertex normals // Returns true on success, false on errors)igl_Qu8mg5v7"; const char *__doc_igl_per_vertex_normals = R"igl_Qu8mg5v7(// Compute vertex normals via vertex position list, face list // Inputs: // V #V by 3 eigen Matrix of mesh vertex 3D positions // F #F by 3 eigne Matrix of face (triangle) indices // weighting Weighting type // Output: // N #V by 3 eigen Matrix of mesh vertex 3D normals)igl_Qu8mg5v7"; const char *__doc_igl_sortrows = R"igl_Qu8mg5v7(// Act like matlab's [Y,I] = sortrows(X) // // Templates: // DerivedX derived scalar type, e.g. MatrixXi or MatrixXd // DerivedI derived integer type, e.g. MatrixXi // Inputs: // X m by n matrix whose entries are to be sorted // ascending sort ascending (true, matlab default) or descending (false) // Outputs: // Y m by n matrix whose entries are sorted (**should not** be same // reference as X) // I m list of indices so that // Y = X(I,:);)igl_Qu8mg5v7"; const char *__doc_igl_barycenter = R"igl_Qu8mg5v7(// Computes the barycenter of every simplex // // Inputs: // V #V x dim matrix of vertex coordinates // F #F x simplex_size matrix of indices of simplex corners into V // Output: // BC #F x dim matrix of 3d vertices //)igl_Qu8mg5v7"; const char *__doc_igl_jet = R"igl_Qu8mg5v7(// JET like MATLAB's jet // // Inputs: // m number of colors // Outputs: // J m by list of RGB colors between 0 and 1 // //#ifndef IGL_NO_EIGEN // void jet(const int m, Eigen::MatrixXd & J); //#endif // Wrapper for directly computing [r,g,b] values for a given factor f between // 0 and 1 // // Inputs: // f factor determining color value as if 0 was min and 1 was max // Outputs: // r red value // g green value // b blue value)igl_Qu8mg5v7"; const char *__doc_igl_cat = R"igl_Qu8mg5v7(// Perform concatenation of a two matrices along a single dimension // If dim == 1, then C = [A;B]. If dim == 2 then C = [A B] // // Template: // Scalar scalar data type for sparse matrices like double or int // Mat matrix type for all matrices (e.g. MatrixXd, SparseMatrix) // MatC matrix type for ouput matrix (e.g. MatrixXd) needs to support // resize // Inputs: // A first input matrix // B second input matrix // dim dimension along which to concatenate, 0 or 1 // Outputs: // C output matrix // )igl_Qu8mg5v7"; const char *__doc_igl_eigs = R"igl_Qu8mg5v7(See eigs for the documentation.)igl_Qu8mg5v7"; const char *__doc_igl_per_corner_normals = R"igl_Qu8mg5v7(// Compute vertex normals via vertex position list, face list // Inputs: // V #V by 3 eigen Matrix of mesh vertex 3D positions // F #F by 3 eigne Matrix of face (triangle) indices // corner_threshold threshold in degrees on sharp angles // Output: // CN #F*3 by 3 eigen Matrix of mesh vertex 3D normals, where the normal // for corner F(i,j) is at CN(i*3+j,:) )igl_Qu8mg5v7"; const char *__doc_igl_massmatrix = R"igl_Qu8mg5v7(// Constructs the mass (area) matrix for a given mesh (V,F). // // Templates: // DerivedV derived type of eigen matrix for V (e.g. derived from // MatrixXd) // DerivedF derived type of eigen matrix for F (e.g. derived from // MatrixXi) // Scalar scalar type for eigen sparse matrix (e.g. double) // Inputs: // V #V by dim list of mesh vertex positions // F #F by simplex_size list of mesh faces (must be triangles) // type one of the following ints: // MASSMATRIX_TYPE_BARYCENTRIC barycentric // MASSMATRIX_TYPE_VORONOI voronoi-hybrid {default} // MASSMATRIX_TYPE_FULL full {not implemented} // Outputs: // M #V by #V mass matrix // // See also: adjacency_matrix //)igl_Qu8mg5v7"; const char *__doc_igl_unproject_onto_mesh = R"igl_Qu8mg5v7(// Unproject a screen location (using current opengl viewport, projection, and // model view) to a 3D position _onto_ a given mesh, if the ray through the // given screen location (x,y) _hits_ the mesh. // // Inputs: // pos screen space coordinates // model model matrix // proj projection matrix // viewport vieweport vector // V #V by 3 list of mesh vertex positions // F #F by 3 list of mesh triangle indices into V // Outputs: // fid id of the first face hit // bc barycentric coordinates of hit // Returns true if there's a hit)igl_Qu8mg5v7"; const char *__doc_igl_colon = R"igl_Qu8mg5v7(// Colon operator like matlab's colon operator. Enumerats values between low // and hi with step step. // Templates: // L should be a eigen matrix primitive type like int or double // S should be a eigen matrix primitive type like int or double // H should be a eigen matrix primitive type like int or double // T should be a eigen matrix primitive type like int or double // Inputs: // low starting value if step is valid then this is *always* the first // element of I // step step difference between sequential elements returned in I, // remember this will be cast to template T at compile time. If lowhi then step must be negative. // Otherwise I will be set to empty. // hi ending value, if (hi-low)%step is zero then this will be the last // element in I. If step is positive there will be no elements greater // than hi, vice versa if hi smoothness only, 1->constraints only) // Outputs: // R #F by 3 the representative vectors of the interpolated field // S #V by 1 the singularity index for each vertex (0 = regular))igl_Qu8mg5v7";