From 87f3203ce0c93c1f9f6fd0a4822760c5eff679bc Mon Sep 17 00:00:00 2001 From: Alexandre B A Villares Date: Thu, 11 Jan 2018 13:40:08 -0200 Subject: [PATCH] 180110 --- s180110/s180110.pyde | 50 +++++++-------- s180111/s180111.pyde | 145 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 170 insertions(+), 25 deletions(-) create mode 100644 s180111/s180111.pyde diff --git a/s180110/s180110.pyde b/s180110/s180110.pyde index b98a78b2..6b358322 100644 --- a/s180110/s180110.pyde +++ b/s180110/s180110.pyde @@ -1,11 +1,11 @@ """ s180110 Balls for Manoloid! -(c)2018 Alexandre B A Villares +(r)2018 Alexandre B A Villares https://abav.lugaralgum.com/sketch-a-day This is directly inspired by & derived from Manuel Gamboa Naon's sketch https://gist.github.com/manoloide/16ea9e1d68c6ba1700fcb008fd38aab0 -posted at twitter.com/manoloidee +posted at twittec.com/manoloidee """ mm = 0 @@ -27,12 +27,12 @@ def draw(): translate(width / 2, height / 2) - for r in circles: - r.update() - r.showShadow() + for c in circles: + c.update() + c.showShadow() - for r in circles: - r.show() + for c in circles: + c.show() # if (frameCount < 200): saveFrame("###.tga") # para salvar frames @@ -49,9 +49,9 @@ def mouseMoved(): sub() def sub(): - for r in circles: - if r.isOn(mx, my): - r.sub() + for c in circles: + if c.isOn(mx, my): + c.sub() break @@ -110,22 +110,22 @@ class Circle: def sub(self): ms = self.s * 0.5 mms = ms/2 - r = Circle(self.ix-mms, self.iy+mms, ms, self.col) - circles.append(r) + c = Circle(self.ix-mms, self.iy+mms, ms, self.col) + circles.append(c) - r = Circle(self.ix-mms, self.iy-mms, ms, self.col) - r.x += self.x - self.ix - r.y += self.y - self.iy - circles.append(r) + c = Circle(self.ix-mms, self.iy-mms, ms, self.col) + c.x += self.x - self.ix + c.y += self.y - self.iy + circles.append(c) - r = Circle(self.ix+mms , self.iy-mms, ms, self.col) - r.x += self.x - self.ix - r.y += self.y - self.iy - circles.append(r) + c = Circle(self.ix+mms , self.iy-mms, ms, self.col) + c.x += self.x - self.ix + c.y += self.y - self.iy + circles.append(c) - r = Circle(self.ix+mms , self.iy+mms , ms, self.col) - r.x += self.x - self.ix - r.y += self.y - self.iy - circles.append(r) + c = Circle(self.ix+mms , self.iy+mms , ms, self.col) + c.x += self.x - self.ix + c.y += self.y - self.iy + circles.append(c) - circles.remove(self) + circles.remove(self) \ No newline at end of file diff --git a/s180111/s180111.pyde b/s180111/s180111.pyde new file mode 100644 index 00000000..78717004 --- /dev/null +++ b/s180111/s180111.pyde @@ -0,0 +1,145 @@ +""" +s180111 Graphs! +(c)2018 Alexandre B A Villares +https://abav.lugaralgum.com/sketch-a-day +Acceleration code by Manuel Gamboa Naon's sketch +https://gist.github.com/manoloide/16ea9e1d68c6ba1700fcb008fd38aab0 +posted at twitter.com/manoloidee +""" + +mm = 0 + +def setup(): + size(720, 720, P2D) + generate() + #ellipseMode(CORNER) + colorMode(HSB) + +def draw(): + global mx, my, mm, time + mm *= 0.95 + # if (mm < 0.04) mm *= 0.2 + mx = mouseX - width / 2 + my = mouseY - height / 2 + time = millis() * 0.001 + background(190) + + translate(width / 2, height / 2) + + for c in circles: + c.update() + c.showShadow() + + for c in circles: + c.show() + + # if (frameCount < 200): saveFrame("###.tga") # para salvar frames + + +def keyPressed(): + generate() + +def mouseClicked(): + sub() + +def mouseMoved(): + global mm + mm += 0.05 + sub() + +def sub(): + for c in circles: + if c.isOn(mx, my): + c.sub() + break + + +def generate(): + global circles + circles = [] + circles.append(Circle(0, 0 , 600, color(random(256), 200, 200))) + + +class Circle: + + def __init__(self, x, y, s, c): + self.edges = [] + self.x = x + self.y = y + self.ix = x + self.iy = y + self.s = s + self.b = 12 + self.ncol = color(random(256), 200, 200) + self.col = c + + def mouseMovement(self): + cx = self.x + self.s * 0.5 + cy = self.y + self.s * 0.5 + maxDist = 200 + dis = dist(cx, cy, mx, my) + ang = atan2(cy - my, cx - mx) + if (dis < maxDist): + dd = map(dis, 0, maxDist, 1, 0) + dd = pow(dd, 0.9) * 20 * mm + self.x += cos(ang) * dd + self.y += sin(ang) * dd + + def update(self): + + self.x = lerp(self.x, self.ix, 0.09) + self.y = lerp(self.y, self.iy, 0.09) + self.col = lerpColor(self.col, self.ncol, 0.05) + + self.mouseMovement() + self.showShadow() + self.edges() + self.show() + + + + def showShadow(self): + noStroke() + fill(0, 20) + ellipse(self.x , self.y, self.s, self.s) + + def edges(self): + strokeWeight(3) + stroke(255) + for e in self.edges: + line(self.x, self.y, e.x, e.y) + + def show(self): + fill(self.col) + ellipse(self.x, self.y, self.b, self.b) + + def isOn(self, mx, my): + return (self.x + self.s > mx >= self.x and + self.y + self.s > my >= self.y) + + def sub(self): + ms = self.s * 0.5 + mms = ms/2 + new_origin = Circle(self.ix-mms, self.iy+mms, ms, self.col) + new_origin.edges = self.edges + circles.append(new_origin) + + c = Circle(self.ix-mms, self.iy-mms, ms, self.col) + c.x += self.x - self.ix + c.y += self.y - self.iy + c.edges.append(new_origin) + circles.append(c) + + c = Circle(self.ix+mms , self.iy-mms, ms, self.col) + c.x += self.x - self.ix + c.y += self.y - self.iy + c.edges.append(new_origin) + circles.append(c) + + c = Circle(self.ix+mms , self.iy+mms , ms, self.col) + c.x += self.x - self.ix + c.y += self.y - self.iy + c.edges.append(new_origin) + circles.append(c) + + circles.remove(self) \ No newline at end of file