Muchos fenómenos físicos pueden representarse con funciones que relacionan tiempo, posición, velocidad, fuerza, energía o temperatura.
Las funciones permiten convertir ideas físicas en cálculos. Un programa puede usar funciones para estimar movimiento, caída, enfriamiento, energía, ondas o fuerzas.
Estos modelos suelen ser simplificaciones. Aun así, son muy útiles para simulaciones, videojuegos, gráficos, visualizaciones y herramientas educativas.
| Magnitud | Símbolo frecuente | Uso en una función |
|---|---|---|
| Tiempo | t | Entrada principal en simulaciones |
| Posición | x, y | Salida o estado calculado |
| Velocidad | v | Cambio de posición por tiempo |
| Aceleración | a | Cambio de velocidad por tiempo |
| Fuerza | F | Interacción que modifica el movimiento |
Si un objeto se mueve con velocidad constante, su posición se modela con una función lineal.
function posicionUniforme(tiempo, posicionInicial, velocidad) {
return posicionInicial + velocidad * tiempo;
}
console.log(posicionUniforme(0, 10, 3));
console.log(posicionUniforme(5, 10, 3));
console.log(posicionUniforme(10, 10, 3));
Si hay aceleración constante, la posición depende de una función cuadrática.
function posicionAcelerada(t, posicionInicial, velocidadInicial, aceleracion) {
return posicionInicial + velocidadInicial * t + 0.5 * aceleracion * t * t;
}
console.log(posicionAcelerada(0, 0, 2, 1));
console.log(posicionAcelerada(2, 0, 2, 1));
console.log(posicionAcelerada(4, 0, 2, 1));
La velocidad también puede expresarse como función del tiempo.
function velocidad(tiempo, velocidadInicial, aceleracion) {
return velocidadInicial + aceleracion * tiempo;
}
console.log(velocidad(0, 5, 2));
console.log(velocidad(3, 5, 2));
console.log(velocidad(6, 5, 2));
La caída libre puede modelarse usando la gravedad como aceleración. Si el eje vertical positivo apunta hacia arriba, la gravedad se resta.
function altura(t, alturaInicial, velocidadInicial) {
const g = 9.8;
return alturaInicial + velocidadInicial * t - 0.5 * g * t * t;
}
console.log(altura(0, 100, 0));
console.log(altura(2, 100, 0));
console.log(altura(4, 100, 0));
Si un objeto se lanza hacia arriba, al principio sube, luego se detiene momentáneamente y finalmente baja.
function lanzamiento(t, alturaInicial, velocidadInicial) {
const g = 9.8;
return alturaInicial + velocidadInicial * t - 0.5 * g * t * t;
}
for (let t = 0; t <= 5; t++) {
console.log({ tiempo: t, altura: lanzamiento(t, 0, 20) });
}
El movimiento circular se representa con seno y coseno.
function puntoCircular(angulo, radio, centro) {
return {
x: centro.x + Math.cos(angulo) * radio,
y: centro.y + Math.sin(angulo) * radio
};
}
console.log(puntoCircular(0, 50, { x: 100, y: 100 }));
console.log(puntoCircular(Math.PI / 2, 50, { x: 100, y: 100 }));
Una oscilación describe un movimiento repetitivo alrededor de un valor central.
function oscilacion(tiempo, centro, amplitud, frecuencia) {
return centro + Math.sin(tiempo * frecuencia) * amplitud;
}
console.log(oscilacion(0, 100, 20, 1));
console.log(oscilacion(Math.PI / 2, 100, 20, 1));
console.log(oscilacion(Math.PI, 100, 20, 1));
La segunda ley de Newton relaciona fuerza, masa y aceleración.
function aceleracion(fuerza, masa) {
if (masa === 0) {
return "La masa no puede ser cero";
}
return fuerza / masa;
}
console.log(aceleracion(20, 5));
console.log(aceleracion(10, 2));
La energía cinética depende de la masa y del cuadrado de la velocidad.
function energiaCinetica(masa, velocidad) {
return 0.5 * masa * velocidad * velocidad;
}
console.log(energiaCinetica(2, 10));
console.log(energiaCinetica(5, 3));
La energía potencial gravitatoria depende de la masa, la gravedad y la altura.
function energiaPotencial(masa, altura) {
const gravedad = 9.8;
return masa * gravedad * altura;
}
console.log(energiaPotencial(2, 10));
console.log(energiaPotencial(5, 3));
Un objeto caliente puede aproximarse a la temperatura ambiente con un modelo exponencial de decaimiento.
function enfriamiento(tiempo, ambiente, inicial, k) {
return ambiente + (inicial - ambiente) * Math.exp(-k * tiempo);
}
console.log(enfriamiento(0, 20, 90, 0.2));
console.log(enfriamiento(5, 20, 90, 0.2));
console.log(enfriamiento(20, 20, 90, 0.2));
Un modelo muy simple de rozamiento puede reducir la velocidad en cada paso de tiempo.
function aplicarRozamiento(velocidad, factor) {
return velocidad * factor;
}
let velocidad = 100;
for (let paso = 1; paso <= 5; paso++) {
velocidad = aplicarRozamiento(velocidad, 0.8);
console.log({ paso, velocidad });
}
En una simulación, el estado se actualiza usando un pequeño intervalo de tiempo.
function actualizar(posicion, velocidad, deltaTiempo) {
return posicion + velocidad * deltaTiempo;
}
let posicion = 0;
const velocidad = 10;
for (let paso = 1; paso <= 5; paso++) {
posicion = actualizar(posicion, velocidad, 0.1);
console.log({ paso, posicion });
}
Los modelos físicos dependen de unidades coherentes. Mezclar metros con píxeles o segundos con milisegundos puede producir resultados incorrectos.
| Magnitud | Unidad típica | Cuidado |
|---|---|---|
| Tiempo | segundos | No confundir con milisegundos |
| Distancia | metros | Convertir si se dibuja en píxeles |
| Velocidad | metros por segundo | Debe coincidir con tiempo y distancia |
Para visualizar un modelo físico, suele usarse una escala entre unidades físicas y píxeles.
function metrosAPixeles(metros, escala) {
return metros * escala;
}
console.log(metrosAPixeles(1, 50));
console.log(metrosAPixeles(3.5, 50));
Los modelos simples no incluyen todos los factores reales. Por ejemplo, una caída libre básica puede ignorar resistencia del aire, viento o rotación.
La elección del modelo depende del objetivo: explicación, visualización, juego, simulación o cálculo preciso.
Representar fenómenos físicos mediante funciones permite convertir ideas del mundo real en algoritmos. Aunque los modelos sean simplificados, ayudan a crear simulaciones, animaciones y sistemas interactivos con comportamiento coherente.