![]() | ![]() | ![]() | 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.
ou
rejoignez la liste de diffusion de DR. GEO.![]() | ![]() | ![]() | Spirale de Baravelle |