Skip to content

Instantly share code, notes, and snippets.

@zeffii
Forked from anonymous/dynamic_polysphere.py
Created May 29, 2013 14:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zeffii/5670846 to your computer and use it in GitHub Desktop.
Save zeffii/5670846 to your computer and use it in GitHub Desktop.
def make_polysphere(self):
radius = self.radius
verts_per_side = self.verts_per_side
edge_per_side = verts_per_side - 1
edge_length = (radius * 2) / edge_per_side
idx = 0
Verts, Faces = [], []
eulers = [(0.0, 0.0, 0.0),(0.0, math.pi, 0.0)]
for face, side_rotation in enumerate(eulers):
for vert_u in range(verts_per_side):
for vert_v in range(verts_per_side):
p_x = -radius + (edge_length * vert_u)
p_y = -radius + (edge_length * vert_v)
p_z = -radius
point = Vector((p_x, p_y, p_z))
xz_euler = Euler(side_rotation, 'XYZ')
point.rotate(xz_euler)
Verts.append(point)
for i in range(edge_per_side**2):
x = (idx % edge_per_side)
y = math.floor(idx / edge_per_side)
level = x + (y*verts_per_side) + (face*verts_per_side)
idx1 = level
idx2 = level + 1
idx3 = level + verts_per_side + 1
idx4 = level + verts_per_side
Faces.append([idx1, idx2, idx3, idx4])
idx += 1
return Verts, Faces
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment