summaryrefslogtreecommitdiff
path: root/geometry.py
diff options
context:
space:
mode:
authorStan Seibert <stan@mtrr.org>2011-08-12 20:21:54 -0400
committerStan Seibert <stan@mtrr.org>2011-08-12 20:21:54 -0400
commit47738282858a7f30acef633ed0de2a6e933e9c7f (patch)
tree2e0f8ac477d590f82d2c924fd9207c06c4a37d2e /geometry.py
parent955bebbc1d6121823f4376115a070112ede7bcbe (diff)
parent8328b6e53f51974afb4b22c8a84e4d0a99cf162b (diff)
downloadchroma-47738282858a7f30acef633ed0de2a6e933e9c7f.tar.gz
chroma-47738282858a7f30acef633ed0de2a6e933e9c7f.tar.bz2
chroma-47738282858a7f30acef633ed0de2a6e933e9c7f.zip
Merge
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: