# 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