Geometría del dominio · Tema 02

Puntos, vectores y distancia en ℝ² y ℝ³

El lenguaje geométrico para representar posiciones, desplazamientos, direcciones y cercanía antes de estudiar funciones de varias variables.

01 · Punto de partida

Ubicar, desplazar y comparar

En una recta, un número alcanza para indicar una posición. En una pantalla necesitamos dos coordenadas; en una escena tridimensional, tres. El cálculo multivariable trabaja sobre estos espacios de entradas, de modo que antes de estudiar funciones debemos aprender a describir su geometría.

Los puntos indican ubicaciones. Los vectores describen desplazamientos, velocidades, fuerzas o direcciones. La distancia permite decidir qué significa estar cerca de un punto, una idea imprescindible cuando definamos límites y continuidad.

Estas herramientas aparecen constantemente en programación:

  • ¿Dónde se encuentra un objeto dentro de una escena?
  • ¿Qué desplazamiento lleva desde una posición hasta otra?
  • ¿A qué distancia está el puntero de un elemento interactivo?
  • ¿Cuál es la dirección de movimiento de un personaje?
  • ¿Dos direcciones son perpendiculares?
  • ¿Qué puntos se encuentran dentro de un radio determinado?

02 · Espacios de coordenadas

Qué significan ℝ², ℝ³ y ℝⁿ

El símbolo ℝ representa el conjunto de los números reales. Al escribir ℝ² nos referimos al conjunto de todos los pares ordenados de números reales:

Cada par puede ubicarse en un plano cartesiano. De manera análoga, ℝ³ reúne todas las ternas (x,y,z) y sirve para describir un espacio tridimensional.

La generalización ℝⁿ reúne listas ordenadas de n números. Sus elementos se escriben (x₁,x₂,…,xₙ). Aunque no podamos dibujar cuatro o cien dimensiones espaciales, podemos representarlas y operar con ellas mediante arreglos.

Interpretaciones de espacios de distintas dimensiones.
EspacioElementoInterpretación posibleEjemplo computacional
ℝxUna cantidad o posición lineal.Tiempo transcurrido.
ℝ²(x,y)Una posición en el plano.Coordenadas del puntero.
ℝ³(x,y,z)Una posición espacial.Objeto de una escena 3D.
ℝⁿ(x₁,…,xₙ)Una colección de características.Parámetros de un modelo.

La palabra dimensión indica cuántas coordenadas independientes hacen falta para describir un elemento del espacio. No se refiere al tamaño de los valores ni a la cantidad de elementos almacenados en una colección.

03 · Sistema cartesiano

Leer puntos en el plano y en el espacio

En ℝ², los ejes x e y se cruzan en el origen O=(0,0). Para ubicar P=(3,−2), avanzamos tres unidades en la dirección positiva de x y dos en la dirección negativa de y.

El orden de las coordenadas es esencial:

(3, −2) ≠ (−2, 3)

Los ejes dividen el plano en cuatro cuadrantes. En ℝ³ agregamos un tercer eje z, perpendicular a los otros dos, y los planos coordenados dividen el espacio en ocho regiones llamadas octantes.

Signos de las coordenadas en los cuadrantes del plano.
RegiónSigno de xSigno de yEjemplo
Primer cuadrantePositivoPositivo(2,3)
Segundo cuadranteNegativoPositivo(−2,3)
Tercer cuadranteNegativoNegativo(−2,−3)
Cuarto cuadrantePositivoNegativo(2,−3)

04 · Dos significados

Diferencia entre punto y vector

Punto

Una ubicación

P=(2,1) identifica un lugar respecto de un sistema de coordenadas. Habitualmente se nombra con una letra mayúscula.

Vector

Un desplazamiento

v=(2,1) indica avanzar dos unidades en x y una en y. Puede aplicarse desde distintos puntos.

Si una posición inicial es A=(1,3) y aplicamos el vector v=(2,−1), llegamos al punto:

A + v = (1,3) + (2,−1) = (3,2)

Si conocemos dos puntos A y B, el vector que va desde A hasta B se obtiene restando el punto final menos el inicial:

Para A=(1,3) y B=(4,−1), resulta AB⃗=(3,−4). La verificación es inmediata: A + AB⃗ = B.

Punto + vector
Produce un nuevo punto: trasladamos una posición.
Punto − punto
Produce un vector: medimos el desplazamiento entre posiciones.
Vector + vector
Produce otro vector: combinamos desplazamientos.
Punto + punto
No tiene una interpretación geométrica directa como suma de ubicaciones, aunque sus coordenadas puedan sumarse algebraicamente.

05 · Álgebra vectorial

Sumar, restar y escalar vectores

Las operaciones se realizan componente a componente. Dados u=(u₁,u₂) y v=(v₁,v₂):

u + v = (u₁ + v₁, u₂ + v₂)
u − v = (u₁ − v₁, u₂ − v₂)
k·u = (k·u₁, k·u₂)

Por ejemplo, si u=(3,1) y v=(−2,4):

  • u+v=(1,5): ejecutamos ambos desplazamientos.
  • u−v=(5,−3): sumamos u con el opuesto de v.
  • 2u=(6,2): duplicamos la magnitud sin cambiar la dirección.
  • −u=(−3,−1): conservamos la magnitud e invertimos el sentido.

Estas definiciones se extienden sin cambios conceptuales a ℝ³ y ℝⁿ, siempre que los vectores tengan la misma cantidad de componentes.

function sumar2D(u, v) {
  return { x: u.x + v.x, y: u.y + v.y };
}

function escalar2D(k, v) {
  return { x: k * v.x, y: k * v.y };
}

const velocidad = { x: 3, y: 1 };
const impulso = { x: -2, y: 4 };

console.log(sumar2D(velocidad, impulso)); // { x: 1, y: 5 }
console.log(escalar2D(2, velocidad));     // { x: 6, y: 2 }

06 · Magnitud

Longitud o norma de un vector

La norma euclídea mide la longitud de un vector. En dos dimensiones se obtiene mediante el teorema de Pitágoras:

Para v=(3,4), la norma es 5. En tres dimensiones agregamos la tercera componente:

‖v‖ = √(v₁² + v₂² + v₃²)

En ℝⁿ, la fórmula general es:

‖v‖ = √(v₁² + v₂² + ··· + vₙ²)

La norma siempre es no negativa y solo vale cero para el vector cero. Además, multiplicar por un escalar multiplica la longitud por su valor absoluto: ‖kv‖=|k|‖v‖.

Interpretaciones de la norma en programación.
VectorLa norma representa
DesplazamientoDistancia recorrida en línea recta.
VelocidadRapidez, sin considerar la dirección.
FuerzaIntensidad de la fuerza.
Error con varias componentesTamaño conjunto del error.

07 · Cercanía

Distancia entre dos puntos

La distancia euclídea entre los puntos A y B es la longitud del vector que los conecta:

d(A,B) = ‖B − A‖

En el plano, si A=(x₁,y₁) y B=(x₂,y₂):

d(A,B) = √((x₂−x₁)² + (y₂−y₁)²)

Para A=(1,2) y B=(4,6), el desplazamiento es (3,4) y la distancia es 5.

Propiedades de una distancia

  • No negatividad: d(A,B) ≥ 0.
  • Identidad: d(A,B)=0 exactamente cuando A=B.
  • Simetría: d(A,B)=d(B,A).
  • Desigualdad triangular: d(A,C) ≤ d(A,B)+d(B,C).

La última propiedad expresa que el camino directo nunca es más largo que pasar por un punto intermedio. Estas condiciones permiten definir otras distancias útiles, como Manhattan, aunque en cálculo usaremos principalmente la euclídea.

08 · Vectores unitarios

Separar magnitud y dirección

Un vector unitario tiene norma igual a 1. Para obtener la dirección de un vector no nulo v, lo dividimos por su longitud:

Este proceso se llama normalización. Para v=(3,4):

u = (3/5, 4/5) = (0,6; 0,8)

El vector u conserva la dirección y el sentido, pero su longitud es uno. Así podemos construir un desplazamiento de longitud L en esa dirección mediante L·u.

Vectores de la base cartesiana

En ℝ², los vectores i=(1,0) y j=(0,1) indican las direcciones de los ejes. Todo vector puede escribirse como:

v = v₁i + v₂j

En ℝ³ agregamos k=(0,0,1). Estas bases permiten interpretar las componentes como cantidades de desplazamiento en cada eje.

09 · Comparar direcciones

Producto escalar, ángulos y perpendicularidad

El producto escalar de dos vectores combina sus componentes y devuelve un número:

u · v = u₁v₁ + u₂v₂ + ··· + uₙvₙ

También se relaciona con el ángulo θ entre los vectores:

u · v = ‖u‖ ‖v‖ cos(θ)

Por eso su signo aporta información geométrica:

+

Ángulo agudo

Si u·v > 0, apuntan en direcciones parcialmente similares.

0

Perpendiculares

Si u·v = 0 y no son nulos, forman un ángulo de 90°.

−

Ángulo obtuso

Si u·v < 0, apuntan en sentidos parcialmente opuestos.

Por ejemplo, (2,1)·(−1,2)=−2+2=0, de modo que los vectores son perpendiculares. Más adelante, el producto escalar permitirá calcular derivadas direccionales y explicar por qué el gradiente es perpendicular a las curvas de nivel.

Proyección sobre una dirección

Si u es unitario, el número v·u mide cuánto de v apunta en la dirección de u. La proyección vectorial es (v·u)u. Esta operación aparece en movimiento, iluminación, colisiones y descomposición de fuerzas.

10 · Preparación para los límites

Bolas abiertas y entornos

Decir que un punto X está «cerca» de un punto P requiere fijar una distancia máxima. Dado un radio r > 0, la bola abierta centrada en P es:

B(P,r) = { X : ‖X − P‖ < r }

En ℝ² es el interior de un círculo sin incluir su borde; en ℝ³ es el interior de una esfera. En dimensiones mayores seguimos usando la misma definición basada en la distancia.

Por ejemplo, la bola de radio 2 centrada en P=(1,−1) contiene los puntos que cumplen:

(x−1)² + (y+1)² < 4

Los entornos permitirán expresar con precisión que las entradas pueden acercarse tanto como queramos a un punto desde cualquier dirección. Esta es la base geométrica de los límites multivariables.

11 · Programación

Posición, velocidad y actualización por tiempo

En una simulación, una posición es un punto y una velocidad es un vector. Si la velocidad permanece constante durante un intervalo pequeño Δt, la nueva posición se aproxima mediante:

posiciónNueva = posiciónActual + velocidad · Δt
function actualizarPosicion(posicion, velocidad, deltaTiempo) {
  return {
    x: posicion.x + velocidad.x * deltaTiempo,
    y: posicion.y + velocidad.y * deltaTiempo
  };
}

const posicion = { x: 10, y: 5 };
const velocidad = { x: 3, y: -2 }; // unidades por segundo

console.log(actualizarPosicion(posicion, velocidad, 0.5));
// { x: 11.5, y: 4 }

Las unidades confirman la operación: (unidades/segundo)·segundos = unidades, que puede sumarse a una posición. Sumar directamente posición y velocidad sin multiplicar por tiempo mezclaría cantidades con unidades incompatibles.

Detectar proximidad

function distancia2D(a, b) {
  return Math.hypot(b.x - a.x, b.y - a.y);
}

function estaDentroDelRadio(punto, centro, radio) {
  if (radio < 0) throw new RangeError("El radio no puede ser negativo");
  return distancia2D(punto, centro) <= radio;
}

const puntero = { x: 105, y: 82 };
const boton = { x: 100, y: 80 };

console.log(estaDentroDelRadio(puntero, boton, 10)); // true

12 · Exploración visual

Laboratorio: del punto A al punto B

Mové los puntos A y B. El laboratorio calcula el vector desplazamiento B−A, su norma y la dirección unitaria. Observá que trasladar ambos puntos de la misma manera no cambia el vector que los conecta.

EXPERIMENTO 02

Desplazamiento y distancia

AB⃗ = B − A = (4, 3)

Los resultados numéricos aparecen debajo del gráfico.
Punto inicialA = (−2,00; −1,00)
Punto finalB = (2,00; 2,00)
DesplazamientoB−A = (4,00; 3,00)
Distanciad(A,B) = 5,00

La dirección unitaria de A hacia B es (0,80; 0,60).

El punto violeta es la posición inicial A, el punto coral es la posición final B y la flecha representa el vector B menos A.

Preguntas para explorar

  1. Colocá A y B en el mismo lugar. ¿Qué ocurre con la distancia y por qué no aparece una dirección unitaria?
  2. Intercambiá mentalmente los puntos. ¿Qué cambia en el vector y qué permanece igual?
  3. Buscá distintas parejas de puntos cuya distancia sea 5.
  4. Trasladá ambos puntos una unidad hacia la derecha. ¿Por qué se conserva el desplazamiento?
  5. Construí un vector horizontal y otro vertical. ¿Cómo se reconocen por sus componentes?

13 · Implementación reutilizable

Vectores de dimensión arbitraria en JavaScript

Los objetos con propiedades x, y y z son legibles en dos o tres dimensiones. Para trabajar en ℝⁿ conviene usar arreglos y validar que las dimensiones coincidan.

function validarMismaDimension(a, b) {
  if (a.length !== b.length) {
    throw new RangeError("Los vectores deben tener la misma dimensión");
  }
}

function sumar(a, b) {
  validarMismaDimension(a, b);
  return a.map((componente, i) => componente + b[i]);
}

function restar(a, b) {
  validarMismaDimension(a, b);
  return a.map((componente, i) => componente - b[i]);
}

console.log(sumar([1, 2, 3], [4, -1, 2])); // [5, 1, 5]
console.log(restar([4, 6], [1, 2]));       // [3, 4]

Norma, distancia y producto escalar

function validarMismaDimension(a, b) {
  if (a.length !== b.length) {
    throw new RangeError("Los vectores deben tener la misma dimensión");
  }
}

function restar(a, b) {
  validarMismaDimension(a, b);
  return a.map((componente, i) => componente - b[i]);
}

function productoEscalar(a, b) {
  validarMismaDimension(a, b);
  return a.reduce((suma, componente, i) => {
    return suma + componente * b[i];
  }, 0);
}

function norma(vector) {
  return Math.sqrt(productoEscalar(vector, vector));
}

function distancia(a, b) {
  return norma(restar(b, a));
}

console.log(norma([3, 4]));            // 5
console.log(distancia([1, 2], [4, 6])); // 5
console.log(productoEscalar([2, 1], [-1, 2])); // 0

Normalización segura

function normalizar(vector) {
  const longitud = Math.hypot(...vector);
  if (longitud === 0) {
    throw new RangeError("El vector cero no tiene dirección");
  }
  return vector.map(componente => componente / longitud);
}

const direccion = normalizar([3, 4]);
console.log(direccion);       // [0.6, 0.8]
console.log(Math.hypot(...direccion)); // 1

14 · Resultados computacionales

Precisión, escalas y comparación

Las operaciones con raíces y divisiones suelen producir números que no pueden representarse exactamente en punto flotante. La norma de (1,1) es √2, un número irracional. El programa almacena una aproximación.

Por esa razón, comprobar perpendicularidad mediante producto === 0 puede ser frágil cuando los vectores provienen de cálculos anteriores. Podemos aceptar una tolerancia:

function sonPerpendiculares(a, b, tolerancia = 1e-10) {
  if (a.length !== b.length) return false;
  const producto = a.reduce((suma, componente, i) => {
    return suma + componente * b[i];
  }, 0);
  return Math.abs(producto) <= tolerancia;
}

console.log(sonPerpendiculares([1, 1], [-1, 1])); // true

La escala también importa. Una distancia de 0,01 puede ser pequeña en metros y enorme en micrómetros. Los vectores que se suman o comparan deben emplear unidades compatibles y, cuando corresponda, el mismo sistema de coordenadas.

«Un punto y un vector son exactamente el mismo objeto»

Comparten representación numérica, pero tienen significados y operaciones diferentes. Restar puntos genera un vector; sumar un vector a un punto genera otro punto.

«La distancia entre A y B es B−A»

B−A es el vector desplazamiento. La distancia es su norma y, por lo tanto, un número no negativo.

«Normalizar un vector significa limitar sus componentes entre 0 y 1»

Normalizar aquí significa dividir por la norma para obtener longitud uno. Las componentes pueden ser negativas.

«Duplicar las componentes duplica la dirección»

La dirección no tiene tamaño. Multiplicar por un escalar positivo conserva la dirección y cambia la magnitud; un escalar negativo invierte el sentido.

«Producto escalar cero siempre significa perpendicularidad»

Si alguno de los vectores es cero, el producto también vale cero, pero el vector cero no tiene dirección. La interpretación angular requiere vectores no nulos.

15 · Práctica guiada

Ejercicios de comprensión

Ejercicio 1: puntos y desplazamientos

Un personaje comienza en A=(−1,2) y termina en B=(5,−2).

  1. Calculá el vector AB⃗.
  2. Calculá la distancia recorrida en línea recta.
  3. Obtené un vector unitario desde A hacia B.
  4. Verificá que A + AB⃗ = B.
Ver solución razonada

AB⃗=B−A=(6,−4). Su norma es √(36+16)=√52=2√13≈7,21. La dirección unitaria es (6/√52,−4/√52)≈(0,832;−0,555). Finalmente, (−1,2)+(6,−4)=(5,−2).

Ejercicio 2: operaciones en ℝ³

Sean u=(1,−2,3) y v=(4,0,−1).

  1. Calculá u+v y 2u−v.
  2. Calculá u·v.
  3. Calculá ‖v‖.
  4. Decidí si son perpendiculares.
Ver solución y código

u+v=(5,−2,2), 2u−v=(−2,−4,7), u·v=1 y ‖v‖=√17. No son perpendiculares porque el producto escalar no es cero.

const sumar = (a, b) => a.map((valor, i) => valor + b[i]);
const restar = (a, b) => a.map((valor, i) => valor - b[i]);
const productoEscalar = (a, b) =>
  a.reduce((suma, valor, i) => suma + valor * b[i], 0);
const norma = vector => Math.hypot(...vector);

const u = [1, -2, 3];
const v = [4, 0, -1];

const dosU = u.map(componente => 2 * componente);
console.log(sumar(u, v));
console.log(restar(dosU, v));
console.log(productoEscalar(u, v));
console.log(norma(v));

Ejercicio 3: pertenencia a un entorno

Sea la bola abierta de centro P=(2,1) y radio 3. Determiná si pertenecen los puntos A=(4,2), B=(5,1) y C=(0,−1).

Ver solución razonada

d(P,A)=√5<3, por lo que A pertenece. d(P,B)=3: como la bola es abierta y no incluye el borde, B no pertenece. d(P,C)=√8<3, por lo que C pertenece.

Ejercicio 4: actualización de una simulación

Un objeto está en P=(10,−4,2) y se mueve con velocidad v=(2,3,−1) unidades por segundo.

  1. Calculá su posición después de 0,5 segundos si la velocidad es constante.
  2. Calculá su rapidez.
  3. Indicá las unidades de cada resultado.
  4. Implementá una función que funcione para cualquier dimensión.
Ver una posible respuesta

El desplazamiento es 0,5v=(1;1,5;−0,5) y la nueva posición es (11;−2,5;1,5). La rapidez es ‖v‖=√14≈3,74 unidades por segundo.

function actualizar(posicion, velocidad, deltaTiempo) {
  if (posicion.length !== velocidad.length) {
    throw new RangeError("Los datos deben tener la misma dimensión");
  }
  const desplazamiento = velocidad.map(v => v * deltaTiempo);
  return posicion.map((valor, i) => valor + desplazamiento[i]);
}

console.log(actualizar([10, -4, 2], [2, 3, -1], 0.5));
// [11, -2.5, 1.5]

16 · Síntesis

Ideas para recordar

  • ℝⁿ reúne listas ordenadas de n números reales.
  • Un punto representa una posición; un vector representa magnitud y dirección.
  • La resta de dos puntos produce el vector que va del primero al segundo.
  • La suma y el producto por escalares se calculan componente a componente.
  • La norma mide la longitud de un vector y la distancia entre puntos es la norma de su diferencia.
  • Normalizar un vector no nulo conserva su dirección y le asigna longitud uno.
  • El producto escalar permite comparar direcciones, detectar perpendicularidad y calcular proyecciones.
  • Una bola de radio r reúne los puntos situados a menos de r del centro.
  • Las unidades, la dimensión y el sistema de coordenadas deben mantenerse consistentes en el código.

En el próximo tema estudiaremos funciones de varias variables: cómo definirlas, evaluarlas, reconocer sus entradas y salidas, y traducir modelos multivariables a JavaScript.