Code/NodeBox

David Hirmes - lines15

maetel 2007. 8. 1. 11:14
도전장: David Hirmes - lines15 (ref. Flash Math Creativity)
원래 이걸 하려고 했는데 lines14에서 조금 더 응용된 것이라 우선 lines14를 먼저 해 보았던 것이다.

5초만에 끝. ^^

s = 300
n = 6

size(s, s)
speed(200)

from math import cos, sin, acos, sqrt

def setup():  
    global x
    global y
    global f    
    global g
   
    x = range(s)
    y = range(s)   
    for i in range(s):
        x[i] = random(s)
        y[i] = random(s)

    f = 0
    g = 0


def draw():
    global x
    global y   
    global f   
    global g

    dx = x[f+1] - x[f]
    dy = y[f+1] - y[f]
       
    dd = dx**2 + dy**2
    d = sqrt(dd)
    l = g * d/n
   
    da = acos(dx/d)

    if dy < 0:
        da = -da
        ph = 6.28
    else:
        ph = 0

    a = g * (da+ph)/n
   
    for k in range(f):
        stroke(0)
        line(x[k], y[k], x[k+1], y[k+1])       
        line(x[f], y[f], x[f]+l*cos(a), y[f]+l*sin(a))
       
       
    g += 1
       
    if g > n:
        g = 0
        f += 1
       
    if f > s-1:
        f = 0