Esempio n. 1
0
def get_first_plane(vertex, faces):
    """ First plane: Find the plane which center is closest to the vertex """
    min_dist = sys.float_info.max
    min_idx = None
    for idx, face in enumerate(faces):
        dist = vm.dist_point_to_point(vertex, face._center)
        if dist < min_dist:
            min_idx = idx
            min_dist = dist
    # print(f'ref_plane #1: {min_idx} -> ref: {faces[min_idx]._id}')
    return min_idx
Esempio n. 2
0
    for face in dt.exportTriangles():
        obj_model.add_face([vertices3d[face[0]], vertices3d[face[1]], vertices3d[face[2]]])

    # calculate heights depending on point density
    obj_model._update()
    v_heights = []
    for idx, vertex in enumerate(obj_model._vertices):
        vertex_conntected = []
        connected_faces = obj_model.get_faces_with_vertex(idx)
        for face in connected_faces:
            for edge in face._edges:
                if edge.v0_id == idx:
                    vertex_conntected.append(tuple([idx, edge.v1_id]))
                elif edge.v1_id == idx:
                    vertex_conntected.append(tuple([idx, edge.v0_id]))
        dist = 0
        for c in vertex_conntected:
            dist = dist + VecMath.dist_point_to_point(obj_model._vertices[c[0]], obj_model._vertices[c[1]])
        v_heights.append(dist / float(len(vertex_conntected)))

    min_z = min(v_heights)
    max_z = max(v_heights)
    f = 1. / (max_z)

    for idx, vertex in enumerate(obj_model._vertices):
        obj_model._vertices[idx][VecMath._Z] = (1. - ((v_heights[idx]-min_z) / max_z)) * 100
        print(obj_model._vertices[idx][VecMath._Z])

    # export to obj file
    obj_model._update()
    ObjExporter.write(obj_model, f'./export/_delanay2d.obj')