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)
示例#2
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()):
示例#5
0
            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()
示例#6
0
    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())