;basic commands

fd(7)
rt(30)
fd(7)
up(30)
fd(7)
rr(30)

up(90) rr(180)  

to par :a :b :c
repeat 2 [fd(:b) rt(:a) fd(:c) rt(180-:a)]
end

par(30 5 7)
fd(0)

to door :a :b :c
repeat 2 [fd(:a) rt(:c) fd(:b) rt(:c)]
end

up(90)
door(4 2 90)

to slide :a :b :c :d :e
up(:d)
lr(:e)
repeat 4 [door(:a :b :c) lr(90)]
end

slide(4 2 50 60 30)

to movedoor :a :b :c
uppitch(:a)
leftroll(:b)
repeat 2 [forward(3) right(:c) forward(2) right(:c)]
end

movedoor(0 0 60)


;The twisted Rectangle 

to monadack :length :theta :wmega
bk(:length/2) fd(:length) rt(90+:theta/2)
up(:wmega) fd(:length*sin(:theta/2)/cos(:wmega))
dp(:wmega) rt(90+(:theta)/2)
fd(:length) lt(90+(:theta)/2)
dp(:wmega) fd(:length*sin(:theta/2)/cos(:wmega))
up(:wmega) lt(90+:theta/2)
fd(:length) bk(:length/2)
end

monadack(4 45 60)

; The twisted Rectangle  half-baked

to hbmonadack :length :theta :wmega :width
bk(:length/2) fd(:length) rt(90+:theta/2)
up(:wmega) fd(:width)
dp(:wmega) rt(90+(:theta)/2)
fd(:length) lt(90+(:theta)/2)
dp(:wmega) fd(:width)
up(:wmega) lt(90+:theta/2)
fd(:length) bk(:length/2)
end

hbmonadack(4 45 60 4)

to monadack1 :length :theta :wmega
bk(:length/2) fd(:length) rt(90+:theta/2)
up(:wmega) fd(:length*sin(:theta/2)/cos(:wmega))
end

monadack1(4 45 60)



to monadanew :length :theta :height
make "wmega arctan(:height/(:length*sin(:theta/2)))
bk(:length/2) fd(:length) rt(90+:theta/2)
up(:wmega) fd(:length*sin(:theta)/(2*cos(:wmega)*sin(90-:theta/2)))
dp(:wmega) rt(90+(:theta)/2)
fd(:length) lt(90+(:theta)/2)
dp(:wmega) fd(:length*sin(:theta)/(2*cos(:wmega)*sin(90-:theta/2)))
up(:wmega) lt(90+:theta/2)
fd(:length) bk(:length/2)
penup
up(90) fd(:height) dp(90)
pendown
rt(:theta)
end

monadanew(4 45 6)


to monada :length :theta :wmega
bk(:length/2) fd(:length) rt(90+:theta/2)
up(:wmega) fd(:length*sin(:theta)/(2*cos(:wmega)*sin(90-:theta/2)))
dp(:wmega) rt(90+(:theta)/2)
fd(:length) lt(90+(:theta)/2)
dp(:wmega) fd(:length*sin(:theta)/(2*cos(:wmega)*sin(90-:theta/2)))
up(:wmega) lt(90+:theta/2)
fd(:length) rt(90+:theta/2)
up(:wmega) fd(:length*sin(:theta)/(2*cos(:wmega)*sin(90-:theta/2)))
dp(:wmega) rt(90+(:theta)/2)
fd(:length/2) rt(180)
end

monada(4 45 60)



to DNA :n :length :theta :wmega
repeat :n [monada(:length :theta :wmega)]
end


DNA(20 4 18 50)


DNA(200 3 3 30)

to dnanew :n :length :theta :height
repeat :n [monadanew(:length :theta :height)]
end

dnanew(5 4 45 6)



