diff --git a/README.md b/README.md index 7f2c9ed3..09423dfb 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,13 @@ If you enjoy this, make a small donation [here](https://www.paypal.com/cgi-bin/w ---- +![s045](s045/s045.gif) + +045: [code](https://github.com/villares/sketch-a-day/tree/master/s045) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)] +Yer more graphs + +---- + ![s044](s044/s044.gif) 044: [code](https://github.com/villares/sketch-a-day/tree/master/s044) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)] diff --git a/s045/s045.gif b/s045/s045.gif new file mode 100644 index 00000000..ed11ecaf Binary files /dev/null and b/s045/s045.gif differ diff --git a/s045/s045.pyde b/s045/s045.pyde new file mode 100644 index 00000000..1e1dd7b5 --- /dev/null +++ b/s045/s045.pyde @@ -0,0 +1,112 @@ +""" +sketch 44b 180213 - Alexandre B A Villares +https://abav.lugaralgum.com/sketch-a-day +""" + +LIST = [] +SRINK = .50 +OFFSET = .25 +SIZE = 512 # base size +SAVE_FRAME = False +RECT_MODE = True + +def setup(): + size(512 + 200, 512 + 200) + rectMode(CENTER) + colorMode(HSB) + strokeWeight(2) + LIST.append(Cell()) + +def draw(): + translate(width / 2, height / 2) + background(200) + for cell in LIST: + cell.update() + save_frame() # saves frame if SAVE_FRAME is set True + +def keyPressed(): + global SAVE_FRAME, RECT_MODE, SRINK, OFFSET + if key == " ": + LIST[:] = [Cell()] + SRINK = .50 + OFFSET = .25 + if key == "r": + RECT_MODE = not RECT_MODE + SAVE_FRAME = True + + +class Cell(): + + def __init__(self, x=0, y=0, gen=0): + self.LIST = [] + self.x, self.y = x, y + self.gen = gen + self.color = color(random(0, 200), 200, 200, 200) + + def s(self): # size + return SIZE * (SRINK ** self.gen) + + def update(self): + self.draw() # draws itself + if not self.LIST: + # if no sub-cells, its a lead (para células sem sub-células) + # and if mouse is pressed inside it + if mousePressed and self.on_mouse(): + self.divide() # will create new sub-cells + # otherwise will recursively update sub-cells and draw a line to them + else: + for sub_cell in self.LIST: + sub_cell.update() + stroke(0) + line(self.x, self.y, sub_cell.x, sub_cell.y) + + def draw(self): + noStroke() + fill(self.color) + if not RECT_MODE: + ellipse(self.x, self.y, self.s(), self.s()) + else: + rect(self.x, self.y, self.s(), self.s()) + fill(0) + if not RECT_MODE: + ellipse(self.x, self.y, 4, 4) + else: + rect(self.x, self.y, 3, 3) + + #text(str(self.gen), self.x, self.y) + + def divide(self): + if self.gen < 6 and not keyPressed: + x, y = self.x, self.y + new_gen = self.gen + 1 + o = self.s() * OFFSET + self.LIST.append(Cell(x + o, y + o, gen=new_gen)) + self.LIST.append(Cell(x + o, y - o, gen=new_gen)) + self.LIST.append(Cell(x - o, y + o, gen=new_gen)) + self.LIST.append(Cell(x - o, y - o, gen=new_gen)) + self.gen = new_gen + + def on_mouse(self): + x, y = self.x + width / 2, self.y + height / 2 + r = self.s() / 2 + if (x - r < mouseX < x + r and + y - r < mouseY < y + r): + return True + +def mouseDragged(): + global SRINK, OFFSET + if keyPressed and keyCode == SHIFT: + if mouseX < 100: + SRINK = map(mouseY, 0, height, 0, 1) + if mouseY < 100: + OFFSET = map(mouseX, 0, width, 0, 1) + +def mouseReleased(): + global SAVE_FRAME + SAVE_FRAME = True + +def save_frame(): + global SAVE_FRAME + if SAVE_FRAME: + SAVE_FRAME = False + saveFrame("45-######.tga") \ No newline at end of file