DrGeo

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
DrGeo
Image illustrative de l'article DrGeo
Logo

Développeur Hilaire Fernandes
Dernière version 1.0 (2005)
Environnement GNOME
Type Géométrie dynamique
Licence GNU GPL
Site web http://www.ofset.org/drgeo

DrGeo est un logiciel libre de géométrie dynamique créé par Hilaire Fernandes sur plateforme Gnu/Linux.

Formats de fichier[modifier | modifier le code]

DrGeo a son propre format de fichier, sans extension. Il peut exporter en PNG, en PostScript, en LaTeX ou en FlyDraw.

Objets[modifier | modifier le code]

Objets prédéfinis[modifier | modifier le code]

courbes

DrGeo construit des points, y compris d'intersection, des droites, des segments et vecteurs, des cercles, des lieux de points, des polygones, des arcs de cercle.

Transformations[modifier | modifier le code]

DrGeo peut lier un point à une courbe, et construit des parallèles et perpendiculaires à une droite donnée, et les images de points par symétrie axiale, symétrie centrale, translation, rotation et homothétie.

Propriétés des objets[modifier | modifier le code]

On peut modifier a posteriori la couleur et le nom d'un objet, mais ceci se fait avec une boîte de dialogue modale qui cache la figure.

Langage de script[modifier | modifier le code]

scripts

DrGeo permet de créer des objets par un langage de script, qui n'est pas propre à DrGeo puisqu'il s'agit de Scheme.

Dans la figure[modifier | modifier le code]

Après avoir créé une variable numérique, par exemple 3, en créant un objet de type script dans la figure, et en cliquant sur le nombre, on crée un script accessible dans la figure, et admettant en entrée la variable numérique, qui s'appelle automatiquement a1. Pour implémenter la fonction carré, on peut mettre dans le script

(define x (getValue a1))
(* x x)

La variable x est donc affectée par la variable numérique a1 puis son carré est calculé (c'est le produit de x par lui-même) et automatiquement affiché comme une variable numérique, dans l'exemple présent, on verra donc un 9 (puisque 3^2=9). Ensuite on peut créer une macro avec le 3 comme objet initial et le 9 comme objet final, qui implémente la fonction carré comme objet DrGeo.

On peut également obtenir des variables numériques par sélection d'objets géométriques et lecture de leurs grandeurs (longueur, angle, coordonnées etc). Par exemple, si lors de la création d'un script, on sélectionne un point, l'argument a1 sera ce point et pas un nombre. Pour définir une transformation par un script, il faut créer deux objets par script (un pour l'abscisse et un pour l'ordonnée) parce que la sortie d'une fonction Scheme est nécessairement un nombre. Par exemple, comme (x+iy)^2=x^2-y^2+i(2xy), le carré d'un nombre complexe est donné par deux scripts, chacun ayant pour objet d'entrée, le point préalablement créé.

Pour la partie réelle:

(define x (car (getCoordinates a1)))
(define y (cadr (getCoordinates a1)))
(- (* x x) (* y y))

et pour la partie imaginaire:

(define x (car (getCoordinates a1)))
(define y (cadr (getCoordinates a1)))
(* 2 x y)

Une fois ces deux nombres présents à l'écran, on peut créer un point par ses coordonnées, en lui donnant bien entendu pour coordonnées les deux nombres trouvés, et définir une macro pour la transformation ainsi matérialisée (en choisissant le premier point pour objet initial, et le point défini par coordonnées comme objet final).

Création de figure par script[modifier | modifier le code]

Lorsqu'un script est inséré dans la figure, la valeur numérique retournée par celui-ci est affichée, et peut être réutilisée dans la figure. Cependant l'avantage essentiel d'un langage de script est la possibilité qu'il offre de construire des figures complexes. Pour pouvoir réaliser cela, il est nécessaire de décrire la construction en langage Scheme dans un fichier texte ayant l'extension scm. DrGeo va alors interpréter ce fichier, en construisant la figure.

Par exemple, la version récursive du triangle de Sierpinski dynamique (A, B et C sont libres) est obtenue avec le script suivant:

(new-figure "Sierpinski")
(define (sierpin p1 p2 p3 n)
 
(let* (  
 
    (p4 (Point "" milieu-2pts p2 p1))
    (p5 (Point "" milieu-2pts p2 p3))
    (p6 (Point "" milieu-2pts p3 p1))
 
    (q1 (Polygone "" npoints p1 p4 p6))
    (q2 (Polygone "" npoints p2 p4 p5))
    (q3 (Polygone "" npoints p3 p5 p6)))  
 
 
    (if (> n 1)
    (begin
    (envoi q1 masquer)
    (envoi q2 masquer)
    (envoi q3 masquer)))    
 
    (envoi p4 masquer)
    (envoi p5 masquer)
    (envoi p6 masquer)
 
    (if (> n 0)
    (begin 
     (sierpin p1 p4 p6 (- n 1))
     (sierpin p2 p4 p5 (- n 1))
     (sierpin p3 p5 p6 (- n 1))))))
 
(soit Point "A" free -3 -1)
(soit  Point "B" free 3 -1)
(soit Point "C" free 0 3)
 
(sierpin A B C 5)

Cette version récursive est à comparer avec la version itérative de Kig et avec le CarScript, lui aussi itératif.

Continuation[modifier | modifier le code]

DrGeo a fait place à DrGeoII qui est multiplateforme.