![]() | ![]() | ![]() | Spirale de Baravelle |
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)
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.
![]() | ![]() | ![]() | Spirale de Baravelle |