11. Posición cartesiana de un punto en movimiento circular

El seno y el coseno transforman una posición angular en coordenadas cartesianas. Esta conexión permite calcular, dibujar y verificar trayectorias circulares en un programa.

11.1 Del ángulo a una posición

Hasta ahora describimos un punto de una circunferencia mediante el radio r y la posición angular θ. Para mostrarlo en una gráfica, almacenarlo como parte del estado o calcular distancias necesitamos convertir esa descripción a coordenadas x e y.

El vector que va desde el centro hasta el punto tiene módulo r y forma un ángulo θ con el eje x positivo. Sus componentes se obtienen mediante coseno y seno.

El coseno determina la componente horizontal y el seno determina la componente vertical respecto del centro.

11.2 Circunferencia centrada en el origen

Si el centro está en (0, 0), las coordenadas del punto son:

x = r cos θ     y = r sin θ

El ángulo debe expresarse en radianes al usar las funciones trigonométricas de JavaScript. Para r = 2 m y θ = π/3:

x = 2 cos(π/3) = 1 m     y = 2 sin(π/3) = √3 m

11.3 Centro desplazado

Si la circunferencia tiene centro C = (xc, yc), sumamos esas coordenadas:

x = xc + r cos θ     y = yc + r sin θ

Los términos r cos θ y r sin θ son componentes relativas al centro. Sumar el centro traslada toda la circunferencia sin modificar su radio ni su orientación angular.

x − xc = r cos θ

Proyección horizontal del radio.

y − yc = r sin θ

Proyección vertical del radio.

11.4 Posiciones notables

Coordenadas relativas al centro.
Ángulocos θsin θPosición relativa
010(r, 0)
π/201(0, r)
π−10(−r, 0)
3π/20−1(0, −r)
2π10(r, 0)

Los valores calculados en una computadora pueden quedar extremadamente cerca de cero sin ser exactamente cero debido a la aritmética de punto flotante.

11.5 Verificar que el punto está en la circunferencia

Restamos el centro y calculamos la distancia:

(x − xc)² + (y − yc)² = r²

Al sustituir las ecuaciones paramétricas aparece r²(cos²θ + sin²θ) = r². Esta identidad demuestra que la distancia al centro permanece constante.

En un programa comparamos con una tolerancia, no mediante igualdad exacta, porque seno, coseno y raíces introducen pequeñas aproximaciones numéricas.

11.6 El ángulo como parámetro

Las expresiones x(θ) e y(θ) son ecuaciones paramétricas: el parámetro θ determina simultáneamente ambas coordenadas. Al variar θ de 0 a 2π, el punto recorre una vuelta.

Si θ aumenta, el recorrido es antihorario en un sistema cartesiano con y hacia arriba. Si θ disminuye, el recorrido es horario.

Ángulos que difieren en 2πk producen las mismas coordenadas, porque seno y coseno son periódicos.

11.7 Incorporar el tiempo

Si conocemos θ(t), lo sustituimos en las ecuaciones:

x(t) = xc + r cos[θ(t)]     y(t) = yc + r sin[θ(t)]

Para rotación uniforme, θ(t) = θ0 + ωt:

x(t) = xc + r cos(θ0 + ωt)
y(t) = yc + r sin(θ0 + ωt)

El signo de ω determina el sentido, mientras que su módulo determina qué tan rápido se recorre la circunferencia.

11.8 Coordenadas de pantalla

En el sistema cartesiano habitual, x crece hacia la derecha e y hacia arriba. En Canvas y SVG, x también crece hacia la derecha, pero y suele crecer hacia abajo.

Conversión con origen de pantalla (px, py) y escala q píxeles por metro.
CoordenadaExpresión
Pantalla xxpx = px + q(x − xorigen físico)
Pantalla yypx = py − q(y − yorigen físico)

El signo menos en y invierte el eje para que una coordenada física positiva aparezca hacia arriba. También podemos trabajar directamente con la convención de pantalla, pero debemos documentarla y mantenerla.

11.9 Recuperar radio y ángulo desde x e y

Dado un punto y el centro, definimos dx = x − xc y dy = y − yc. Entonces:

r = √(dx² + dy²)     θ = atan2(dy, dx)

atan2 usa los signos de ambas componentes para identificar el cuadrante correcto. Una función arco tangente aplicada solo al cociente dy/dx pierde información, falla cuando dx = 0 y confunde cuadrantes.

En JavaScript se escribe Math.atan2(dy, dx): primero y, luego x. El resultado pertenece normalmente al intervalo [−π, π].

11.10 Posición no es desplazamiento

Las coordenadas (x, y) indican posición. El vector desplazamiento entre dos instantes es la resta de posiciones finales e iniciales. Su módulo es la cuerda entre ambos puntos, no la longitud del arco recorrido.

Después de una vuelta, las coordenadas finales coinciden con las iniciales y el desplazamiento vectorial es cero, aunque la distancia recorrida sea 2πr.

11.11 Precisión y tolerancias

En JavaScript, Math.cos(Math.PI / 2) no tiene por qué devolver exactamente cero. Para verificar la circunferencia podemos comparar el error:

error = |(x − xc)² + (y − yc)² − r²|

La tolerancia debe guardar relación con la escala. Una alternativa estable es comprobar la distancia mediante Math.hypot(dx, dy) y comparar su diferencia con r.

11.12 Actividad interactiva: del ángulo a la pantalla

Modificá el centro, el radio y el ángulo. El gráfico muestra ejes físicos y las proyecciones horizontal y vertical.

Conversor polar-cartesiano

La escala visual se adapta; los resultados se expresan en coordenadas físicas.

Punto calculado sobre una circunferenciaPunto a sesenta grados respecto de su centro. xy
Ángulo en radianes1,047 rad
Componente relativa(+1,000; +1,732) m
Posición física(+2,000; +2,232) m
Distancia verificada2,000 m

Sumamos al centro las componentes r cos θ y r sin θ para obtener la posición.

11.13 Implementación con JavaScript

function posicionCircular({ centro, radioM, anguloRad }) {
  return {
    x: centro.x + radioM * Math.cos(anguloRad),
    y: centro.y + radioM * Math.sin(anguloRad)
  };
}

function coordenadasPolares(punto, centro) {
  const dx = punto.x - centro.x;
  const dy = punto.y - centro.y;
  return {
    radioM: Math.hypot(dx, dy),
    anguloRad: Math.atan2(dy, dx)
  };
}

const centro = { x: 1, y: 0.5 };
const punto = posicionCircular({
  centro,
  radioM: 2,
  anguloRad: Math.PI / 3
});
console.log(punto); // aproximadamente { x: 2, y: 2.232 }

Las funciones reciben y devuelven coordenadas físicas. La conversión a píxeles pertenece a la capa de visualización, lo que evita mezclar unidades del modelo con unidades de pantalla.

11.14 Ejemplos resueltos

Ejemplo 1: centro en el origen

r = 4 m y θ = 5π/6:

x = 4(−√3/2) = −2√3 m     y = 4(1/2) = 2 m

Ejemplo 2: centro desplazado

C = (−2, 3) m, r = 5 m y θ = π:

x = −2 − 5 = −7 m     y = 3 m

Ejemplo 3: recuperar datos

Desde C = (1, 1), un punto está en P = (−2, 5). Entonces dx = −3 y dy = 4:

r = 5 m     θ = atan2(4, −3) ≈ 2,214 rad

11.15 Errores frecuentes

  • intercambiar seno y coseno con la referencia angular usual;
  • olvidar sumar las coordenadas del centro;
  • pasar grados a Math.sin o Math.cos;
  • usar Math.atan(dy/dx) en lugar de Math.atan2(dy, dx);
  • invertir los argumentos de atan2;
  • ignorar que el eje y de pantalla apunta hacia abajo;
  • confundir el arco con el desplazamiento recto entre extremos;
  • exigir igualdades exactas con números de punto flotante.

11.16 Ejercicios propuestos

  1. Calculá la posición para C = (0, 0), r = 3 m y θ = 2π/3.
  2. Calculá P para C = (2, −1), r = 4 m y θ = 3π/2.
  3. Verificá que P = (6, 5) pertenece a una circunferencia de centro (2, 2) y radio 5 m.
  4. Desde C = (−1, 2), hallá radio y ángulo de P = (2, 2).
  5. Escribí x(t) e y(t) para C = (1, 3), r = 2 m, θ0 = π/2 y ω = −1 rad/s.
  6. Explicá por qué θ y θ + 4π producen las mismas coordenadas.
  7. Convertí la posición física (2, 3) m a pantalla si el origen físico aparece en (300, 250) px y la escala es 40 px/m.
Ver soluciones y explicaciones
  1. P = (−1,5; 3√3/2) m ≈ (−1,5; 2,598) m.
  2. P = (2, −5) m.
  3. dx = 4, dy = 3 y √(4² + 3²) = 5 m; sí pertenece.
  4. dx = 3, dy = 0; r = 3 m y θ = 0 rad.
  5. x(t) = 1 + 2 cos(π/2 − t); y(t) = 3 + 2 sin(π/2 − t).
  6. Seno y coseno repiten sus valores cada 2π; 4π son dos períodos completos.
  7. xpx = 300 + 40·2 = 380 px; ypx = 250 − 40·3 = 130 px.

11.17 Ideas para recordar

  • x = xc + r cos θ e y = yc + r sin θ.
  • El ángulo se mide desde el eje x positivo y debe pasarse en radianes a JavaScript.
  • Las ecuaciones mantienen constante la distancia al centro.
  • Al sustituir θ(t) obtenemos la posición cartesiana en función del tiempo.
  • En pantalla suele ser necesario invertir la coordenada y.
  • Math.atan2(dy, dx) recupera el ángulo conservando el cuadrante.
  • El vector entre extremos no es la longitud del arco recorrido.

En el próximo tema construiremos las direcciones radial y tangencial y sus vectores unitarios.