Render.ru

Дерево Пифагора

Олег Нарижный

Пользователь сайта
Рейтинг
2
#1
Пытался писать логично, все получилось, попробовал понять писание в Listener, но это удалось крайне приблизительно.Прошу объяснить эти танцы рекурсии. Заранее благодарен.


clearListener()
fn DP d mx my ug dug n = (
if(n == 0) then (format"Ah!\n")
else(
vec = d*cos(45) * [cos(ug + 45), sin(ug + 45),0]
mr = [mx, my,0] + vec

r = rectangle length:d width:d
r.pos = mr
r.wirecolor = white
rotate r (angleaxis ug [0,0,1])

m = mr + d*cos(45) * [cos(ug + 45 + 90), sin(ug + 45 + 90),0]
format"do 1-go vizova n = %\n" n
DP (d * cos(dug)) m.x m.y (ug + dug) dug (n - 1)
format"posle 1-go vizova n = %\n" n
m1 = mr + d*cos(45) * [cos(ug+45), sin(ug+45),0]
m2 = d * sin(dug) * [cos(ug+90+dug), sin(ug+90+dug),0]
mm = m1 + m2

DP (d*sin(dug)) mm.x mm.y (ug - 90 + dug) (dug) (n - 1)
format"posle 2-go vizova n = %\n" n
)
)

DP 100 0 0 0 30 3


MAXListener
do 1-go vizova n = 3
do 1-go vizova n = 2
do 1-go vizova n = 1
Ah!
posle 1-go vizova n = 1
Ah!
posle 2-go vizova n = 1
posle 1-go vizova n = 2
do 1-go vizova n = 1
Ah!
posle 1-go vizova n = 1
Ah!
posle 2-go vizova n = 1
posle 2-go vizova n = 2
posle 1-go vizova n = 3
do 1-go vizova n = 2
do 1-go vizova n = 1
Ah!
posle 1-go vizova n = 1
Ah!
posle 2-go vizova n = 1
posle 1-go vizova n = 2
do 1-go vizova n = 1
Ah!
posle 1-go vizova n = 1
Ah!
posle 2-go vizova n = 1
posle 2-go vizova n = 2
posle 2-go vizova n = 3
 
Последнее редактирование:
Сверху