Ёлку можно построить программой
IFS Builder 3d, если задать такие параметры:
Код:
camera position (0,0,-100) vertical(0,1,0) fov(50);
light color (0.1,1,0,.8) position (1, 1,-2);
f1 := translate(0,1/5,0)*rotate(0,0,1,60)*scale(1/4);
f2 := translate(0,2/5,0)*rotate(0,0,1,60)*scale(1/4);
f3 := translate(0,3/5,0)*rotate(0,0,1,60)*scale(1/4);
f4 := translate(0,1/5,0)*rotate(0,0,1,-60)*scale(1/4);
f5 := translate(0,2/5,0)*rotate(0,0,1,-60)*scale(1/4);
f6 := translate(0,3/5,0)*rotate(0,0,1,-60)*scale(1/4);
f7 := translate(0,4/5,0)*scale(1/4);
f8 := scale(0,4/5,0);
build Tree = f1(Tree)+f2(Tree)+f3(Tree)+f4(Tree)+f5(Tree)+f6(Tree)+f7(Tree)+f8(Tree);
Эта ёлка порождается 8-мью афинными отображениями. При необходимости их можно легко привести к виду: f(x)=A*x+b (умножение на матрицу плюс сдвиг), если учесть, что translate - это чистый сдвиг на вектор, rotate(0,0,1,+/-60) - поворот на +/-60 градусов, вокруг оси (0,0,1), scale(1/4) - сжатие в четыре раза. Все преобразования переводят плоскость XY в себя, следовательно фрактал плоский. IFS Builder 3d позволяет, используя ассоциативность, записать последнюю строчку в более кратком виде:
build Tree = (f1+f2+f3+f4+f5+f6+f7+f8) Tree;
Если остались вопросы (возможно я что-то слишком кратко объяснил), спрашивайте!