![]() | ![]() | ![]() | Frattali |
La costruzione di una curva frattale a forma d'albero si può realizzare facilmente utilizzando una FSD. Il codice sorgente della figura è incredibilmente compatto e incomparabilmente più efficiente rispetto all'esecuzione della figura attraverso l'interfaccia grafica.
(new-figure "Albero") (lets Numeric "A1" free 2 2 +3.4) (lets Numeric "A2" free 2 3 -3.7) (lets Numeric "S1" free 2 4 +0.5) (lets Numeric "S2" free 2 5 +0.9) (define (dec n) (- n 1)) (define (inc n) (+ n 1)) (define (invisible p) (send p masked) p) (define (scalerot oP C a s) (let* ((sP (invisible (Point "" scale oP C s))) (rP (invisible (Point "" rotation sP C a))) ) rP)) (define (Ramo p0 p1 n) (Segment "" extremities p0 p1) (let* ((left-scale (if (odd? n) S1 S2)) (left-angle A1) (right-scale (if (odd? n) S2 S1)) (right-angle A2) ) (if (> n 0) (begin (Ramo p1 (scalerot p0 p1 left-angle left-scale) (dec n)) (Ramo p1 (scalerot p0 p1 right-angle right-scale) (dec n)))))) (lets Point "A" free -3 0) (lets Point "B" free -3 2) (Ramo A B 6)
![]() | ![]() | ![]() | Frattali |