Como vimos anteriormente, con la ayuda de una FSD es posible construir de manera intuitiva y simple figuras que permiten visualizar situaciones que en un programa son ya sea iterativas o recursivas.
Profundicemos un poco más en este aspecto. Modificando el código Scheme utilizado para la construcción de los números irracionales, podemos obtener una figura famosa en la literatura matemática: la espiral de Baravelle.
El código Scheme que define la espiral es el siguiente :
(new-figure "Baravelle") (define (triangle p1 p2 p3 n) (let* ((s1 (Segment "" extremities p1 p2)) (s2 (Segment "" extremities p2 p3)) (s3 (Segment "" extremities p3 p1)) (m (Point "" middle-2pts p1 p3)) (r (Segment "" extremities m p3)) (pe (Line "" orthogonal p3 s3)) (ci (Circle "" center-segment p3 r )) (p4 (Point "" intersection2 pe ci))) (send pe masked) (send ci masked) (send p4 masked) (send m masked) (if (> n 0) (triangle m p3 p4 (- n 1))))) (lets Point "A" free 0 5) (lets Point "B" free 5 5) (lets Point "C" free 5 0) (triangle A B C 9) (lets Point "D" free 0 -5) (lets Point "E" free -5 -5) (lets Point "F" free -5 0) (triangle D E F 9)
Con base en la figura y en el código Scheme correspondiente, vemos claramente la naturaleza iterativa del mecanismo de construcción de la figura. Un problema interesante, que dejamos al lector, consiste en establecer en qué momento las dos ramas de la espiral convergen.
Una pequeña variación al código precedente :
(new-figure "Spirale") (define (square p1 p2 p3 p4 n) (let* ((s1 (Segment "" extremities p1 p2)) (s2 (Segment "" extremities p2 p3)) (s3 (Segment "" extremities p3 p4)) (s4 (Segment "" extremities p4 p1)) (A (Point "" on-curve s1 1/10)) (B (Point "" on-curve s2 1/10)) (C (Point "" on-curve s3 1/10)) (D (Point "" on-curve s4 1/10))) (send A masked) (send B masked) (send C masked) (send D masked) (if (> n 0) (square A B C D (- n 1))))) (lets Point "M" free 5 5) (lets Point "N" free -5 5) (lets Point "O" free -5 -5) (lets Point "P" free 5 -5) (square M N O P 30)
Obtenemos, pues, una espiral simplificada.
El lector está invitado a divertirse creando nuevas variaciones.