Page 72 - AutoLISP и Visual LISP в среде AutoCAD
P. 72
(setq newsize size)
(repeat 8 ; количество подуровней
(setq xnew (+ x (* newsize (cos (* i step)))))
(setq ynew (+ y (* newsize (sin (* i step)))))
(Sneg xnew ynew (/ newsize 5)) ;РЕКУРСИЯ !!!
(setq newsize (/ (* newsize 2) 3))
);repeat
(setq i (1+ i))
);repeat
);progn
);if
(prin1)
);defun
;***************** ОСНОВНАЯ ЧАСТЬ ****************
(Sneg 400 400 240) ; РИСУЕМ СНЕЖИНКУ
(command "_ZOOM" "_e") ; Покажи границы рисунка
;*************************************************
Рис.6. Фрактальная снежинка.
488300 окружностей!
Еще одним примером фрактала является фрактал ДЕРЕВО. Обратите
внимание, на возможность изменять угол наклона веток и управлять густотой
кроны. Результат работы программы представлен на рис.7.
;******** Генератор случайных чисел 0..1 **************
(defun Random (/ modulus multiplier increment random )
(if (not *seed*)
(setq *seed* (getvar "DATE"))
)
(setq modulus 65536
multiplier 25173
increment 13849
*seed* (rem (+ (* multiplier *seed*) increment) modulus)
Random (/ *seed* modulus)
)
);defun
;******** Генератор случайных целых чисел 0..x ********
(defun RRandom (x / R)
(setq R (fix (* x (Random))))
71