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
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')