|  |  | Frattali

### Frattali

La costruzione di una curva frattale a forma d'albero si può fare 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)

Curva frattale

|  |  | Frattali