- Non-daily 10 -

Some buggy flickering at the start, but there's some sine wave motion

source code 

fill(0.8, 0.25)

def draw():
for n in range(20):
angle1 = FRAME/2
angle2 = FRAME*5 % 360
arc(WIDTH/2, HEIGHT/2, n*12, angle1, angle2-n*5)

Show thread

messy source code 

i'm sorry, this is really bad atm!

size(548, 548)

rsz = 30
cols = 16
rows = 16

class LilSquare:
def __init__(self, step=3, sz=rsz, offset=0.5, gap=2):
self.step = step
self.size = sz
self.offset = offset
self.flipped = False
self.gap = gap
self.frontcolor = "#283618"
self.backcolor = ""
self.stepamount = self.offset

def next(self):
if self.step >= self.size:
self.stepamount = -self.offset
elif self.step <= 1:
self.stepamount = self.offset
self.flipped = not self.flipped
self.step += self.stepamount

def draw(self, x, y):
col = self.backcolor if self.flipped else self.frontcolor
rect(x, y, self.step-self.gap/2, self.size-self.gap/2, fill=col)

lilsquares = [[LilSquare(step=x%3+y%2, offset=(y+1)%4+0.2) for y in range(rows)] for x in range(cols)]

def draw():
global lilsquares
translate(50, 50)

firstlsq = lilsquares[0][6]

for x,y in grid(cols, rows, rsz, rsz):
tx, ty = (int(x/rsz), int(y/rsz))
lsq = lilsquares[tx][ty]

Show thread

- Daily 8 -

I spent more time than would be reasonable to implement squares that flip. First I tried to avoid saving their states, but got fed up and just did things with a class. Still grumpy that I couldn't find a nicer way.

Next time I'll see if trig motion makes this less monotonous

- Daily 7 -

Going deeper into @aqua 's epitrochoids and playing with numbers until something nice appears.

One happy discovery -- this particle-like effect is actually a dashed stroke which happens to move nicely as the paths shift shapes. Reminds me of Processing particle examples (and using dashes speeds up rendering considerably)

source code 

from math import sin, cos

lines = True
radius = WIDTH * 0.45
center = WIDTH * 0.5
theta_count = 5
k = 1


def draw():
global lines, radius, center, theta_count, k
if FRAME > 300:
k += 1

td = (300 / (FRAME % 300 + 1)) - 1

if lines:
start = False
for i in range(360 * theta_count):
theta = i / theta_count
# fill(sin(theta) + 1, 1, 0.4)
stroke(sin(theta) + 1, 1, 0.4)
t_r = 1
tr = t_r / k
t_total = t_r + tr + td
t_scale = radius / t_total
rr = t_r * t_scale
r = tr * t_scale
d = td * t_scale
x = (center + (rr+r)*cos(theta) - (d*cos(((rr+r)/r)*theta)))
y = (center + (rr+r)*sin(theta) - (d*sin(((rr+r)/r)*theta)))
if lines:
if not start:
moveto(x, y)
start = True
lineto(x, y)
rect(x, y, 1, 1)
if lines:

Show thread

- Daily 6 -

Fell behind a couple of days because of work, so let's begin catching up

This is my first take at porting @aqua 's beautiful epitrochoids demo to Shoebot. Original at picardia.co/static/vanitas/

The only goal for now was getting anything on the screen; it's still pretty glitchy, I'll probably keep playing with this more as I try to understand what's going on

source code 

margin = 60
spacing = 40
swidth = 20
colors = ["fec5bb","fcd5ce","fae1dd","f8edeb","e8e8e4",


def draw():
for n in range(2,12):
arc(margin, HEIGHT-margin, n*spacing, -90, 0,
strokedash=[50, 25, 100, 25], dashoffset=n*20+FRAME*1.5)

for n in range(1,12):
arc(WIDTH-margin, margin, n*spacing, 90, 180,
stroke=list(reversed(colors))[n%len(colors)], blendmode='multiply',
strokedash=[50, 25, 100, 25], dashoffset=-n*20-FRAME*1.5)

Show thread

- Daily 3 -

Started as an experiment with moirés, but got distracted with stroke dashes again

Arf, I posted an earlier version which actually demonstrated a glitch with the stroke miters (see how they snap right after the shape starts drawing), now this is the right one.



def draw():
for n in range(10):
angle1 = FRAME/2
if angle1 % 360 == 0:
print(f"Reached loop frame: {FRAME}")
angle2 = FRAME*5 % 360
arc(WIDTH/2, HEIGHT/2, n*25, angle1, angle2)

Show thread

This was also an attempt at figuring out how to make a decently-looped animation.

1. determine at which point you want the video to stop -- in this case, when the slower moving arc extreme reaches zero degrees
2. add an if-condition that, when met, prints the value of FRAME; and now you have the number of frames to output
3. "sbot-export-video arcs.bot --framenumber <frames> arcs.mp4" and you're done

Show thread

- Daily 2 -

I used to find this "chord arc" a pretty dull shape because I was only looking at single static examples. When combined or animated, they get interesting really quick.

(didn't feel an urge to explore color -- it's gray on gray and i call it a day)

@rlafuente oh and if you want a nice collection afterwards, consider using a relatively unique hashtag as mastodon creates pages like these: post.lurk.org/tags/LURKbirthda

Note to properly size the next one: video previews on Mastodon have a width of 548px

Show thread

So in June I'm trying my first thing-a-day-for-a-month project.

I'll be posting experiments made with , a tool that i've been making with friends for the last 13 years, to draw with vector graphics in a simple drawing syntax.

First off, an output of some recent fun animating stroke dashes -- increasing their offset results in a pleasing smooth motion. This one is made out of 3 100-sided stars with varying dashed strokes.

Show more

Welcome to post.lurk.org, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that.