(wires)
| 85 | return wires; |
| 86 | |
| 87 | def uniform_sampling(wires): |
| 88 | bbox_min, bbox_max = wires.bbox; |
| 89 | tol = norm(bbox_max - bbox_min) / 1000; |
| 90 | |
| 91 | wire_lengths = wires.wire_lengths; |
| 92 | vertices = wires.vertices; |
| 93 | edges = wires.edges; |
| 94 | |
| 95 | vertex_count = wires.num_vertices; |
| 96 | sampled_vertices = [wires.vertices]; |
| 97 | sampled_edges = []; |
| 98 | for i in range(wires.num_edges): |
| 99 | if wire_lengths[i] <= tol: |
| 100 | sampled_edges.append(edges[i]); |
| 101 | continue; |
| 102 | v0 = vertices[edges[i,0]]; |
| 103 | v1 = vertices[edges[i,1]]; |
| 104 | num_samples = math.ceil(wire_lengths[i] / tol); |
| 105 | samples = np.array([ |
| 106 | v0 * (1-s/num_samples) + v1 * s/num_samples |
| 107 | for s in range(1,int(num_samples)) ]); |
| 108 | new_edges = [[vertex_count + j-1, vertex_count + j] |
| 109 | for j in range(int(num_samples))]; |
| 110 | new_edges[0][0] = edges[i,0]; |
| 111 | new_edges[-1][1] = edges[i,1]; |
| 112 | |
| 113 | sampled_vertices.append(samples); |
| 114 | sampled_edges.append(np.array(new_edges)); |
| 115 | |
| 116 | vertex_count += num_samples-1; |
| 117 | |
| 118 | wires.load(np.vstack(sampled_vertices), np.vstack(sampled_edges)); |
| 119 | return wires; |
| 120 | |
| 121 | def conforming_triangulate(wires, logger, auto_hole_detection): |
| 122 | bbox_min, bbox_max = wires.bbox; |
no test coverage detected