En lui-même Scheme est un langage de très haut niveau, lorsqu'une figure est définie dans ce langage, nous disposons également de toute sa puissance pour par exemple définir récursivement telle partie de la figure, ou bien pour placer aléatoirement certains objets de telle sorte qu'à chaque ouverture de la figure, celle-ci est légèrement différente. Bref, les FSD sont libérées du carcan de l'interface graphique tout en étant renforcées du langage Scheme. Une FSD est donc un fichier d'extension .scm créé à l'aide d'un éditeur de texte, il est ensuite ouvert dans DR. GEO à l'aide de la commande Fichier->Évaluer.
Commençons par étudier un exemple simple de FSD :
(nouvelle-figure "Ma figure")
C'est la plus petite FSD que nous puissions définir. Lors de son chargement dans DR. GEO, celle-ci va simplement créer une nouvelle figure vide nommée "Ma figure". Nous pourrions multiplier les commandes (nouvelle-figure "Ma figure") autant de fois que nous le souhaitons, autant de figures seraient créées.
Abordons un deuxième exemple :
(nouvelle-figure "Ma figure") (soit Point "A" libre 1.2 -2)
Cette FSD définit une figure avec un point libre A de coordonnées initiales (1,2 ; -2). Comme nous pouvons le voir la syntaxe de définition d'un objet géométrique est relativement agréable, d'autant plus qu'elle est exprimée dans une langue naturelle. Intéressons-nous de plus près à la deuxième instruction, en effet celle-ci suit une syntaxe qui est commune à toutes les commandes de définition d'objet. Ce type de commande se décompose comme suit :
Poursuivons avec un troisième exemple :
(define (triangle p1 p2 p3) (Segment "" extrémités p1 p2) (Segment "" extrémités p2 p3) (Segment "" extrémités p1 p3)) (define (hasard) (- 8 (* 16 (random:uniform)))) (nouvelle-figure "Ma figure") (soit Point "A" libre (hasard) 0) (soit Point "B" libre 5 0) (soit Point "C" libre (hasard) 5) (triangle A B C)
Cet exemple est particulièrement intéressant, il nous montre trois choses importantes :
Noter que lors de la définition des segments, nous ne donnons pas de nom, dans ce cas DR. GEO va attribuer un nom par défaut défini à partir du nom des extrémités. Nos trois segments auront donc comme nom [AB], [BC] et [AC].
Pour clore cette section, voici un dernier exemple :
(soit Point "A" libre 1 0) (soit Point "B" libre 5 0) (soit Droite "d1" 2points A B) (envoi A couleur jaune) (envoi A forme rond) (envoi A taille large) (envoi B masquer) (envoi d1 épaisseur tiret)
Les trois premières commandes créent deux points et une droite. La partie qui nous intéresse plus particulièrement est la commande envoi. Cette commande permet de communiquer avec un objet dont nous avons gardé un symbole, ici nous avons les symboles A, B et d1. Elle consiste à envoyer un message à un objet, son premier argument est l'objet avec lequel nous communiquons, le deuxième argument le message, le troisième et les suivants sont déterminés par la nature du message. Par exemple (envoi A couleur jaune) envoie le message couleur avec comme paramètre jaune, le point A est peint en jaune. Il est assez facile de comprendre le sens des autres commandes envoi. Elles seront expliquées dans la section suivante.
Nous avons terminé notre petite visite guidée des Figure Scheme Dr. Geo. Dans les sections suivantes nous exposons l'ensemble des commandes disponibles pour définir des FSD.