kopia lustrzana https://github.com/villares/sketch-a-day
s322
rodzic
d3bedffb8d
commit
17c38499ee
|
|
@ -0,0 +1,28 @@
|
||||||
|
ROTATION = {0 : 0,
|
||||||
|
BOTTOM : 0,
|
||||||
|
DOWN : 0,
|
||||||
|
1 : HALF_PI,
|
||||||
|
LEFT : HALF_PI,
|
||||||
|
2 : PI,
|
||||||
|
TOP : PI,
|
||||||
|
UP : PI,
|
||||||
|
3 : PI + HALF_PI,
|
||||||
|
RIGHT: PI + HALF_PI,
|
||||||
|
BOTTOM + RIGHT : 0,
|
||||||
|
DOWN + RIGHT : 0,
|
||||||
|
DOWN + LEFT : HALF_PI,
|
||||||
|
BOTTOM + LEFT : HALF_PI,
|
||||||
|
TOP + LEFT : PI,
|
||||||
|
UP + LEFT : PI,
|
||||||
|
TOP + RIGHT: PI + HALF_PI,
|
||||||
|
UP + RIGHT: PI + HALF_PI,
|
||||||
|
}
|
||||||
|
|
||||||
|
def quarter_circle(x, y, radius, quadrant):
|
||||||
|
circle_arc(x, y, radius, ROTATION[quadrant], HALF_PI)
|
||||||
|
|
||||||
|
def half_circle(x, y, radius, quadrant):
|
||||||
|
circle_arc(x, y, radius, ROTATION[quadrant], PI)
|
||||||
|
|
||||||
|
def circle_arc(x, y, radius, start_ang, sweep_ang):
|
||||||
|
arc(x, y, radius * 2, radius * 2, start_ang, start_ang + sweep_ang)
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
from random import choice
|
||||||
|
from arcs import quarter_circle, half_circle, circle_arc
|
||||||
|
|
||||||
|
class Node():
|
||||||
|
nodes = []
|
||||||
|
|
||||||
|
def __init__(self, x, y):
|
||||||
|
self.x = Node.border + Node.spacing / 2 + x * Node.spacing - width / 2
|
||||||
|
self.y = Node.border + Node.spacing / 2 + y * Node.spacing - height / 2
|
||||||
|
self.size_ = 1
|
||||||
|
self.rot0 = choice((0, HALF_PI)) #, PI, PI + HALF_PI))
|
||||||
|
self.rot1 = choice((HALF_PI , PI)) #, PI + HALF_PI))
|
||||||
|
self.type = choice(("a", "b", "c"))
|
||||||
|
|
||||||
|
def plot(self, ang):
|
||||||
|
""" draws node """
|
||||||
|
with pushMatrix():
|
||||||
|
translate(self.x, self.y)
|
||||||
|
d = abs(self.rot0 + ang - self.rot1)
|
||||||
|
if d >= 0.30:
|
||||||
|
rotate(self.rot0 + ang)
|
||||||
|
else:
|
||||||
|
self.rot0 = self.rot1 - ang
|
||||||
|
rotate(self.rot1)
|
||||||
|
noFill() #stroke(0)
|
||||||
|
siz = Node.spacing * self.size_
|
||||||
|
l = siz / 2.
|
||||||
|
a = l / 2. - 1
|
||||||
|
c = l / 2. + 1
|
||||||
|
# stroke(0, 0, 200, 50)
|
||||||
|
# rect(0, 0, siz, siz)
|
||||||
|
stroke(0, 100, 100)
|
||||||
|
for i in range(-5, 6, 5): # (-28, 29, 7):
|
||||||
|
if self.type == "a":
|
||||||
|
quarter_circle(l, l, c + i, TOP + LEFT)
|
||||||
|
quarter_circle(-l, -l, c + i, BOTTOM + RIGHT)
|
||||||
|
quarter_circle(-l, l, c + i, TOP + RIGHT)
|
||||||
|
quarter_circle(l, -l, c + i, BOTTOM + LEFT)
|
||||||
|
elif self.type == "b":
|
||||||
|
half_circle(-l, 0, a + i, RIGHT)
|
||||||
|
half_circle(l, 0, a + i, LEFT)
|
||||||
|
half_circle(0, l, a + i, TOP)
|
||||||
|
half_circle(0, -l, a + i, BOTTOM)
|
||||||
|
else:
|
||||||
|
line(-l, a + i, l, a + i)
|
||||||
|
line(a + i, -l, a + i, l)
|
||||||
|
line(-l, -a + i, l, -a + i)
|
||||||
|
line(-a + i, -l, -a + i, l)
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def init_grid(cls, grid_size, border):
|
||||||
|
cls.border = border
|
||||||
|
cls.spacing = (width - cls.border * 2) / grid_size
|
||||||
|
cls.nodes = []
|
||||||
|
for x in range(grid_size):
|
||||||
|
for y in range(grid_size):
|
||||||
|
new_node = cls(x, y)
|
||||||
|
cls.nodes.append(new_node)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Plik binarny nie jest wyświetlany.
|
Po Szerokość: | Wysokość: | Rozmiar: 17 KiB |
|
|
@ -0,0 +1,58 @@
|
||||||
|
# Alexandre B A Villares - https://abav.lugaralgum.com/sketch-a-day
|
||||||
|
SKETCH_NAME = "s322" # 20181116
|
||||||
|
OUTPUT = ".gif"
|
||||||
|
|
||||||
|
GRID_SIZE = 10
|
||||||
|
BORDER = 50
|
||||||
|
|
||||||
|
from random import seed
|
||||||
|
from random import choice
|
||||||
|
from node import Node
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
size(500, 500)
|
||||||
|
strokeWeight(1)
|
||||||
|
rectMode(CENTER)
|
||||||
|
frameRate(10)
|
||||||
|
random_seed(101)
|
||||||
|
Node.init_grid(GRID_SIZE, BORDER)
|
||||||
|
|
||||||
|
def draw():
|
||||||
|
translate(width/2, height/2)
|
||||||
|
background(200)
|
||||||
|
ang = 0 #frameCount/31.
|
||||||
|
|
||||||
|
for node in Node.nodes:
|
||||||
|
node.plot(ang)
|
||||||
|
|
||||||
|
if ang < TWO_PI:
|
||||||
|
pass
|
||||||
|
#saveFrame("###.png")
|
||||||
|
else:
|
||||||
|
noLoop()
|
||||||
|
|
||||||
|
def keyPressed():
|
||||||
|
if key == "n":
|
||||||
|
Node.init_grid(GRID_SIZE, BORDER)
|
||||||
|
if key == "s": saveFrame("###.png")
|
||||||
|
|
||||||
|
|
||||||
|
def random_seed(s=None):
|
||||||
|
global rnd_seed
|
||||||
|
if s:
|
||||||
|
rnd_seed = s
|
||||||
|
seed(rnd_seed)
|
||||||
|
randomSeed(rnd_seed)
|
||||||
|
else:
|
||||||
|
seed(rnd_seed)
|
||||||
|
randomSeed(rnd_seed)
|
||||||
|
|
||||||
|
# print text to add to the project's README.md
|
||||||
|
def settings():
|
||||||
|
println(
|
||||||
|
"""
|
||||||
|

|
||||||
|
|
||||||
|
{1}: [code](https://github.com/villares/sketch-a-day/tree/master/{0}) [[Py.Processing](https://villares.github.io/como-instalar-o-processing-modo-python/index-EN)]
|
||||||
|
""".format(SKETCH_NAME, SKETCH_NAME[1:], OUTPUT)
|
||||||
|
)
|
||||||
Ładowanie…
Reference in New Issue