summaryrefslogtreecommitdiff
path: root/geometry.py
diff options
context:
space:
mode:
Diffstat (limited to 'geometry.py')
-rw-r--r--geometry.py13
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: