igl.readOFF("../../tutorial/shared/cheburashka.off",V,F) # Two fixed points # Left hand, left foot b = igl.eigen.MatrixXi([[4331],[5957]]) bc = igl.eigen.MatrixXd([[1],[-1]]) # Construct Laplacian and mass matrix L = igl.eigen.SparseMatrixd() M = igl.eigen.SparseMatrixd() Minv = igl.eigen.SparseMatrixd() Q = igl.eigen.SparseMatrixd() igl.cotmatrix(V,F,L) igl.massmatrix(V,F,igl.MASSMATRIX_TYPE_VORONOI,M) igl.invert_diag(M,Minv) # Bi-Laplacian Q = L * (Minv * L); # Zero linear term B = igl.eigen.MatrixXd.Zero(V.rows(),1); Z = igl.eigen.MatrixXd() Z_const = igl.eigen.MatrixXd() # Alternative, short hand mqwf = igl.min_quad_with_fixed_data() # Empty constraints Beq = igl.eigen.MatrixXd()
V = igl.eigen.MatrixXd() F = igl.eigen.MatrixXi() igl.read_triangle_mesh(TUTORIAL_SHARED_PATH + "fertility.off", V, F) # Alternative discrete mean curvature HN = igl.eigen.MatrixXd() L = igl.eigen.SparseMatrixd() M = igl.eigen.SparseMatrixd() Minv = igl.eigen.SparseMatrixd() igl.cotmatrix(V, F, L) igl.massmatrix(V, F, igl.MASSMATRIX_TYPE_VORONOI, M) igl.invert_diag(M, Minv) # Laplace-Beltrami of position HN = -Minv * (L * V) # Extract magnitude as mean curvature H = HN.rowwiseNorm() # Compute curvature directions via quadric fitting PD1 = igl.eigen.MatrixXd() PD2 = igl.eigen.MatrixXd() PV1 = igl.eigen.MatrixXd() PV2 = igl.eigen.MatrixXd() igl.principal_curvature(V, F, PD1, PD2, PV1, PV2)