diff options
Diffstat (limited to 'geometry.py')
-rw-r--r-- | geometry.py | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/geometry.py b/geometry.py index 9ef49bc..b08de54 100644 --- a/geometry.py +++ b/geometry.py @@ -39,16 +39,9 @@ class Mesh(object): return np.min(self.vertices, axis=0), np.max(self.vertices, axis=0) def remove_duplicate_vertices(self): - unique_vertices = list(unique_everseen(map(tuple, self.vertices))) - - if len(unique_vertices) == len(self.vertices): - return - - for i in range(len(self.triangles)): - for j in range(3): - self.triangles[i,j] = unique_vertices.index(tuple(self.vertices[self.triangles[i,j]])) - - self.vertices = np.array(unique_vertices) + unique_vertices, inverse = np.unique(self.vertices.view([('', self.vertices.dtype)]*self.vertices.shape[1]), return_inverse=True) + self.vertices = unique_vertices.view(self.vertices.dtype).reshape((unique_vertices.shape[0], self.vertices.shape[1])) + self.triangles = np.vectorize(lambda i: inverse[i])(self.triangles) def assemble(self, key=slice(None), group=True): if group: |