MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / uniform_sampling

Function uniform_sampling

scripts/repousse.py:87–119  ·  view source on GitHub ↗
(wires)

Source from the content-addressed store, hash-verified

85 return wires;
86
87def 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
121def conforming_triangulate(wires, logger, auto_hole_detection):
122 bbox_min, bbox_max = wires.bbox;

Callers 1

Calls 1

loadMethod · 0.80

Tested by

no test coverage detected