# DrGeo

GNU Dr. Geo es un software de geometría interactiva que permite a sus usuarios diseñar y manipular croquis geométricos interactivos. Es software libre (el código fuente, las traducciones, los iconos y el instalador están liberados bajo la licencia GNU GPL), creado por Hilaire Fernandes. Se ejecuta sobre un sistema gráfico Morphic (lo cual significa que corre en GNU/Linux, Mac OS, Windows, Android). La versión actual de Dr. Geo es conocida como Geo II. Históricamente Dr. Geo ha sido desarrollado en C++ y Dr. Geo II se ha reescrito completamente usando Pharo desde el año 2005. Este artículo se refiere en su mayoría a la versión más reciente.

## Objetos

Dr. Geo manipula diferentes clases de objetos como puntos, líneas, círculos, bloque de código.

### Puntos

Dr. Geo tiene varias clases de puntos: los puntos libres, los cuales pueden ser movidos con el ratón (pero pueden estar enlazados a una curva) y los puntos definidos por sus coordenadas.
Los puntos también pueden ser creados como la intersección de dos curvas o como los puntos medios de un segmento.

### Líneas

Dr. Geo está equipado con los clásicos tipos línea, rayo, segmento y vector.
Otros objetos curvilíneos incluyen círculos (definidos por dos puntos, un centro y un segmento o un radio), arcos (definidos por tres puntos o su centro y ángulo), polígonos (regulares o no, definidos por sus puntos finales), y lugares geométricos.

### Transformaciones

Además de la línea paralela y la perpendicular a través de un punto, Dr. Geo puede aplicar a un punto o una línea una de estas transformaciones:
* Reflexión
* Simetría
* Traslación
* Rotación
* Homotecia

### Macro-Construcción

Dr. Geo viene con macro-construcción: una manera de añadir construcciones nuevas a Dr. Geo. Usado para añadir objetos nuevos a Dr. Geo: nuevas transformaciones usando Inversión (geometría), construcciones tediosas que usan muchos objetos intermedios o construcciones que requieren un script (también llamado macro-script).
Cuándo algunos objetos, llamados finales dependen de otros objetos, llamados iniciales, se puede crear una construcción compleja que deduce los objetos finales que quiera crear el usuario de los objetos iniciales dados. Esta es un macro-construcción, un gráfico de objetos interdependientes.

## Programando

Acceder a la programación de usuario es la esencia de Dr. Geo: desde el software, el usuario puede directamente leer, estudiar, modificar y redistribuir una versión modificada de Dr. Geo. Además, es posible usar scripts incrustados en los sketchs.
El código fuente de Dr. Geo está creado en Smalltalk. Es también el lenguaje utilizado para la programación de usuario: extender Dr. Geo con operaciones de cálculo arbitrarias (Smalltalk script) y definir sketch geométricos solamente programando instrucciones (Smalltalk sketch).
Dr. Geo es distribuido con su código fuente y sus herramientas de desarrollador. Por lo tanto su código puede ser editado y recompilado mientras Dr. Geo está funcionando. Este diseño, heredado de Pharo Smalltalk, hace fácil probar ideas y diseños nuevos.

### Smalltalk script

Un script es un objeto de primera clase definido con un código de Dr. Geo. Puede tener cero, uno o varios argumentos, de cualquiera de los tipos seleccionados cuándo se define el script. Cuándo una parte de una secuencia de comandos esta conectada en un canvas, el usuario primero selecciona sus argumentos en el canvas con clics del ratón, entonces la posición en el canvas es la salida del script. El script es actualizado en cada cálculo del canvas. Los scripts pueden ser utilizados en cascada, con uno como el argumento de otro.
El script está diseñado para ser utilizado en dos maneras diferentes:
* Producir un objeto (i.e. es un valor numérico) y mostrar su resultado en el canvas. Este resultado puede ser utilizado para construyendo objetos en secuencia (geométricos o script).
* Para acceder a objetos en el canvas: modelo (MathItem) o vista (Costume) para usos arbitrarios y modificaciones. Por ejemplo para modificar el color de un objeto dado el resultado de un cálculo.
A partir del script, el modelo de argumentos es creado con los métodos #arg1, #arg2, etc. La vista de argumentos está lograda con los métodos #costume1, #costume2, etc.
El cálculo del script está hecha en su #computar método. Por ejemplo, para calcular la plaza de un número, el script
Crea un objeto numérico, cuyo valor es la plaza del objeto de número del argumento. Siempre que el primer número está cambiado, el script cambios de valor regresado también.

### Smalltalk Sketch

Smalltalk Sketch de Dr. Geo – (DSS) – son sketchs enteramente definidos en el lenguaje Smalltalk. Esto no es aproximadamente construyendo un croquis con el Dr. Geo interfaz gráfica, pero aproximadamente describiendo un croquis con el Smalltalk lengua. Una interfaz de programación con una sintaxis fácil y ligera está proporcionada.
Así es como Dr. Geo puede crear un Triángulo de Sierpinski de forma recursiva:

## Premios

* ESUG Premios de Tecnología de la innovación (en inglés) (Ámsterdam, 2008)
* AFUL Premios de Software libre (en francés) (París, 2000)