Fern (3d)

Help Contents Examples Fern (3d)
fact (Factorial Operator, simple recursion) Floor_map (one 3d storey of a house)

Fern (3d)

This recursion example draws a 3d fern fractal.

run "graphix
run "turtle3D

make "m turtle3D

make "D 120

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

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

make "s 0
make "ss set
make "cc set

to fern :len :level :ang

	changeview
	m.up 20
	make local "m0 m.store
	make local "i 0
	make local "l :len/6

	repeat 6
	[
		m.go :l
		make "l :l*0.8
		m.down :ang
		make "s :s+1
		make "cc(:s) styled (segment :m.oldp :m.p) (set "color rgb_  0  _8  0)
	]
	m.restore :m0

	if :level<3
	[
		make "l :len/6
		repeat 4
		[
			;m.cw 60
			make "i :i+1
			m.go :l
			make "l :l*0.8
			make local "xxx m.store
			m.left 60
			fern 3*:l :level+1 :ang/2
			m.restore :xxx
			m.right 60
			fern 3*:l :level+1 :ang/2
			m.restore :xxx
			m.down :ang
		]
	]
	m.restore :m0
end

m.up 90
m.back 25
fern 80 0 25

;make "onbeforedraw.fog fog "true 170 100 0.5 rgb 0 0 0
make "onbeforedraw.fog fog "true 140 100 0.5 rgb 0 0 0
make "onbeforedraw.clearcolor clearcolor 0 0 0

repeat 100000
[
	changeview
]

fact (Factorial Operator, simple recursion) Floor_map (one 3d storey of a house)