diff options
author | Stan Seibert <stan@mtrr.org> | 2011-08-12 20:21:54 -0400 |
---|---|---|
committer | Stan Seibert <stan@mtrr.org> | 2011-08-12 20:21:54 -0400 |
commit | 47738282858a7f30acef633ed0de2a6e933e9c7f (patch) | |
tree | 2e0f8ac477d590f82d2c924fd9207c06c4a37d2e | |
parent | 955bebbc1d6121823f4376115a070112ede7bcbe (diff) | |
parent | 8328b6e53f51974afb4b22c8a84e4d0a99cf162b (diff) | |
download | chroma-47738282858a7f30acef633ed0de2a6e933e9c7f.tar.gz chroma-47738282858a7f30acef633ed0de2a6e933e9c7f.tar.bz2 chroma-47738282858a7f30acef633ed0de2a6e933e9c7f.zip |
Merge
-rw-r--r-- | geometry.py | 13 | ||||
-rw-r--r-- | make.py | 3 |
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: @@ -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) |