Comme nous l'avons vu précédement, à l'aide de FSD il est possible de construire de façon intuitive et simple des figures permettant de visionner des situations qui en programmation sont récursives - ou cycliques.
Nous pouvons un peu approfondir cet aspect, en modifiant le code Scheme utilisé pour la construction des nombres irrationnels, afin d'obtenir une figure fameuse de la littérature des mathématiques, à savoir la spirale de Baravelle.
Le code Scheme définissant la spirale est le suivant :
(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)
À partir de la figure et du code Scheme correspondant nous percevons bien la nature itérative du mécanisme de construction de la figure. Un problème intéressant que nous laissons au lecteur, consiste à établir à quel moment les deux rameaux de la spirale convergent.
Une petite variation supplémentaire du code précédent :
(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)
conduit à une spirale simplifiée.
Le lecteur est invité à se divertir en créant de nouvelles variations !