Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _recursive_split(self, verts, faces, n_level):
if n_level <= 1:
return verts, faces
else:
verts, faces = Rays_SubDivide.split(verts, faces)
return self._recursive_split(verts, faces, n_level - 1)
split_edges[edge] = len(verts) - 1
return split_edges[edge]
for v1, v2, v3 in faces0:
ind1 = _add(v1, v2)
ind2 = _add(v2, v3)
ind3 = _add(v3, v1)
faces.append([v1, ind1, ind3])
faces.append([v2, ind2, ind1])
faces.append([v3, ind3, ind2])
faces.append([ind1, ind2, ind3])
return verts, faces
class Rays_Tetra(Rays_SubDivide):
"""
Subdivision of a tetrahedron
n_level = 1 -> normal tetrahedron (4 vertices)
n_level = 2 -> 1x subdivision (10 vertices)
n_level = 3 -> 2x subdivision (34 vertices)
...
"""
def base_polyhedron(self):
verts = np.array([
[np.sqrt(8. / 9), 0., -1. / 3],
[-np.sqrt(2. / 9), np.sqrt(2. / 3), -1. / 3],
[-np.sqrt(2. / 9), -np.sqrt(2. / 3), -1. / 3],
[0., 0., 1.]
])
def base_polyhedron(self):
verts = np.array([
[np.sqrt(8. / 9), 0., -1. / 3],
[-np.sqrt(2. / 9), np.sqrt(2. / 3), -1. / 3],
[-np.sqrt(2. / 9), -np.sqrt(2. / 3), -1. / 3],
[0., 0., 1.]
])
faces = [[0, 1, 2],
[0, 3, 1],
[0, 2, 3],
[1, 3, 2]]
return verts, faces
class Rays_Octo(Rays_SubDivide):
"""
Subdivision of a tetrahedron
n_level = 1 -> normal Octahedron (6 vertices)
n_level = 2 -> 1x subdivision (18 vertices)
n_level = 3 -> 2x subdivision (66 vertices)
"""
def base_polyhedron(self):
verts = np.array([
[0, 0, 1],
[0, 1, 0],
[0, 0, -1],
[0, -1, 0],
[1, 0, 0],