En el campo de la informática gráfica , los gráficos de tortuga son gráficos vectoriales que utilizan un cursor relativo (la " tortuga ") sobre un plano cartesiano (ejes x e y) . Los gráficos de tortuga son una característica clave del lenguaje de programación Logo . [1]
La tortuga tiene tres atributos: una ubicación, una orientación (o dirección) y un bolígrafo. El bolígrafo también tiene atributos: color, ancho y estado encendido/apagado (también llamado abajo y arriba ).
La tortuga se mueve con órdenes relativas a su propia posición, como "avanzar 10 espacios" y "girar 90 grados a la izquierda". El bolígrafo que lleva la tortuga también se puede controlar, activándolo, configurando su color o su ancho. Un estudiante podría comprender (y predecir y razonar) el movimiento de la tortuga imaginando lo que haría si fuera la tortuga. Seymour Papert llamó a esto razonamiento "sintónico corporal".
Un sistema completo de gráficos de tortugas requiere un flujo de control, procedimientos y recursión: muchos programas de dibujo de tortugas no cumplen con estos requisitos. A partir de estos bloques de construcción, se pueden construir formas más complejas, como cuadrados, triángulos, círculos y otras figuras compuestas. La idea de los gráficos de tortugas, por ejemplo, es útil en un sistema Lindenmayer para generar fractales .
La geometría de tortuga también se utiliza a veces en entornos gráficos como alternativa a un sistema de gráficos orientado estrictamente a las coordenadas.
Los gráficos de tortuga a menudo se asocian con el lenguaje de programación Logo . [2] Seymour Papert agregó soporte para gráficos de tortuga a Logo a fines de la década de 1960 para respaldar su versión del robot tortuga , un robot simple controlado desde la estación de trabajo del usuario que está diseñado para llevar a cabo las funciones de dibujo asignadas a él utilizando un pequeño lápiz retráctil colocado en el cuerpo del robot o adherido a él. La geometría de tortuga funciona de manera algo diferente a la geometría cartesiana direccionada ( x , y ) , ya que se basa principalmente en vectores (es decir, dirección relativa y distancia desde un punto de inicio) en comparación con los sistemas direccionados por coordenadas, como mapas de bits o gráficos rasterizados. Como cuestión práctica, el uso de la geometría de tortuga en lugar de un modelo más tradicional imita la lógica de movimiento real del robot tortuga. La tortuga se representa tradicionalmente y con mayor frecuencia pictóricamente como un triángulo o un ícono de tortuga (aunque puede representarse con cualquier ícono).
En la actualidad, la biblioteca estándar del lenguaje de programación Python incluye un módulo gráfico Turtle. [3] Al igual que su predecesor Logo, la implementación de Turtle en Python permite a los programadores controlar una o más tortugas en un espacio bidimensional. Dado que la sintaxis estándar de Python, el flujo de control y las estructuras de datos se pueden utilizar junto con el módulo Turtle, Turtle se ha convertido en una forma popular para que los programadores que aprenden Python se familiaricen con los conceptos básicos del lenguaje. [4]
Las ideas detrás de los gráficos de tortugas se pueden extender para incluir el espacio tridimensional. Esto se logra utilizando uno de varios modelos de coordenadas diferentes. Una configuración común es cartesiana-rotacional como con la tortuga 2D original: se define un vector "arriba" adicional ( vector normal ) para elegir el plano en el que rota el vector "adelante" 2D de la tortuga; el vector "arriba" en sí también rota alrededor del vector "adelante". En efecto, la tortuga tiene dos ángulos de rumbo diferentes, uno dentro del plano y el otro que determina el ángulo del plano. Por lo general, cambiar el ángulo del plano no mueve la tortuga, en línea con la configuración tradicional.
Verhoeff 2010 [5] implementa el enfoque de dos vectores; se utiliza un comando de giro para rotar el vector "arriba" alrededor del vector "adelante". El artículo procede a desarrollar una teoría algebraica para demostrar propiedades geométricas a partir de propiedades sintácticas de los programas tortuga subyacentes. Una de las conclusiones es que un comando de inmersión es en realidad una forma abreviada de una secuencia de giro-giro-giro.
Cheloniidae Turtle Graphics es una biblioteca de tortugas 3D para Java . Tiene un comando de inclinación (igual que el de balanceo ) y un comando de inclinación (igual que el de inmersión ) en la "Tortuga cartesiana rotacional". Se permiten otros modelos de coordenadas, incluida la geometría no euclidiana, pero no se incluyen. [6]