Inicio › Temas › Geometría analítica
📐 Geometría analítica nivel básico
Vectores en el plano
Módulo, dirección, producto escalar y proyecciones.
🕹️ Ábrelo en el curso interactivo (simulador y código ejecutable)
La idea
Un vector es una flecha: tiene módulo (longitud), dirección y sentido. En coordenadas se escribe como un par (v₁, v₂) que indica cuánto avanza en cada eje. Sumar vectores es colocarlos uno a continuación del otro; multiplicar por un escalar los estira, encoge o invierte.
El producto escalar u · v = u₁v₁ + u₂v₂ es un número que resume la relación angular entre dos vectores: vale |u||v| cos θ, de modo que es cero cuando son perpendiculares, positivo cuando forman ángulo agudo y negativo si es obtuso. De ahí salen el ángulo entre vectores y la proyección de uno sobre otro.
Los vectores unen la geometría con la física y la programación: velocidades, fuerzas y desplazamientos son vectores, y cualquier motor gráfico calcula iluminación con productos escalares entre la normal de una superficie y la dirección de la luz.
Fórmulas clave
- Módulo|v| = √(v₁² + v₂²)
- Producto escalaru · v = u₁ v₁ + u₂ v₂ = |u| |v| cos θ
- Ángulocos θ = (u · v) / (|u| |v|)
- Proyección de u sobre vproy_v u = [(u · v) / |v|²] v
- Perpendicularu ⊥ v ⇔ u · v = 0
- Unitarioû = v / |v|
Dónde se aplica
Un motor de videojuego mueve cada personaje sumando a su posición el vector velocidad multiplicado por el tiempo transcurrido, y decide si un enemigo «ve» al jugador con el producto escalar entre su dirección de mirada y el vector hacia el jugador. En física, el trabajo realizado por una fuerza es el producto escalar fuerza · desplazamiento. En análisis de datos, la similitud coseno entre dos textos representados como vectores es exactamente cos θ.
Con programación (Python)
import math
def modulo(v): return math.sqrt(sum(c*c for c in v))
def escalar(u, v): return sum(a*b for a, b in zip(u, v))
def angulo(u, v): return math.degrees(math.acos(escalar(u, v) / (modulo(u)*modulo(v))))
def proyeccion(u, v):
k = escalar(u, v) / escalar(v, v)
return tuple(k*c for c in v)
u, v = (3, 4), (4, -2)
print("|u| =", modulo(u))
print("u·v =", escalar(u, v))
print("ángulo =", round(angulo(u, v), 2), "grados")
print("proy_v u =", proyeccion(u, v))
# Similitud coseno entre dos 'documentos' (conteo de palabras)
doc1, doc2 = (2, 1, 0, 3), (1, 1, 1, 2)
print("similitud coseno:", escalar(doc1, doc2) / (modulo(doc1)*modulo(doc2)))La versión en JavaScript, editable y ejecutable en el navegador, está en la página interactiva del tema.
Temas relacionados
La recta en el plano · Distancia y punto medio · Matrices como transformaciones · Derivadas parciales y gradiente