Created
June 27, 2020 02:55
-
-
Save villares/7eb6b7c79f67d888dfec2daedee08119 to your computer and use it in GitHub Desktop.
código issue Fernanda
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### 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