# DrGeo

El Dr. Geo GNU, i més tard anomenat Dr. Geo II, és un programari de geometria interactiva que permet als seus usuaris dissenyar i manipular esbossos geomètrics interactius. És programari lliure (codi font, traduccions, icones i instal·lador es publiquen sota llicència GNU GPL), creat per Hilaire Fernandes, i forma part del projecte GNU. S'executa sobre un sistema gràfic Morphic (el que significa que es pot executar a Linux, Mac OS, Windows, Android). Dr. Geo es va desenvolupar en C++ i Dr. Geo II és una reescriptura completa amb Pharo de l'any 2005.

## Objectes
### Punts

El Dr. Geo manipula diferents tipus d'objectes com ara punts, línies, cercles, blocs de codi.
Té diversos tipus de punts: un punt lliure, que es pot moure amb el ratolí (però es pot adjuntar a una corba) i un punt a partir de les seves coordenades.
Els punts també es poden crear com a intersecció de 2 corbes o com a punt mitjà d'un segment.

### Línies

El Dr. Geo està equipat amb la línia clàssica, raig, segment i vector.
Altres objectes curvilinis inclouen cercles (definits per 2 punts, un centre i segment o un radi), arcs (definits per tres punts o centre i angle), polígons (regulars o no, definits per punts finals) i llocs.

### Transformacions

A més de la recta paral·lela i perpendicular que passa per un punt, el Dr. Geo pot aplicar a un punt o una línia una d'aquestes transformacions:
* reflexió
* simetria
* traducció
* rotació
* homotecia

### Macroconstrucció

El Dr. Geo ve amb macro-construcció: una manera d'ensenyar al Dr. Geo noves construccions. Permet afegir nous objectes a Dr. Geo: noves transformacions com la inversió de cercles, construccions tedioses que impliquen molts objectes intermedis o construccions que impliquen script (també anomenada macro-script).
Quan alguns objectes, anomenats finals, depenen d'altres objectes, anomenats initial, és possible crear una construcció complexa deduint els objectes finals dels objectes inicials donats per l'usuari. Aquesta és una macro-construcció, un gràfic d'objectes interdependents.

## Programació

L'accés a la programació d'usuari és l'essència de Dr. Geo: des del programari, l'usuari pot llegir, estudiar, modificar i redistribuir directament la versió modificada de Dr. Geo. A més, es mostra l'script adjunt a l'esbós.
El codi font del Dr. Geo és Pharo. També és el llenguatge utilitzat per a la programació d'usuaris: estendre el Dr. Geo amb operacions informàtiques arbitràries (script Pharo) i definir un esbós geomètric totalment amb instruccions de programació (esbós Pharo).

## Script Pharo

Un script és un objecte de primera classe definit al llarg del codi Dr. Geo. Ve amb zero, un o diversos arguments, dels tipus seleccionats en definir l'script. Quan una instància d'un script està connectada a un canvas, l'usuari selecciona primer els seus arguments al canvas amb el ratolí i després la posició al llenç de la sortida de l'script. L'script s'actualitza a cada càlcul del canvas. Els scripts es poden utilitzar en cascada, amb un d'ells com a argument d'un altre.
Els scripts estan dissenyats per ser utilitzats de dues maneres diferents:
* Per mostrar un objecte (és a dir, un valor numèric) i mostrar el seu resultat al llenç. Aquest resultat es pot utilitzar quan es construeixen objectes posteriors (geomètrics o guió).
* Per accedir als objectes del llenç: model (MathItem) o vista (Costume) per a usos i modificacions arbitraris. Per exemple, per modificar el color d'un objecte donat el resultat a un càlcul.
Des de l'script, s'arriba al model d'arguments amb els mètodes #arg1, #arg2, etc. La vista d'arguments s'arriba amb els mètodes #costume1, #costume2, etc.
El càlcul de l'script es fa amb el seu mètode #compute. Per exemple, per calcular el quadrat d'un nombre, l'script
crea un objecte numèric, el valor del qual és
el quadrat de l'objecte número argument. Sempre que es canvia el primer número, el valor retornat de l'script també canvia.

## Esbós Pharo

Els esbossos del Dr. Geo Pharo són esbossos totalment definits en el llenguatge Pharo. No es tracta de construir un esbós amb la interfície gràfica del Dr. Geo, sinó de descriure un esbós amb el llenguatge Pharo. Es proporciona una interfície de programació amb una sintaxi fàcil i lleugera.

### Triangle de Sierpinski

A continuació es mostra com programar un triangle de Sierpinski de manera recursiva:

### Espiral de Fibonacci

Una espiral de Fibonacci programada amb transformacions geomètriques (rotació, translació i homotècia):

### Algorisme de Newton-Raphson

Pharo sktech es pot utilitzar per dissenyar esbós interactiu que demostri el mètode d'anàlisi numèrica:

### Cercle circumscrit en francès

Una versió francesa de l'API Pharo sketch permet escriure codi font en aquest idioma:

## Premis

* Premis ESUG Innovation Technology Awards Arxivat 2023-11-29 a Wayback Machine. (Amsterdam, 2008)
* Premis AFUL de programari lliure (París, 2000)

## Vegeu també

* Construcció amb regle i compàs

## Referències

* ↑ Video tutorial on Pharo script
* ↑ Video demonstration on programmed sketch