sketch-a-day/s091/s091.pyde

68 wiersze
2.2 KiB
Plaintext
Czysty Zwykły widok Historia

2018-04-01 22:40:06 +00:00
# Alexandre B A Villares - https://abav.lugaralgum.com/sketch-a-day
2018-04-01 22:42:28 +00:00
SKETCH_NAME = "s091" # 180401
2018-04-01 22:40:06 +00:00
add_library('serial') # import processing.serial.*;
add_library('arduino') # import cc.arduino.*;
add_library('gifAnimation')
from gif_exporter import gif_export
2018-04-02 03:44:08 +00:00
from graphs import *
2018-04-01 22:40:06 +00:00
from parameters import *
def setup():
2018-04-01 22:42:28 +00:00
frameRate(30)
2018-04-01 22:40:06 +00:00
global A, B, C, D
# Ask user for Arduino port, cancel will return `None`
port = Inputs.select_source(Arduino)
# `None` will activate Sliders
A, B, C, D = Inputs.setup_inputs(port)
2018-04-02 02:38:10 +00:00
size(400, 400)
2018-04-01 22:40:06 +00:00
def draw():
2018-04-02 03:50:22 +00:00
background(128)
2018-04-02 02:38:10 +00:00
2018-04-02 03:50:22 +00:00
TAM_BARRA = A.val / 4
NUM_PONTOS = int(B.val / 4)
VEL_MAX = C.val / 128
NUM_CONNECT = 1 + int(D.val / 256)
2018-04-02 02:38:10 +00:00
# para cada ponto
2018-04-02 03:44:08 +00:00
for ponto in Ponto.SET:
2018-04-02 02:38:10 +00:00
ponto.desenha() # desenha
2018-04-02 03:44:08 +00:00
ponto.move(VEL_MAX) # atualiza posição
2018-04-02 02:38:10 +00:00
# para cada aresta
2018-04-02 03:50:22 +00:00
# checa se há Arestas com Pontos já removidos
for aresta in Aresta.ARESTAS:
2018-04-02 03:44:08 +00:00
if (aresta.p1 not in Ponto.SET) or (aresta.p2 not in Ponto.SET):
Aresta.ARESTAS.remove(aresta) # nesse caso remove a Aresta também
2018-04-02 02:38:10 +00:00
else: # senão
aresta.desenha() # desenha a linha
2018-04-02 03:44:08 +00:00
aresta.puxa_empurra(TAM_BARRA) # altera a velocidade dos pontos
# atualiza número de pontos
if NUM_PONTOS > len(Ponto.SET):
Ponto.SET.add(Ponto(random(width), random(height), NUM_CONNECT))
elif NUM_PONTOS < len(Ponto.SET):
Ponto.SET.remove(rnd_choice(list(Ponto.SET)))
if Inputs.TILT:
2018-04-02 03:50:22 +00:00
Ponto.SET = set()
2018-04-01 22:40:06 +00:00
# uncomment next lines to export GIF
2018-04-02 03:44:08 +00:00
# if not frameCount % 30:
# gif_export(GifMaker,
# frames=2000,
# delay=500,
# filename=SKETCH_NAME)
2018-04-01 22:40:06 +00:00
# Updates reading or draws sliders and checks mouse dragging / keystrokes
Inputs.update_inputs()
2018-04-02 02:38:10 +00:00
def mouseDragged(): # quando o mouse é arrastado
2018-04-02 03:44:08 +00:00
for ponto in Ponto.SET: # para cada Ponto checa distância do mouse
2018-04-02 02:38:10 +00:00
if dist(mouseX, mouseY, ponto.x, ponto.y) < TAM_PONTO / 2:
# move o Ponto para posição do mouse
ponto.x, ponto.y = mouseX, mouseY
ponto.vx = 0
ponto.vy = 0