kopia lustrzana https://github.com/villares/sketch-a-day
97 wiersze
2.3 KiB
Python
97 wiersze
2.3 KiB
Python
"""
|
|
Alexandre B A Villares - https://abav.lugaralgum.com/sketch-a-day
|
|
|
|
Box with round holes
|
|
"""
|
|
|
|
add_library('GifAnimation')
|
|
from gif_exporter import gif_export
|
|
from glue_tab import glue_tab
|
|
|
|
faces = []
|
|
THICK = 20
|
|
|
|
def setup():
|
|
size(500, 500, P3D)
|
|
hint(ENABLE_DEPTH_SORT)
|
|
|
|
|
|
def draw():
|
|
background(200, 210, 220)
|
|
|
|
# Face
|
|
fill(255, 100)
|
|
face_2D(250, 100, 250, 150, 15)
|
|
# Caixa
|
|
translate(250, 300)
|
|
rotateX(QUARTER_PI + frameCount/50.)
|
|
caixa(250, 150, 100, 15)
|
|
|
|
if frameCount/50. < TWO_PI:
|
|
if frameCount % 2:
|
|
gif_export(GifMaker, filename=SKETCH_NAME)
|
|
else:
|
|
exit()
|
|
|
|
|
|
def face_2D(x, y, w, h, e=0, closed=True):
|
|
mw, mh = w/2., h/2.
|
|
pushMatrix()
|
|
translate(x, y)
|
|
beginShape()
|
|
vertex(-mw, -mh)
|
|
vertex(+mw, -mh)
|
|
vertex(+mw, +mh)
|
|
vertex(-mw, +mh)
|
|
if e > 0 and mw - e > 0 and mh - e > 0:
|
|
beginContour()
|
|
np = 24
|
|
for i in range(np):
|
|
ang = TWO_PI / np * i
|
|
x = sin(ang) * e
|
|
y = cos(ang) * e
|
|
vertex(x, y)
|
|
endContour()
|
|
if closed:
|
|
endShape(CLOSE)
|
|
else:
|
|
endShape()
|
|
popMatrix()
|
|
|
|
|
|
def caixa(w, h, d, e=0):
|
|
mw, mh, md = w/2., h/2., d/2.
|
|
translate(0, 0, -md) # base
|
|
face_2D(0, 0, w, h, e)
|
|
translate(0, 0, d) # topo
|
|
face_2D(0, 0, w, h, e)
|
|
translate(0, 0, -md) # volta
|
|
rotateY(HALF_PI)
|
|
translate(0, 0, -mw) # lateral e
|
|
face_2D(0, 0, d, h, e)
|
|
translate(0, 0, w) # lateral d
|
|
face_2D(0, 0, d, h, e)
|
|
translate(0, 0, -mw) # volta
|
|
rotateY(-HALF_PI) # volta
|
|
rotateX(HALF_PI)
|
|
translate(0, 0, -mh) # lateral e
|
|
face_2D(0, 0, w, d, e)
|
|
translate(0, 0, h) # lateral d
|
|
face_2D(0, 0, w, d, e)
|
|
translate(0, 0, -mw) # volta
|
|
rotateX(-HALF_PI)
|
|
|
|
# print text to add to the project's README.md
|
|
def settings():
|
|
from os import path
|
|
global SKETCH_NAME
|
|
SKETCH_NAME = path.basename(sketchPath())
|
|
OUTPUT = ".gif"
|
|
println(
|
|
"""
|
|

|
|
|
|
[{0}](https://github.com/villares/sketch-a-day/tree/master/2019/{0}) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
|
|
""".format(SKETCH_NAME, OUTPUT)
|
|
)
|