Taller de Lenguajes de Programación

De un rectángulo a·b a una letra con Turtle

Toda letra "cuadrada" cabe dentro de un rectángulo de ancho a y alto b (con b > a). Primero aprendemos a dibujar ese rectángulo guía, luego usamos a y b para calcular puntos internos (como 3b/5) y así trazar la letra — sin curvas, solo líneas rectas.

Paso 1

El rectángulo guía: A, B, C, D

Definimos un punto de partida A = (0,0) y avanzamos como la tortuga: A → B → C → D → A. El ancho del recorrido es a y el alto es b. Mové los controles y presioná “Reproducir” para ver cómo la tortuga traza el contorno.

⚠️ Para que la letra se vea "de pie" como en un cuaderno, se recomienda que b > a (más alta que ancha).

Orden de recorrido: A(0,0) → B(a,0) → C(a,b) → D(0,b) → A

Paso 2

Del rectángulo a la letra

Una vez que sabemos trazar el rectángulo, la letra se arma reutilizando sus 4 lados y agregando una o dos barras internas cuya posición se calcula en función de a y b — igual que d = (3*b)/5 en el script de letra_a. A esto lo llamamos "segmentos", como en un display de calculadora: combinando 7 segmentos posibles se pueden formar muchas letras sin usar curvas.

T B TL BL TR BR M (d)
T — lado superior (D→C)
B — lado inferior (A→B)
TL — mitad superior izquierda
BL — mitad inferior izquierda
TR — mitad superior derecha
BR — mitad inferior derecha
M — barra media, a altura d
La altura d de la barra media es una fracción de b, distinta para cada letra (ej: d = 3b/5 para la A, d = b/2 para la H o la E).
LetraSegmentos usadosAltura de la barra media (d)
AT · TL · TR · M · BL · BRd = 3b/5
HTL · TR · M · BL · BRd = b/2
ET · TL · M · BL · Bd = b/2
TT · barra central vertical—
OT · TL · TR · BL · BR · B— (es el rectángulo completo)

Así se ve tu script original para la letra A — el bloque negro dibuja el rectángulo guía y el bloque azul agrega la barra media saltando con teleport:

# fragmento de letra_a(a, b) color("black") left(90); forward(b); left(90); forward(a) left(90); forward(b); left(90); forward(a) # rectángulo guía d = (3*b)/5 color("blue") teleport(p, d) # salta a la altura de la barra media right(90); forward(a) # traza la barra
Paso 3

La misma letra, en cualquier punto (x₀, y₀)

Hasta acá siempre arrancamos a dibujar en el origen (0,0). Pero forward, left y right son instrucciones relativas: mueven a la tortuga según hacia dónde está mirando, no según una coordenada fija del plano. Por eso, si antes de dibujar hacemos teleport(x₀, y₀), la misma secuencia de giros y avances traza exactamente la misma letra — solo que apoyada sobre el punto (x₀, y₀) en vez de (0,0). Esta idea es la que nos va a permitir, más abajo, escribir una palabra completa.

El único lugar donde sí necesitamos una coordenada absoluta es en los saltos internos de teleport (como el de la barra media): ahí alcanza con sumarle el offset (x₀, y₀) a la posición local que ya veníamos calculando en el paso 2.

A0 = (x₀, y₀)B0 = (x₀+a, y₀)
C0 = (x₀+a, y₀+b)D0 = (x₀, y₀+b)
ML = (x₀, y₀+d)MR = (x₀+a, y₀+d)

a y b quedan fijos (70 y 140) para que se note claramente que solo se mueve el punto de apoyo de la letra.

De la teoría a escribir palabras

Para escribir una palabra, cada letra ocupa una "casilla" de ancho a más un espacio en blanco. Si la primera letra arranca en x₀, la letra número i (empezando en 0) arranca en:

ancho_casilla = a + espacio xi = x₀ + i · ancho_casilla
x₀ x₀ + (a+espacio) x₀ + 2(a+espacio) a espacio

Es la versión "calculada" de lo que tu script hace a mano con teleport(100,0) y teleport(200,0): ahí 100 y 200 son, en los hechos, múltiplos de a + espacio escritos como números fijos en vez de una fórmula.

Paso 4

Galería de letras cuadradas

Elegí una letra y los mismos valores de a y b que usaste en el paso 1 generan automáticamente su recorrido con forward, left, right y teleport.

Las líneas punteadas muestran los saltos de teleport (lápiz arriba, sin dibujar).

Paso 5 · Bonus

Escribe una palabra

Igual que tu script llama tres veces a letra_a y usa teleport(100,0), teleport(200,0) para separarlas, acá encadenamos varias letras del set disponible (A C E F H I L O T U) usando la fórmula xi = x₀ + i·(a+espacio) del paso anterior.