summaryrefslogtreecommitdiff
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
parent955bebbc1d6121823f4376115a070112ede7bcbe (diff)
parent8328b6e53f51974afb4b22c8a84e4d0a99cf162b (diff)
downloadchroma-47738282858a7f30acef633ed0de2a6e933e9c7f.tar.gz
chroma-47738282858a7f30acef633ed0de2a6e933e9c7f.tar.bz2
chroma-47738282858a7f30acef633ed0de2a6e933e9c7f.zip
Merge
-rw-r--r--geometry.py13
-rw-r--r--make.py3
2 files changed, 4 insertions, 12 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:
diff --git a/make.py b/make.py
index 8f07b05..ed02cb1 100644
--- a/make.py
+++ b/make.py
@@ -55,8 +55,7 @@ def segmented_cylinder(radius, height=2, theta=np.pi/32, n=50):
y = np.concatenate(([-height/2.0] * n,
np.linspace(-height/2.0, height/2.0, n, endpoint=False),
[height/2.0] * (n+1)))
- #return x,y
- return rotate_extrude(x, y, theta, remove_duplicate_vertices=False)
+ return rotate_extrude(x, y, theta)
def sphere(radius=1, theta=np.pi/32):
profile_angles = np.arange(-np.pi/2, np.pi/2+theta, theta)