4.1 Distintas entradas, un mismo vector
Un sistema de posicionamiento puede entregar dos puntos, un sensor puede informar intensidad y ángulo, y una consigna puede describir una distancia hacia un punto cardinal. En los tres casos necesitamos obtener las componentes del vector para utilizarlo en cálculos y programas.
La construcción vectorial traduce los datos disponibles sin cambiar su significado físico. Antes de aplicar una fórmula debemos identificar el sistema de referencia, la convención angular y las unidades.
4.2 Desde un punto inicial y uno final
Si A es el origen y B el extremo, el vector se obtiene restando las coordenadas iniciales a las finales:
Para A = (2, −1) m y B = (7, 3) m, AB = (5, 4) m. Si invertimos el orden obtenemos BA = (−5, −4) m.
function desdePuntos(inicio, fin) {
return { x: fin.x - inicio.x, y: fin.y - inicio.y };
}
const A = { x: 2, y: -1 };
const B = { x: 7, y: 3 };
console.log(desdePuntos(A, B));4.3 Distancia entre los puntos
El módulo del vector entre A y B coincide con la distancia recta entre esos puntos:
La distancia es escalar y no puede ser negativa. El vector AB y su opuesto BA tienen la misma distancia, aunque sus sentidos sean contrarios.
4.4 Desde módulo y ángulo
Si conocemos el módulo r y el ángulo θ medido desde +x en sentido antihorario, proyectamos el vector sobre los ejes:
vy = r sen(θ)
Para r = 10 m y θ = 30°, las componentes son aproximadamente (8,66; 5) m. El coseno determina la componente adyacente al ángulo y el seno la opuesta.
4.5 Grados y radianes
Las funciones Math.sin() y Math.cos() reciben radianes. Un giro completo equivale a 360° o 2π radianes:
grados = radianes × 180 / π
function desdeModuloAngulo(modulo, grados) {
const angulo = grados * Math.PI / 180;
return {
x: modulo * Math.cos(angulo),
y: modulo * Math.sin(angulo)
};
}
console.log(desdeModuloAngulo(10, 30));Pasar 30 directamente a Math.cos haría que JavaScript lo interprete como 30 radianes y produciría componentes incorrectas.
4.6 Signos y cuadrantes
| Ángulo | Cuadrante | cos θ | sen θ |
|---|---|---|---|
| 0° a 90° | I | + | + |
| 90° a 180° | II | − | + |
| 180° a 270° | III | − | − |
| 270° a 360° | IV | + | − |
Las funciones trigonométricas producen automáticamente los signos correctos. Esta tabla permite anticiparlos y detectar errores de conversión.
4.7 Ángulos equivalentes
Los ángulos 30°, 390° y −330° describen la misma orientación porque difieren en vueltas completas. Para mostrar un ángulo entre 0° y 360° podemos normalizarlo:
function normalizarAngulo(grados) {
return ((grados % 360) + 360) % 360;
}
console.log(normalizarAngulo(390));
console.log(normalizarAngulo(-330));Normalizar cambia la forma de escribir el ángulo, no la dirección del vector.
4.8 Orientaciones expresadas con palabras
Cuando +x representa el este y +y el norte, podemos traducir descripciones habituales:
- «20 m al este» → (20, 0) m.
- «20 m al oeste» → (−20, 0) m.
- «20 m al norte» → (0, 20) m.
- «20 m al sur» → (0, −20) m.
- «20 m a 35° al norte del este» → θ = 35°.
- «20 m a 35° al este del norte» → θ = 90° − 35° = 55°.
Las palabras que siguen a «del» indican el eje desde el cual comienza a medirse el ángulo.
4.9 Desde una distancia y un vector unitario
Otra forma de construir un vector consiste en multiplicar una distancia d por un vector unitario u que indique la orientación:
Si u = (0,6; 0,8) y d = 15 m, entonces v = (9; 12) m. Esta separación entre tamaño y orientación resulta útil cuando varias entidades avanzan distancias diferentes en la misma dirección.
4.10 Recuperar módulo y ángulo para comprobar
Después de construir las componentes podemos recuperar los datos originales:
Math.hypot(x, y)ángulo =
Math.atan2(y, x) * 180 / Math.PILos resultados pueden contener pequeñas diferencias por redondeo. En vez de exigir igualdad exacta, comparamos con una tolerancia apropiada.
function desdeModuloAngulo(modulo, grados) {
const angulo = grados * Math.PI / 180;
return { x: modulo * Math.cos(angulo), y: modulo * Math.sin(angulo) };
}
const esperado = 10;
const vector = desdeModuloAngulo(esperado, 30);
const recuperado = Math.hypot(vector.x, vector.y);
const coincide = Math.abs(recuperado - esperado) < 1e-10;
console.log(recuperado, coincide);4.11 Laboratorio de construcción
Alterná entre los dos métodos. En el modo «módulo y ángulo», una vuelta completa conserva las componentes; en el modo «dos puntos», mover el origen sin mover el extremo cambia el vector.
Vector construido desde módulo y ángulo.
4.12 Validaciones necesarias
- El módulo o la distancia no deben ser negativos.
- Las coordenadas de ambos puntos deben usar el mismo sistema y unidad.
- La convención angular debe quedar explícita.
- Si los dos puntos coinciden, el resultado es el vector nulo y su dirección es indeterminada.
- Los datos ingresados deben ser números finitos.
- El redondeo debe aplicarse al mostrar, no durante los cálculos intermedios.
4.13 Errores frecuentes
- Restar inicio menos fin y obtener el sentido contrario.
- Confundir la distancia con una componente.
- Pasar grados directamente a las funciones trigonométricas de JavaScript.
- Intercambiar seno y coseno cuando el ángulo se mide desde +x.
- Ignorar el eje usado como referencia en una orientación verbal.
- Forzar una dirección para el vector nulo.
- Redondear componentes demasiado pronto y alterar el módulo.
4.14 Ejercicio integrador
Una embarcación parte de A = (−4, 2) km y navega 12 km a 35° al norte del este.
- Calculá las componentes del desplazamiento.
- Obtené las coordenadas del punto final B.
- Recuperá módulo y ángulo desde las componentes.
- Calculá el vector que permitiría regresar directamente de B hasta A.
- Implementá y comprobá el cálculo en JavaScript.
Ver solución y código
El ángulo estándar es 35°. Las componentes son aproximadamente (9,83; 6,88) km. El punto final es B ≈ (5,83; 8,88) km. El regreso directo es el vector opuesto: (−9,83; −6,88) km.
function crearVector(modulo, grados) {
if (!Number.isFinite(modulo) || modulo < 0) throw new Error("Módulo inválido");
const radianes = grados * Math.PI / 180;
return { x: modulo * Math.cos(radianes), y: modulo * Math.sin(radianes) };
}
const A = { x: -4, y: 2 };
const desplazamiento = crearVector(12, 35);
const B = { x: A.x + desplazamiento.x, y: A.y + desplazamiento.y };
const regreso = { x: -desplazamiento.x, y: -desplazamiento.y };
console.log({ desplazamiento, B, regreso });
console.log("Comprobación:", Math.hypot(desplazamiento.x, desplazamiento.y), "km");4.15 Ideas para recordar
- Desde dos puntos: vector = punto final − punto inicial.
- La distancia entre puntos coincide con el módulo del vector que los une.
- Desde módulo y ángulo: x = r cos θ, y = r sen θ.
- JavaScript recibe ángulos trigonométricos en radianes.
- Una descripción verbal debe traducirse según el eje de referencia.
- Un vector también puede construirse multiplicando distancia por dirección unitaria.
- Recuperar módulo y ángulo permite comprobar la construcción.
En el próximo tema estudiaremos la suma y resta de vectores mediante métodos gráficos y analíticos.