DNA (3d)

Help Contents Examples DNA (3d)
Decoration (fractal) fact (Factorial Operator, simple recursion)

DNA (3d)

This example draws a 3d random DNA-like spiralic tangle.

run "graphix
run "turtle3D

make "onbeforedraw.fog fog "true 400 250 0.4 rgb_  _4  _4  _4
make "onbeforedraw.clearcolor clearcolor 100 100 100

make "m turtle3D

make "D 400

make "t 0
make "v0 vector 0 0 0
make "v1 vector 0 0 1

to changeview
	make "t :t+1
	lookat point :D*(cos :t) :D*(sin :t) 0 :v0 vector sin :t cos :t cos :t
end

make "ss set
make "cc set
make "sc set
make "pp1 set
make "pp2 set
make "p1 []
make "p2 []
make "q1 []
make "q2 []

to doit
	make "col rgb_ (random) (random) (random)
	m.go 5
	m.left 40 * (sin 2*:t*:t)
	m.up 10 * (sin :t)
	m.ccw 10 * (cos 2*:t)

	m.cw 30*:t
	m.left 90
	m.go 3
	make "pp1(:t) styled (point :m.p.x :m.p.y :m.p.z) (set "color :col "width 3)
	m.go 2
	make "p2 :p1
	make "p1 :m.p

	make "col rgb 255-:col.x 255-:col.y 255-:col.z

	m.back 7
	make "pp2(:t) styled (point :m.p.x :m.p.y :m.p.z) (set "color :col "width 3)
	m.back 3
	make "q2 :q1
	make "q1 :m.p
	m.go 5
	m.right 90
	m.ccw 30*:t

	if :t>1
	[
		make "ss(:t) styled (segment :p1 :p2) (set "color rgb_ 1 1 1 "width 2)
		make "cc(:t) styled (segment :q1 :q2) (set "color rgb_ 1 1 1 "width 2)
		make "sc(:t) styled (segment :p1 :q1) (set "color rgb_ 1 1 1 "pattern "xo)
	]
end

repeat 1000
[
	doit
	changeview
]

repeat 10000
[
	changeview
]

Decoration (fractal) fact (Factorial Operator, simple recursion)