Skip to content

Instantly share code, notes, and snippets.

@villares
Created June 27, 2020 02:55
Show Gist options
  • Save villares/7eb6b7c79f67d888dfec2daedee08119 to your computer and use it in GitHub Desktop.
Save villares/7eb6b7c79f67d888dfec2daedee08119 to your computer and use it in GitHub Desktop.
código issue Fernanda
### arrastando vários círculos
arrastando = None # None quer dizer nenhum círculo sendo arrastado
circulos = [] # lista com coordenadas e tamanhos dos círculos
def setup():
size(400, 400)
strokeWeight(3)
fill(0, 200) # preenchimento translúcido
for _ in range(5): # vamos sortear 5 círculos
d = random(30, 100)
x = random(d, width - d)
y = random(d, height - d)
# porque usar o d e -d se o circulo sai do quadro?
# Porque essa é só a posição random inicial.
circulos.append((x, y, d))
def draw():
background(0, 0, 200)
for i, circulo in enumerate(circulos):
# como se usa mesmo o enumerate?
x, y, d = circulo
if i == arrastando:
stroke(200, 0, 0)
else:
stroke(255)
ellipse(x, y, d, d)
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
# porque = i e não igual a circulo?
break # encerra o laço
# porque precisa do break?
def mouseReleased(): # quando um botão do mouse é solto
global arrastando
arrastando = None
def mouseDragged(): # quando o mouse é movido apertado
if arrastando is not None:
x, y, d = circulos[arrastando]
x += mouseX - pmouseX
y += mouseY - pmouseY
circulos[arrastando] = (x, y, d)
# porque se apagar essa linha final ele não arrasta?
________________________________________________________________________________
# linha quadrados em degradê
from __future__ import division
def setup():
size(400, 400)
def draw():
background(200)
noStroke()
dots(width / 2, height / 2,
mouseX , mouseY,
color(255, 255, 0),
color(0, 255, 255),
steps=10,
dot_size=25)
def dots(x1, y1, x2, y2, ca, cb, steps=10, dot_size=10):
L = dist(x1, y1, x2, y2)
A = atan2(x1 - x2, y2 - y1)
pushMatrix()
translate(x1, y1)
rotate(A)
# # não entendi muito bem essa primeira parte. porque do translate e do rotate e o A.
# e porque repete o dot size com um valor menor?
if L < steps * dot_size:
# define que uma ação deve acontecer se o L for menor do que os steps vezes o tamano do quadrado.
# se fosse mais ou dividido os quadrados(dots) iriam se sobrepor
steps = int(L / dot_size)
# porque tem que ser dividido por dot size?
for i in range(steps + 1):
y = 0
if steps > 0:
p = i / steps
y = lerp(0, L, p)
# a variável aqui ser y tem algo a ver com o eixo y? y(posição) vai ser o resultado
# entre a posição de origem 0 e o L(posição do mouse de x e y)- define a abrangência,
# e p vai ser a posição final desse resultado.
cor = lerpColor(ca, cb, p)
fill(cor)
rectMode(CENTER)
rect(0, y, dot_size, dot_size)
popMatrix()
________________________________________________________________________________
## Grade recursiva
def setup():
size(400, 400)
background(0)
noFill()
stroke(255)
grade(0, 0, width - 1, 4)
# define os pontos de partida(0,0), o tamanho (width- variável - x - ele vai ficar
# grudado no ponto 0, 0 e menor que a tela, e quantos módulos essa grade terá(se é uma grade de 2 elementos, 4, etc)
def grade(xg, yg, wg, n=None):
n = n or int(random(1, 5)) # n if n is not None else int(random(1, 5))
w = wg / float(n)
for i in range(n):
x = xg + i * w
# Controla o comportamento das colunas. A posição de x para o i em questão
for j in range(n):
y = yg + j * w
# Controla o comportamento das linhas
if n == 1:
# diz que essa regra vai funcionar se o n for maior que 1, ou seja o módulo inteiro,
# se fosse 2 por exemplo, todos os módulos maiores teriam no mínimo 2 divisões
rect(x, y, w, w)
else:
if w < 20:
ellipse(w/2+x, w/2+y, w, w)
else:
grade(x, y, w)
# Não entendi metade
________________________________________________________________________________
#olho
def setup():
size(700, 400)
# olho(200, 200, 200, color(200, 200, 0))
# olho(500, 200, 200, color(200, 200, 0))
def olho(x, y, tam, cor=color):
fill(255)
ellipse(x, y, tam, tam*.4)
fill(cor)
ellipse(x, y, tam*.3, tam*.3)
fill(0)
ellipse(mouseX, mouseY, tam*.1, tam*.1)
def draw():
background(128)
olho(200, 200, 200, color(200, 200, 0))
olho(500, 200, 200, color(200, 200, 0))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment