villares 2020-05-13 23:28:17 -03:00
rodzic ba7e6541d4
commit 036a21c10f
3 zmienionych plików z 85 dodań i 0 usunięć

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 3.9 MiB

Wyświetl plik

@ -0,0 +1,79 @@
arrastando = -1 # -1 quer dizer nenhum círculo sendo arrastado
circulos = [] # lista com coordenadas e tamanhos dos círculos
NUM_CIRCULOS = 3
def setup():
size(400, 400)
strokeWeight(3)
colorMode(HSB)
sorteia_circulos(NUM_CIRCULOS)
def draw():
background(200)
# Queremos uma lista invertida da enumeração dos círculo
i_circulos = list(enumerate(circulos))[::-1]
# De forma a desenhar a lista do último para o primeiro
for i, circulo in i_circulos:
xa, ya, da = circulo
xb, yb, db = circulos[i - 1]
if i == arrastando:
fill(0, 100)
else:
noFill()
ca = color(da - 15, 255, 255, 200)
cb = color(db - 15, 255, 255, 200)
for t in range(10):
tc = t / 10.
xc = lerp(xa, xb, tc)
yc= lerp(ya, yb, tc)
dc= lerp(da, db, tc)
cc = lerpColor(ca, cb, tc)
stroke(cc)
ellipse(xc, yc, dc, dc)
def keyPressed():
if key == ' ':
sorteia_circulos(NUM_CIRCULOS)
def mousePressed(): # quando um botão do mouse é apertado
global arrastando
for i, circulo in enumerate(circulos):
x, y, d = circulo
dist_mouse_circulo = dist(mouseX, mouseY, x, y)
raio = d / 2
if dist_mouse_circulo < raio:
arrastando = i
break # encerra o laço
def mouseReleased(): # quando um botão do mouse é solto
global arrastando
arrastando = -1
def mouseDragged(): # quando o mouse é movido apertado
if arrastando >= 0:
x, y, d = circulos[arrastando]
x += mouseX - pmouseX
y += mouseY - pmouseY
circulos[arrastando] = (x, y, d)
def mouseWheel(event):
movimento_roda = event.getCount()
for i, circulo in enumerate(circulos):
x, y, d = circulo
dist_mouse_circulo = dist(mouseX, mouseY, x, y)
raio = d / 2
if dist_mouse_circulo < raio:
d += movimento_roda
# Limitar o tamanho possível dos círculos
if 15 < d < 270:
circulos[i] = (x, y, d)
# sem `break` todos sob o mouse seriam afetados
break # interrompe o laço `for`
def sorteia_circulos(num):
circulos[:] = [] # esvazia a lista
for _ in range(num): # vamos sortear `num` círculos
d = 128
x = random(d / 2, width - d / 2)
y = random(d / 2, height - d / 2)
circulos.append((x, y, d))

Wyświetl plik

@ -18,6 +18,12 @@ You may also support my artistic work, open educational resources and research u
---
![sketch_2020_05_13a](2020/sketch_2020_05_13a/sketch_2020_05_13a.gif)
[sketch_2020_05_13a](https://github.com/villares/sketch-a-day/tree/master/2020/sketch_2020_05_13a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
---
![sketch_2020_05_12a](2020/sketch_2020_05_12a/sketch_2020_05_12a.gif)
[sketch_2020_05_12a](https://github.com/villares/sketch-a-day/tree/master/2020/sketch_2020_05_12a) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]