7.1 Del signo en una recta a un vector
En una dimensión, el signo de Fel = −kΔL puede indicar si la fuerza apunta a la derecha o a la izquierda. Pero si el extremo de un resorte puede moverse en un plano, un único signo no alcanza: necesitamos una dirección vectorial.
La fuerza elástica actúa a lo largo del eje instantáneo del resorte. Ese eje cambia cuando cambia la posición del extremo móvil. El cálculo debe obtenerlo desde las coordenadas actuales, no dejarlo fijado de antemano.
Construiremos la fuerza sobre un cuerpo unido a un resorte cuyo otro extremo está anclado. El mismo procedimiento funciona en tres dimensiones agregando la componente z.
7.2 Elegir puntos y un sistema de referencia
Representamos la posición del anclaje mediante el vector ra y la posición del cuerpo mediante rc. Ambas deben expresarse respecto del mismo origen y en la misma base.
El origen puede estar en el anclaje, en una esquina de la escena o en cualquier punto conveniente. Colocarlo en el anclaje simplifica algunos cálculos porque entonces ra = (0, 0), pero no es obligatorio.
Lo físicamente relevante para la longitud y la dirección del resorte es la diferencia entre los extremos.
El vector d apunta desde el anclaje hacia el cuerpo. El orden de la resta forma parte de la convención y debe mantenerse en todo el cálculo.
7.3 Longitud actual y dirección unitaria
La longitud actual del resorte es el módulo de d. En dos dimensiones:
Para separar longitud y dirección normalizamos el vector:
El vector unitario û tiene módulo 1 y apunta desde el anclaje hacia el cuerpo. Sus componentes no poseen unidades. Si d = (0,6 m; 0,8 m), entonces L = 1 m y û = (0,6; 0,8).
Normalizar no modifica la dirección; elimina la longitud del vector para poder multiplicarlo después por el módulo de la fuerza.
7.4 Deformación y fuerza vectorial
La deformación sigue siendo la diferencia entre la longitud actual y la natural:
La fuerza que el resorte ejerce sobre el cuerpo ubicado en rc es:
La expresión combina tres elementos:
k|L − L₀|determina el módulo;- û determina el eje del resorte;
- el signo de la deformación, junto con el signo menos, determina el sentido.
Esta forma supone un resorte ideal que puede trabajar tanto estirado como comprimido. Una cuerda elástica que se afloja al comprimirse requeriría otra regla.
7.5 Interpretar estiramiento y compresión
| Estado | Deformación | Fuerza sobre el cuerpo |
|---|---|---|
| Estirado | L − L0 > 0 | Opuesta a û: tira hacia el anclaje. |
| Longitud natural | L − L0 = 0 | Vector nulo. |
| Comprimido | L − L0 < 0 | En el sentido de û: empuja alejando del anclaje. |
El signo menos no significa siempre “hacia la izquierda” ni “hacia abajo”. Su efecto depende de û y del signo de la deformación.
7.6 Ejemplo completo en dos dimensiones
El anclaje está en ra = (0; 0) m y el cuerpo en rc = (0,6; 0,8) m. El resorte tiene L₀ = 0,75 m y k = 40 N/m.
L = √(0,6² + 0,8²) m = 1 m
û = (0,6; 0,8)
ΔL = 1 m − 0,75 m = 0,25 m
El módulo de la fuerza es 40 N/m · 0,25 m = 10 N. Como está estirado, apunta hacia el anclaje:
La comprobación √((-6 N)² + (-8 N)²) = 10 N confirma que las componentes conservan el módulo esperado.
7.7 Fuerzas sobre los dos extremos
El resorte ejerce una fuerza sobre el cuerpo y otra sobre el soporte del anclaje. Para un resorte ideal sin masa, esas fuerzas son opuestas:
En el ejemplo anterior, la fuerza sobre el cuerpo es (−6; −8) N y la fuerza sobre el anclaje es (+6; +8) N.
No debemos sumar ambas fuerzas en el diagrama de un solo extremo: actúan sobre cuerpos diferentes. Si el soporte forma parte de la simulación, cada fuerza debe acumularse en el objeto correspondiente.
7.8 Cambiar el origen no cambia la fuerza
Supongamos que trasladamos el origen mediante un vector s. Las nuevas coordenadas son r′a = ra − s y r′c = rc − s. Su diferencia es:
d′ = (rc − s) − (ra − s) = rc − ra = d
La longitud, el vector unitario, la deformación y la fuerza permanecen iguales. Cambian las coordenadas absolutas, no la separación física entre los extremos.
Este resultado es una buena prueba de software: trasladar toda la escena por el mismo vector no debe modificar las fuerzas internas del resorte.
7.9 Coordenadas físicas y coordenadas de pantalla
En un sistema cartesiano físico solemos elegir x hacia la derecha e y hacia arriba. En Canvas, la coordenada vertical crece hacia abajo. Conviene conservar los cálculos físicos en el sistema habitual y transformar solo al dibujar:
pantallaY = origenPantallaY − escala · y
El signo menos de la segunda relación invierte el eje vertical. Si mezclamos coordenadas de pantalla con las físicas al calcular fuerzas, una componente puede quedar invertida.
function aPantalla(posicionM, vista) {
return {
x: vista.origenX + vista.escalaPxPorM * posicionM.x,
y: vista.origenY - vista.escalaPxPorM * posicionM.y
};
}
const puntoPx = aPantalla(
{ x: 2, y: 1 },
{ origenX: 300, origenY: 200, escalaPxPorM: 50 }
);
console.log("Coordenadas de pantalla:", puntoPx);7.10 El caso límite de longitud cero
Si los dos extremos coinciden, L = 0. No podemos calcular û = d/L porque dividiríamos por cero. Además, no existe una dirección única desde el anclaje hacia el cuerpo.
Este no es solo un problema de JavaScript: el modelo vectorial necesita información que la configuración no proporciona. En un resorte físico, la geometría de las espiras, los contactos o una guía impedirían alcanzar esa situación idealizada.
El programa debe detectar el caso y adoptar una decisión explícita: impedir esa configuración, conservar una dirección previa justificada por una guía, o usar un modelo más detallado. Devolver silenciosamente componentes infinitas o NaN propagaría el error por toda la simulación.
7.11 Implementación vectorial en JavaScript
La función siguiente calcula la fuerza sobre el extremo móvil y rechaza una longitud prácticamente nula:
function fuerzaDeResorte(anclajeM, cuerpoM, longitudNaturalM, kNpm) {
const dx = cuerpoM.x - anclajeM.x;
const dy = cuerpoM.y - anclajeM.y;
const longitudM = Math.hypot(dx, dy);
if (longitudM < 1e-9) {
throw new RangeError("No se puede determinar la dirección del resorte");
}
if (longitudNaturalM <= 0 || kNpm <= 0) {
throw new RangeError("Parámetros del resorte no válidos");
}
const ux = dx / longitudM;
const uy = dy / longitudM;
const deformacionM = longitudM - longitudNaturalM;
const factorN = -kNpm * deformacionM;
return {
x: factorN * ux,
y: factorN * uy,
longitudM,
deformacionM
};
}
const fuerza = fuerzaDeResorte(
{ x: 0, y: 0 },
{ x: 0.6, y: 0.8 },
0.75,
40
);
console.log(fuerza); // x: -6 N, y: -8 NMath.hypot calcula el módulo sin repetir manualmente cuadrados y raíz. Los nombres incluyen unidades para distinguir posiciones en metros de coordenadas en píxeles.
7.12 Comprobaciones útiles
Antes de integrar esta función en una simulación podemos probar propiedades que deben cumplirse:
- Longitud natural: si
L = L₀, ambas componentes deben ser cero. - Módulo:
Math.hypot(Fx, Fy)debe coincidir conk|L − L₀|. - Dirección: la fuerza y d deben ser paralelos.
- Sentido: su producto escalar debe ser negativo al estirar y positivo al comprimir.
- Traslación: sumar el mismo vector a ambos extremos no debe cambiar la fuerza.
- Tercera ley: la fuerza sobre el anclaje debe ser la opuesta.
Estas propiedades permiten construir pruebas automáticas más generales que comparar un solo ejemplo numérico.
7.13 Laboratorio interactivo: orientar un resorte
Mové el extremo mediante los controles o arrastrando el cuerpo en el plano. La flecha turquesa representa la fuerza del resorte sobre el cuerpo; la flecha amarilla muestra el vector unitario desde el anclaje hacia el cuerpo.
F = −k(L − L₀) û
F = −40 N/m · 0,25 m · (0,60; 0,80) = (−6,00; −8,00) N
El resorte está estirado y tira del cuerpo hacia el anclaje.
- Giralo sin cambiar L: probá los puntos (0,6; 0,8) y (−0,8; 0,6). El módulo permanece y cambian las componentes.
- Comprimilo: elegí una longitud menor que L₀ y observá que la fuerza apunta alejándose del anclaje.
- Usá la longitud natural: la dirección existe, pero la fuerza es nula.
- Trasladá el origen visual: cambian los números de la cuadrícula, pero no los resultados físicos.
- Uní los extremos: llevá x e y a cero para observar la advertencia del caso singular.
7.14 Ejercicio propuesto
Un resorte une el anclaje ra = (−0,2; 0,1) m con un cuerpo en rc = (0,4; 0,9) m. Su longitud natural es 0,80 m y k = 50 N/m.
- Calculá d, L y û.
- Determiná si el resorte está estirado o comprimido.
- Calculá la fuerza vectorial sobre el cuerpo.
- Indicá la fuerza que el resorte ejerce sobre el anclaje.
- Sumá el vector
(10; −3) ma las coordenadas de ambos extremos y comprobá que la fuerza no cambia.
Ver solución y explicación
La diferencia es d = (0,6; 0,8) m, su módulo es 1 m y el vector unitario es û = (0,6; 0,8). La deformación es 1 m − 0,80 m = +0,20 m, por lo que está estirado.
Fa = (+6; +8) N
Después del traslado, las posiciones son (9,8; −2,9) m y (10,4; −2,1) m. Su diferencia sigue siendo (0,6; 0,8) m, de modo que todos los resultados se conservan.
const anclaje = { x: -0.2, y: 0.1 };
const cuerpo = { x: 0.4, y: 0.9 };
const dx = cuerpo.x - anclaje.x;
const dy = cuerpo.y - anclaje.y;
const longitudM = Math.hypot(dx, dy);
const deformacionM = longitudM - 0.8;
const factorN = -50 * deformacionM;
const fuerza = {
x: factorN * dx / longitudM,
y: factorN * dy / longitudM
};
console.log(fuerza.x, fuerza.y); // -6, -87.15 Ideas para recordar
- El vector d se obtiene restando la posición del anclaje a la del cuerpo.
- La longitud actual es
L = |d|y la dirección unitaria esû = d/L. - La fuerza sobre el extremo móvil es
F = −k(L − L₀)û. - Un resorte estirado tira hacia el anclaje; uno comprimido empuja alejándose.
- Las fuerzas sobre los dos extremos tienen sentidos opuestos y actúan sobre cuerpos diferentes.
- Trasladar el origen no modifica la separación ni la fuerza.
- Las coordenadas físicas deben mantenerse separadas de las coordenadas de pantalla.
- Cuando L es cero, la dirección unitaria no está definida y el programa debe tratar el caso explícitamente.