Aller au contenu

DrGeo

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 15 novembre 2020 à 08:29 et modifiée en dernier par Harrieta171 (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
DrGeo
Description de l'image Dr. Geo mascot.svg.
Description de cette image, également commentée ci-après
Capture d'écran de DrGeo d'un modèle de télescope de Newton
Informations
Créateur Hilaire Fernandes (d)Voir et modifier les données sur Wikidata
Développé par Hilaire Fernandes
Première version [1]Voir et modifier les données sur Wikidata
Dernière version 19.09 ()
Dépôt github.com/hilaire/drgeo.gitVoir et modifier les données sur Wikidata
Écrit en Smalltalk
Système d'exploitation GNU/Linux et Microsoft WindowsVoir et modifier les données sur Wikidata
Environnement Windows, GNU/Linux, Mac OS X
Formats lus Dr.Geo document (d)Voir et modifier les données sur Wikidata
Formats écrits Dr.Geo document (d), Portable Network Graphics et SVGVoir et modifier les données sur Wikidata
Type Géométrie dynamique
Licence GNU GPL
Documentation www.gnu.org/software/dr-geo/doc/en/index.html#TopVoir et modifier les données sur Wikidata
Site web www.gnu.org/software/dr-geoVoir et modifier les données sur Wikidata

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

Formats de fichier

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

Objets

Objets prédéfinis

User defined function plotted with its dynamic tangent
Curve & tangent

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

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

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

scripts

Cette section est obsolète et devrait être corrigée. Dr. Geo utilise Pharo comme langage d'implémentation et de script -- voir la version anglaise de l'article.

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

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 ). 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 , 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

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

DrGeo a fait place à DrGeoII qui est multiplateforme.

Notes et références

  1. (en) Hilaire Fernandes, « A Brief History of GNU Dr. Geo », [[Modèle:Article|{{Article}} : paramètre « titre » manquant, paramètre « périodique » manquant, paramètre « date » manquant]] : paramètre « périodique » manquant, paramètre « date » manquant (lire en ligne, consulté le ) :

    « I started the design of Dr. Geo in March 1996. »

    Voir et modifier les données sur Wikidata