¿Qué representan y ?
En el sistema de coordenadas polares, cada punto del plano se describe por una pareja ordenada:
donde:
- es la distancia desde el origen (el punto ) hasta el punto.
- es el ángulo entre el eje positivo y la línea que conecta el origen con el punto, medido en radianes en sentido antihorario.
🧭 ¿Cómo interpretamos ?
- Si , nos movemos unidades desde el origen en la dirección del ángulo .
- Si , estamos en el origen sin importar el valor de .
- Si , nos movemos unidades en la dirección opuesta a la indicada por .
El ángulo puede tomar valores mayores a o ser negativo, lo que representa múltiples vueltas alrededor del origen.
⚠️ Representaciones múltiples del mismo punto
Una misma posición en el plano puede tener distintas representaciones en coordenadas polares. Por ejemplo:
Ambos representan el mismo punto: una unidad en dirección opuesta.
Esto significa que las coordenadas polares no son únicas. A veces conviene normalizar en el intervalo o limitar según el contexto.
📊 Visualización: ¿Cómo se ve un punto polar?
El siguiente código grafica varios puntos dados en coordenadas polares, para que puedan visualizar cómo se interpretan y en el plano.
import numpy as np
import matplotlib.pyplot as plt
# Lista de puntos en coordenadas polares: (r, θ)
puntos_polares = [
(1, np.pi/4),
(2, np.pi),
(1, 5*np.pi/2), # equivale a (1, π/2)
(-1, 0), # equivale a (1, π)
(0, 2*np.pi/3) # origen
]
fig, ax = plt.subplots(figsize=(6,6))
ax.set_aspect('equal')
ax.set_xlim(-2.5, 2.5)
ax.set_ylim(-2.5, 2.5)
ax.set_title("Interpretación geométrica de $(r, \\theta)$")
ax.grid(True)
# Dibujar ejes
ax.axhline(0, color='gray', linewidth=1)
ax.axvline(0, color='gray', linewidth=1)
# Graficar puntos
for r, theta in puntos_polares:
x = r * np.cos(theta)
y = r * np.sin(theta)
ax.plot(x, y, 'o')
ax.annotate(f"({r:.1f}, {theta:.2f})", (x, y), textcoords="offset points", xytext=(5,5))
plt.show()🧠 Observaciones importantes
- El punto está en el eje negativo , igual que .
- El punto está en la misma dirección que .
- El punto siempre es el origen, sin importar .
🔄 Conversión entre coordenadas cartesianas y polares
En muchos problemas necesitaremos convertir un punto de coordenadas cartesianas a coordenadas polares , y viceversa.
📐 De polares a cartesianas
Dado un punto en coordenadas polares , sus coordenadas cartesianas se obtienen con:
Estas fórmulas se derivan directamente de trigonometría, considerando como la hipotenusa de un triángulo rectángulo.
📐 De cartesianas a polares
Dado un punto , sus coordenadas polares se calculan así:
⚠️ Ojo! Esta fórmula para puede ser ambigua, ya que la tangente no distingue en qué cuadrante está el punto. Por eso en programación se recomienda usar:
atan2(y, x)en Python (denumpyomath), que devuelve el ángulo correcto considerando el signo de ambos argumentos.
🧮 Ejemplo de conversión
Supongamos que tenemos el punto cartesiano .
Entonces:
Por tanto, el punto en coordenadas polares es .
🧪 Visualización interactiva
import numpy as np
import matplotlib.pyplot as plt
# Lista de puntos cartesianos
puntos_cartesianos = [
(1, 1),
(0, -2),
(-1, np.sqrt(3)),
(-2, -2)
]
fig, ax = plt.subplots(figsize=(6,6))
ax.set_aspect('equal')
ax.set_xlim(-3, 3)
ax.set_ylim(-3, 3)
ax.set_title("Conversión cartesiano → polar")
ax.grid(True)
# Dibujar ejes
ax.axhline(0, color='gray', linewidth=1)
ax.axvline(0, color='gray', linewidth=1)
# Dibujar puntos y mostrar conversión
for x, y in puntos_cartesianos:
r = np.sqrt(x**2 + y**2)
theta = np.arctan2(y, x)
x_label = f"x={x}, y={y}"
rtheta_label = f"r={r:.2f}, θ={theta:.2f} rad"
ax.plot(x, y, 'o')
ax.annotate(rtheta_label, (x, y), textcoords="offset points", xytext=(5, 5))
print(f"{x_label} → {rtheta_label}")
plt.show()💬 Observaciones importantes
atan2devuelve en radianes, entre y . Esto se puede ajustar eso al intervalo .- Algunos puntos (como el origen) tienen coordenadas polares mal definidas: , pero puede ser cualquier valor.
❗ ¿Por qué la fórmula de puede fallar?
Cuando convertimos un punto cartesiano a coordenadas polares, usamos:
Pero esta fórmula es ambigua, porque la tangente no distingue en qué cuadrante está el punto.
Por ejemplo:
Ambos dan el mismo resultado, pero:
- está en el primer cuadrante
- está en el tercer cuadrante
Esto se debe a que sólo mira el cociente, no los signos por separado.
✅ Solución: usar atan2(y, x)
La función atan2(y, x) (disponible en Python, C, Java, etc.) resuelve este problema:
- Usa el signo de y para determinar el cuadrante correcto.
- Devuelve el valor de en radianes, en el intervalo .
🔍 Comparación visual
El siguiente código muestra dos puntos que tienen el mismo pero están en cuadrantes distintos.
Se puede ver que no los diferencia, pero atan2(y, x) sí.
import numpy as np
import matplotlib.pyplot as plt
# Dos puntos con mismo y/x pero distinto cuadrante
p1 = (1, 1) # Cuadrante I
p2 = (-1, -1) # Cuadrante III
# Calcular ángulos
theta1 = np.arctan2(p1[1], p1[0])
theta2 = np.arctan2(p2[1], p2[0])
# Mostrar valores
print(f"Punto (1, 1): θ = {theta1:.2f} rad = {np.degrees(theta1):.1f}°")
print(f"Punto (-1, -1): θ = {theta2:.2f} rad = {np.degrees(theta2):.1f}°")
# Graficar
fig, ax = plt.subplots(figsize=(6,6))
ax.set_aspect('equal')
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)
ax.grid(True)
ax.axhline(0, color='gray', linewidth=1)
ax.axvline(0, color='gray', linewidth=1)
for x, y in [p1, p2]:
ax.plot(x, y, 'o')
ax.arrow(0, 0, x, y, head_width=0.1, head_length=0.1, color='orange', length_includes_head=True)
ax.annotate("θ = π/4", p1, textcoords="offset points", xytext=(5,5))
ax.annotate("θ = 5π/4", p2, textcoords="offset points", xytext=(5,5))
ax.set_title("Mismo y/x → distinta dirección")
plt.show()Este es un ejemplo clásico de cómo la geometría importa más que la fórmula algebraica.
En resumen:
- Usar
atan2(y, x)siempre que quieras obtener correctamente. - No confíar ciegamente en