kopia lustrzana https://github.com/villares/sketch-a-day
main
rodzic
c94aa13977
commit
96ceda1371
Plik binarny nie jest wyświetlany.
|
Po Szerokość: | Wysokość: | Rozmiar: 67 KiB |
|
|
@ -0,0 +1,59 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
|
||||
def casinha(x, y, tamanho):
|
||||
""" Casinha na posição x, y com largura e altura 'tamanho' """
|
||||
metade = tamanho / 2
|
||||
pushMatrix() # preserva o sistema de coordenadas atual
|
||||
translate(x, y) # translada a origem do sistema de coordenadas
|
||||
beginShape() # começa a desenhar a forma, inicia um polígono
|
||||
vertex(0, -metade)
|
||||
vertex(-metade, 0)
|
||||
vertex(-metade, metade)
|
||||
vertex(metade, metade)
|
||||
vertex(metade, 0)
|
||||
endShape(CLOSE) # encerra a forma a fechando no primeiro vértice
|
||||
popMatrix() # retorna o sistema de coordenadas anterior
|
||||
|
||||
def estrela(x_centro, y_centro, num_pontas, raio_a, raio_b):
|
||||
"""
|
||||
Desenha uma estrela com np pontas
|
||||
raio a e raio b são os raios internos e das pontas
|
||||
"""
|
||||
n = num_pontas * 2 # dobro de pontos que as pontas
|
||||
inc = radians(360. / n) # ângulo de eincremento entre os pontos
|
||||
beginShape() # começa a desenhar a forma
|
||||
ang = 0 # começando com o ângulo 0
|
||||
while ang < TWO_PI:
|
||||
x = x_centro + sin(ang) * raio_a
|
||||
y = y_centro + cos(ang) * raio_a
|
||||
vertex(x, y)
|
||||
ang += inc
|
||||
x = x_centro + sin(ang) * raio_b
|
||||
y = y_centro + cos(ang) * raio_b
|
||||
vertex(x, y)
|
||||
ang += inc
|
||||
endShape(CLOSE) # encerra uma forma fechada
|
||||
|
||||
|
||||
def olho(x, y, largura, cor=color(100)):
|
||||
""" Olho na posição x, y com largura e cor """
|
||||
pushStyle() # preserva os atributos gráficos atuais
|
||||
noStroke()
|
||||
fill(255)
|
||||
ellipse(x, y, largura, largura * .45)
|
||||
fill(cor)
|
||||
circle(x, y, largura * .4)
|
||||
fill(0)
|
||||
circle(x, y, largura * .1)
|
||||
popStyle() # retorna os atributos gráficos anteriores
|
||||
|
||||
|
||||
def grade_s(xo, yo, n, tam_total):
|
||||
tam_celula = tam_total / n
|
||||
desloc = (tam_celula - tam_total) / 2.
|
||||
for i in range(n):
|
||||
x = xo + desloc + tam_celula * i
|
||||
for j in range(n):
|
||||
y = yo + desloc + tam_celula * j
|
||||
rectMode(CENTER)
|
||||
square(x, y, tam_celula * .6)
|
||||
Plik binarny nie jest wyświetlany.
|
Po Szerokość: | Wysokość: | Rozmiar: 56 KiB |
|
|
@ -0,0 +1,63 @@
|
|||
from random import choice
|
||||
from elementos import olho, casinha, grade_s, estrela
|
||||
|
||||
def setup():
|
||||
size(600, 600)
|
||||
noLoop()
|
||||
rectMode(CENTER)
|
||||
noStroke()
|
||||
|
||||
def draw():
|
||||
background(255)
|
||||
grade(300, 300, 3, 600.)
|
||||
|
||||
def grade(xo, yo, n, tw, e=None):
|
||||
cw = tw / n
|
||||
offset = (cw - tw) / 2.
|
||||
for i in range(n):
|
||||
x = xo + offset + cw * i
|
||||
for j in range(n):
|
||||
y = yo + offset + cw * j
|
||||
o = (i + j) % 4
|
||||
if e is not None:
|
||||
element(x, y, cw, e)
|
||||
elif cw > 50 and random(10) < 5:
|
||||
grade(x, y, 3, cw)
|
||||
elif cw > 50:
|
||||
fill(255)
|
||||
grade(x, y, 3, cw, o)
|
||||
else:
|
||||
fill(0)
|
||||
noStroke()
|
||||
element(x, y, cw, o)
|
||||
|
||||
def element(x, y, w, option):
|
||||
if option == 0:
|
||||
noStroke() # desliga o traço
|
||||
fill(0) # preenchimento preto
|
||||
rect(x, y, w, w) # fundo
|
||||
olho(x, y, w / 2, 200)
|
||||
else:
|
||||
# fill(255) # preenchimento branco
|
||||
stroke(0) # traço preto
|
||||
strokeWeight(w / 20) # espessura do traço
|
||||
# if option == 1 and w > 50:
|
||||
# fill(100) # preenchimento cinza escuro
|
||||
# noStroke()
|
||||
# rect(x, y, w, w) # fundo
|
||||
# fill(255)
|
||||
# grade(x, y, 1, w)
|
||||
if option == 1:
|
||||
fill(100)
|
||||
casinha(x, y, w / 2)
|
||||
else:
|
||||
radius_pairs = choice(((w / 3, w / 4),
|
||||
(w / 5, w / 4),
|
||||
(w / 5, w / 3),
|
||||
))
|
||||
estrela(x, y, choice((5, 7, 9, 11)), *radius_pairs)
|
||||
|
||||
|
||||
def keyPressed():
|
||||
saveFrame("####.png")
|
||||
redraw()
|
||||
Ładowanie…
Reference in New Issue