remove triangles with no area
This commit is contained in:
parent
73f27300ca
commit
685a11cde2
1 changed files with 9 additions and 4 deletions
|
@ -505,6 +505,9 @@ class LevelGeometries:
|
||||||
|
|
||||||
return vertex_values
|
return vertex_values
|
||||||
|
|
||||||
|
def _filter_faces(self, faces):
|
||||||
|
return faces[np.all(np.any(faces[:, (0, 1, 2), :]-faces[:, (2, 0, 1), :], axis=2), axis=1)]
|
||||||
|
|
||||||
def _create_polyhedron(self, faces, lower, upper, top=True, sides=True, bottom=True):
|
def _create_polyhedron(self, faces, lower, upper, top=True, sides=True, bottom=True):
|
||||||
if not any(faces):
|
if not any(faces):
|
||||||
return ()
|
return ()
|
||||||
|
@ -556,22 +559,24 @@ class LevelGeometries:
|
||||||
|
|
||||||
# top faces
|
# top faces
|
||||||
if top:
|
if top:
|
||||||
mesh.top = np.dstack((self.vertices[geom_faces], upper[geom_faces]))
|
mesh.top = self._filter_faces(np.dstack((self.vertices[geom_faces], upper[geom_faces])))
|
||||||
|
|
||||||
# side faces
|
# side faces
|
||||||
if sides:
|
if sides:
|
||||||
mesh.sides = np.vstack((
|
mesh.sides = self._filter_faces(np.vstack((
|
||||||
# upper
|
# upper
|
||||||
np.dstack((self.vertices[boundaries[:, (1, 0, 0)]],
|
np.dstack((self.vertices[boundaries[:, (1, 0, 0)]],
|
||||||
np.hstack((upper[boundaries[:, (1, 0)]], lower[boundaries[:, (0,)]])))),
|
np.hstack((upper[boundaries[:, (1, 0)]], lower[boundaries[:, (0,)]])))),
|
||||||
# lower
|
# lower
|
||||||
np.dstack((self.vertices[boundaries[:, (0, 1, 1)]],
|
np.dstack((self.vertices[boundaries[:, (0, 1, 1)]],
|
||||||
np.hstack((lower[boundaries[:, (0, 1)]], upper[boundaries[:, (1,)]]))))
|
np.hstack((lower[boundaries[:, (0, 1)]], upper[boundaries[:, (1,)]]))))
|
||||||
))
|
)))
|
||||||
|
|
||||||
# bottom faces
|
# bottom faces
|
||||||
if bottom:
|
if bottom:
|
||||||
mesh.bottom = np.dstack((self.vertices[np.flip(geom_faces, axis=1)], lower[geom_faces]))
|
mesh.bottom = self._filter_faces(
|
||||||
|
np.dstack((self.vertices[np.flip(geom_faces, axis=1)], lower[geom_faces]))
|
||||||
|
)
|
||||||
|
|
||||||
return tuple((mesh, ))
|
return tuple((mesh, ))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue