villares / material-aulas

Material para ensino introdutório de programação com Python em um contexto visual
https://abav.lugaralgum.com/material-aulas/
97 stars 70 forks source link

Explicar PVector()! #59

Closed villares closed 2 years ago

villares commented 4 years ago

Um bom exemplo com partículas que fogem do mouse...

villares commented 4 years ago

Começando a escrever aqui... https://github.com/villares/material-aulas/blob/master/Processing-Python/vetores.md

Queria chegar em algo perto do exemplo que a Helena estava fazendo: vetores

balls = []

def setup():
    size(400, 400)
    for i in range(200):
        balls.append(Ball(random(width),random(height)))

def draw():
    background(128)
    for b in balls:
        b.desenha()
        b.move()

class Ball:
    def __init__(self, x, y):
        self.cor = color(255)
        self.tam = 10
        self.pos = PVector(x, y)
        self.vel = PVector(0, 0)  # PVector.random2D()

    def desenha(self):
        noStroke()
        fill(self.cor)
        ellipse(self.pos.x, self.pos.y, self.tam, self.tam)

    def move(self):
        pos_mouse = PVector(mouseX, mouseY)
        dif = self.pos - pos_mouse
        m = dif.mag()
        if m < 50:
            dif.normalize()
            dif = .01 * dif * 1 / m * m
            self.vel += dif
        self.pos += self.vel
        self.vel = self.vel * .99

        if self.pos.x < -self.tam / 2:
            self.pos.x = width + self.tam / 2

        elif self.pos.x > width + self.tam / 2:
            self.pos.x = -self.tam / 2

        if self.pos.y < -self.tam / 2:
            self.pos.y = height + self.tam / 2

        elif self.pos.y > height + self.tam / 2:
            self.pos.y = -self.tam / 2
villares commented 2 years ago

Página acrescentada!