NodeBox

Create visual output with Python programming code
Home Download Reference Tutorial Library Gallery About

Dendrite

Yesterday Frederik wrote this inspiring interactive script that draws living lines. You can press the mouse and draw lines, and then they come alive like organic, pulsating dendrites.

You can learn an interesting trick or two about interaction, sine waves and Bezier paths by looking at the source code.

 


Play movie | Download source

 

size(400, 400)
speed(100)
from random import seed
from math import sin

lines = []
down = False

def append_line():
global down
if mousedown:
if len(lines) > 0 and lines[-1] == (MOUSEX, MOUSEY):
return
if down:
lines.append((LINETO, MOUSEX, MOUSEY, FRAME))
else:
down = True
lines.append((MOVETO, MOUSEX, MOUSEY, FRAME))
else:
down = False


def draw_line():
if len(lines) == 0: return
nofill()
stroke(1,1,1,0.5)
strokewidth(0.25)
p = BezierPath()
for cmd, x, y,t in lines:
if cmd == MOVETO:
p.moveto(x, y)
else:
p.lineto(x, y)
p.inheritFromContext()
p.draw()

def draw_ch_line():
for i in range(5):
seed(i)
if len(lines) == 0: return
nofill()
stroke(1,1,1,0.5)
strokewidth(0.2)
p = BezierPath()
for cmd, x, y, t in lines:
d = sin((FRAME - t) / 10.0)*10.0
x += random(-d, d)
y += random(-d, d)
if cmd == MOVETO:
p.moveto(x, y)
else:
p.lineto(x, y)
p.inheritFromContext()
p.draw()

def setup():
pass

def draw():
background(0.25,0.0,0.1)
append_line()
draw_ch_line()

 

Created by Frederik De Bleser