global z_max, z_dir, k, resolve, V, U, Z, F, b, bc if key == ord(' '): viewer.core.is_animating = not viewer.core.is_animating elif key == ord('.'): k = k + 1 k = (4 if k>4 else k) resolve = True elif key == ord(','): k = k - 1 k = (1 if k<1 else k) resolve = True return True igl.readOBJ("../../tutorial/shared/bump-domain.obj",V,F) U = igl.eigen.MatrixXd(V) # Find boundary vertices outside annulus Vrn = V.rowwiseNorm() is_outer = [Vrn[i]-1.00 > -1e-15 for i in range(0,V.rows())] is_inner = [Vrn[i]-0.15 < 1e-15 for i in range(0,V.rows())] in_b = [ is_outer[i] or is_inner[i] for i in range(0,len(is_outer))] b = igl.eigen.MatrixXi([[i for i in range(0,V.rows()) if (in_b[i])]]).transpose(); bc.resize(b.size(),1) for bi in range(0,b.size()): bc[bi] = (0.0 if is_outer[b[bi]] else 1.0)
global z_max, z_dir, k, resolve, V, U, Z, F, b, bc if key == ord(' '): viewer.core.is_animating = not viewer.core.is_animating elif key == ord('.'): k = k + 1 k = (4 if k > 4 else k) resolve = True elif key == ord(','): k = k - 1 k = (1 if k < 1 else k) resolve = True return True igl.readOBJ("../../tutorial/shared/bump-domain.obj", V, F) U = igl.eigen.MatrixXd(V) # Find boundary vertices outside annulus Vrn = V.rowwiseNorm() is_outer = [Vrn[i] - 1.00 > -1e-15 for i in range(0, V.rows())] is_inner = [Vrn[i] - 0.15 < 1e-15 for i in range(0, V.rows())] in_b = [is_outer[i] or is_inner[i] for i in range(0, len(is_outer))] b = igl.eigen.MatrixXi([[i for i in range(0, V.rows()) if (in_b[i])]]).transpose() bc.resize(b.size(), 1) for bi in range(0, b.size()):
VF.setRow(b[i],bc.block(i,n*3,1,3)) for i in range(0,samples.rows()): VF.setRow(samples[i],pvf.block(samples[i],n*3,1,3)) c = VF.rowwiseNorm() C2 = igl.eigen.MatrixXd() igl.jet(c,1,1+rand_factor,C2) viewer.data.add_edges(B - global_scale*VF, B + global_scale*VF , C2) return False # Load a mesh in OBJ format igl.readOBJ("../../tutorial/shared/lilium.obj", V, F) samples = readSamples("../../tutorial/shared/lilium.samples.0.2") # Compute local basis for faces igl.local_basis(V,F,B1,B2,B3) # Compute face barycenters igl.barycenter(V, F, B) # Compute scale for visualizing fields global_scale = 0.2*igl.avg_edge_length(V, F) # Make the example deterministic random.seed(0) viewer = igl.viewer.Viewer()
viewer.data.compute_normals() return False def key_down(viewer, key, mods): global bc_frac, bc_dir,deformation_field, V, U, V_bc, U_bc, F, b if key == ord(' '): viewer.core.is_animating = not viewer.core.is_animating return True if key == ord('D') or key == ord('d'): deformation_field = not deformation_field; return True return False igl.readOBJ("../../tutorial/shared/decimated-max.obj",V,F) U = igl.eigen.MatrixXd(V) # S(i) = j: j<0 (vertex i not in handle), j >= 0 (vertex i in handle j) S = igl.eigen.MatrixXd() igl.readDMAT("../../tutorial/shared/decimated-max-selection.dmat",S) S = S.castint() b = igl.eigen.MatrixXi([[t[0] for t in [(i,S[i]) for i in range(0,V.rows())] if t[1] >= 0]]).transpose() # Boundary conditions directly on deformed positions U_bc.resize(b.rows(),V.cols()) V_bc.resize(b.rows(),V.cols()) for bi in range(0,b.rows()):
VF.setRow(b[i], bc.block(i, n * 3, 1, 3)) for i in range(0, samples.rows()): VF.setRow(samples[i], pvf.block(samples[i], n * 3, 1, 3)) c = VF.rowwiseNorm() C2 = igl.eigen.MatrixXd() igl.jet(c, 1, 1 + rand_factor, C2) viewer.data.add_edges(B - global_scale * VF, B + global_scale * VF, C2) return False # Load a mesh in OBJ format igl.readOBJ("../../tutorial/shared/lilium.obj", V, F) samples = readSamples("../../tutorial/shared/lilium.samples.0.2") # Compute local basis for faces igl.local_basis(V, F, B1, B2, B3) # Compute face barycenters igl.barycenter(V, F, B) # Compute scale for visualizing fields global_scale = 0.2 * igl.avg_edge_length(V, F) # Make the example deterministic random.seed(0) viewer = igl.viewer.Viewer()
return False def key_down(viewer, key, mods): global bc_frac, bc_dir, deformation_field, V, U, V_bc, U_bc, F, b if key == ord(' '): viewer.core.is_animating = not viewer.core.is_animating return True if key == ord('D') or key == ord('d'): deformation_field = not deformation_field return True return False igl.readOBJ("../../tutorial/shared/decimated-max.obj", V, F) U = igl.eigen.MatrixXd(V) # S(i) = j: j<0 (vertex i not in handle), j >= 0 (vertex i in handle j) S = igl.eigen.MatrixXd() igl.readDMAT("../../tutorial/shared/decimated-max-selection.dmat", S) S = S.castint() b = igl.eigen.MatrixXi([[ t[0] for t in [(i, S[i]) for i in range(0, V.rows())] if t[1] >= 0 ]]).transpose() # Boundary conditions directly on deformed positions U_bc.resize(b.rows(), V.cols()) V_bc.resize(b.rows(), V.cols())