Alexandre B A Villares 2021-06-15 23:49:53 -03:00
rodzic 490e3a8699
commit 2105d1e285
2 zmienionych plików z 50 dodań i 0 usunięć

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 520 KiB

Wyświetl plik

@ -0,0 +1,50 @@
from villares.line_geometry import draw_poly
def setup():
size(600, 600, P3D)
def draw():
background(100)
translate(300, 300)
if mousePressed:
rotateY(mouseX / 100.0)
translate(-150, -150)
face_a = stair_face(10, 30, 30, 5, 0)
draw_poly(face_a)
face_b = stair_face(10, 30, 30, 30, 100)
draw_poly(face_b)
for pair_a, pair_b in zip(edge_pair(face_a), edge_pair(face_b)):
p1, p2 = pair_a
p3, p4 = pair_b
beginShape()
vertex(*p1)
vertex(*p2)
vertex(*p4)
vertex(*p3)
endShape(CLOSE)
def edge_pair(poly_points):
return zip(poly_points,
poly_points[1:] + [poly_points[0]])
def stair_face(num_degraus, pisada, espelho, espessura, z):
pontos = []
x = y = 0
for _ in range(num_degraus):
pontos.append((x, y, z))
pontos.append((x + pisada, y, z))
x += pisada
y += espelho
pontos.append((x, y, z))
x -= espessura
pontos.append((x, y, z))
y -= (espelho - espessura)
for _ in range(num_degraus - 1):
pontos.append((x, y, z))
pontos.append((x - pisada, y, z))
x -= pisada
y -= espelho
pontos.append((x, y, z))
pontos.append((x - pisada + espessura, y, z))
return pontos