V = igl.eigen.MatrixXd() F = igl.eigen.MatrixXi() igl.readOFF("../tutorial/shared/decimated-knight.off",V,F) # 100 random indicies into rows of F I = igl.eigen.MatrixXi() igl.floor((0.5*(igl.eigen.MatrixXd.Random(100,1)+1.)*F.rows()),I); # 50 random indicies into rows of I J = igl.eigen.MatrixXi() igl.floor((0.5*(igl.eigen.MatrixXd.Random(50,1)+1.)*I.rows()),J) # K = I(J); K = igl.eigen.MatrixXi() igl.slice(I,J,K) # default green for all faces #C = p2e(np.array([[0.4,0.8,0.3]])).replicate(F.rows(),1) C = igl.eigen.MatrixXd([[0.4,0.8,0.3]]).replicate(F.rows(),1) # Red for each in K R = igl.eigen.MatrixXd([[1.0,0.3,0.3]]).replicate(K.rows(),1) # C(K,:) = R igl.slice_into(R,K,1,C) # Plot the mesh with pseudocolors viewer = igl.viewer.Viewer() viewer.data.set_mesh(V, F) viewer.data.set_colors(C) viewer.launch()
# List of all vertex indices vall = igl.eigen.MatrixXi() vin = igl.eigen.MatrixXi() igl.coloni(0,V.rows()-1,vall) # List of interior indices igl.setdiff(vall,b,vin,IA) # Construct and slice up Laplacian L = igl.eigen.SparseMatrixd() L_in_in = igl.eigen.SparseMatrixd() L_in_b = igl.eigen.SparseMatrixd() igl.cotmatrix(V,F,L) igl.slice(L,vin,vin,L_in_in) igl.slice(L,vin,b,L_in_b) # Dirichlet boundary conditions from z-coordinate bc = igl.eigen.MatrixXd() Z = V.col(2) igl.slice(Z,b,bc) # Solve PDE solver = igl.eigen.SimplicialLLTsparse(-L_in_in) Z_in = solver.solve(L_in_b*bc) # slice into solution igl.slice_into(Z_in,vin,Z) # Alternative, short hand
# List of all vertex indices vall = igl.eigen.MatrixXi() vin = igl.eigen.MatrixXi() igl.coloni(0, V.rows() - 1, vall) # List of interior indices igl.setdiff(vall, b, vin, IA) # Construct and slice up Laplacian L = igl.eigen.SparseMatrixd() L_in_in = igl.eigen.SparseMatrixd() L_in_b = igl.eigen.SparseMatrixd() igl.cotmatrix(V, F, L) igl.slice(L, vin, vin, L_in_in) igl.slice(L, vin, b, L_in_b) # Dirichlet boundary conditions from z-coordinate bc = igl.eigen.MatrixXd() Z = V.col(2) igl.slice(Z, b, bc) # Solve PDE solver = igl.eigen.SimplicialLLTsparse(-L_in_in) Z_in = solver.solve(L_in_b * bc) # slice into solution igl.slice_into(Z_in, vin, Z) # Alternative, short hand
V = igl.eigen.MatrixXd() F = igl.eigen.MatrixXi() igl.readOFF("../../tutorial/shared/decimated-knight.off", V, F) # 100 random indicies into rows of F I = igl.eigen.MatrixXi() igl.floor((0.5 * (igl.eigen.MatrixXd.Random(100, 1) + 1.) * F.rows()), I) # 50 random indicies into rows of I J = igl.eigen.MatrixXi() igl.floor((0.5 * (igl.eigen.MatrixXd.Random(50, 1) + 1.) * I.rows()), J) # K = I(J); K = igl.eigen.MatrixXi() igl.slice(I, J, K) # default green for all faces #C = p2e(np.array([[0.4,0.8,0.3]])).replicate(F.rows(),1) C = igl.eigen.MatrixXd([[0.4, 0.8, 0.3]]).replicate(F.rows(), 1) # Red for each in K R = igl.eigen.MatrixXd([[1.0, 0.3, 0.3]]).replicate(K.rows(), 1) # C(K,:) = R igl.slice_into(R, K, 1, C) # Plot the mesh with pseudocolors viewer = igl.viewer.Viewer() viewer.data.set_mesh(V, F) viewer.data.set_colors(C) viewer.launch()