Alexandre B A Villares 2018-01-12 11:54:53 -02:00
rodzic e0e7ef7b1f
commit 2a94bd7a45
4 zmienionych plików z 145 dodań i 6 usunięć

BIN
s180111/s180111.png 100644

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 124 KiB

Wyświetl plik

@ -28,8 +28,10 @@ def draw():
for c in circles:
c.update()
for c in circles:
c.showShadow()
for c in circles:
c.showEdges()
for c in circles:
c.show()
@ -92,11 +94,6 @@ class Circle:
self.col = lerpColor(self.col, self.ncol, 0.05)
self.mouseMovement()
self.showShadow()
self.showEdges()
self.show()
def showShadow(self):
noStroke()

Wyświetl plik

@ -0,0 +1,142 @@
"""
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()
for c in circles:
c.showShadow()
for c in circles:
c.showEdges()
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()
def showShadow(self):
noStroke()
fill(0, 20)
ellipse(self.x , self.y, self.s, self.s)
def showEdges(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)

BIN
s180112/s18012.png 100644

Plik binarny nie jest wyświetlany.

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 151 KiB