kopia lustrzana https://github.com/villares/sketch-a-day
main
rodzic
490e3a8699
commit
2105d1e285
Plik binarny nie jest wyświetlany.
Po Szerokość: | Wysokość: | Rozmiar: 520 KiB |
|
@ -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
|
Ładowanie…
Reference in New Issue