If you're seeing this message, it means we're having trouble loading external resources on our website.

Si estás detrás de un filtro de páginas web, por favor asegúrate de que los dominios *.kastatic.org y *.kasandbox.org estén desbloqueados.

Contenido principal

Modelar gravedad y fricción

Ahora, vamos a tratar de hacer que nuestras fuerzas sean un poco más fieles a la realidad, al mejorar la gravedad del último ejemplo e introducir una fuerza de fricción.

Gravedad en la Tierra

Puede que te hayas dado cuenta de algo terriblemente incorrecto acerca de este último ejemplo. Mientras más pequeño el círculo, más rápido cae. Esto tiene una lógica; después de todo, simplemente dijimos (de acuerdo con la segunda ley de Newton) que mientras menor sea la masa, mayor será la aceleración.
Pero esto no es lo que sucede en el mundo real. Si subieras a la cima de la torre inclinada de Pisa y dejaras caer dos pelotas de masas diferentes, ¿cuál tocaría el suelo primero? Según la leyenda, Galileo llevó a cabo esta misma prueba en 1589, y descubrió que caen con la misma aceleración para tocar el suelo al mismo tiempo.
¿Por qué sucede esto? Como veremos más adelante en este curso, la fuerza de gravedad se calcula en relación a la masa de un objeto. Mientras más grande sea el objeto, mayor será la fuerza. Así que si la fuerza se escala de acuerdo con la masa, la masa se cancela cuando la fuerza se divide entre la masa. Podemos implementar esto en nuestro programa al multiplicar nuestra aceleración inventada (debida a la gravedad) por la masa:
for (var i = 0; i < movers.length; i++) {
    gravity.set(0, 0.1 * movers[i].mass);
    movers[i].applyForce(gravity);
    …
}
Mientras que los objetos ahora caen a la misma velocidad, porque la intensidad de la fuerza del viento es independiente de la masa, los objetos más pequeños todavía se aceleran hacia la derecha más rápidamente.
Inventar fuerzas en realidad nos llevará bastante lejos. El mundo de ProcessingJS es un mundo simulado de pixeles y tú eres su amo. Así que cualquier cosa que consideres apropiada para ser una fuerza, pues caramba, es la fuerza que debe ser. Sin embargo, puede llegar un momento donde te encuentres preguntándote: “¿pero realmente cómo funciona todo?”
Abre cualquier libro de física de secundaria y encontrarás algunos diagramas y fórmulas que describen muchas fuerzas diferentes: gravedad, electromagnetismo, fricción, tensión, elasticidad y más. O, también, navega por las lecciones de física en Khan Academy. En esta sección, vamos a ver dos de esas fuerzas: fricción y gravedad. El punto que estamos haciendo aquí no es que la fricción y la gravedad sean fuerzas fundamentales que siempre tienes que tener en todos tus programas de ProcessingJS. Más bien, queremos evaluar estas dos fuerzas como estudios de caso para el siguiente proceso:
  • Entender el concepto detrás de una fuerza
  • Descomponer la fórmula de la fuerza en dos partes:
    • ¿Cómo calculamos la dirección de la fuerza?
    • ¿Cómo calculamos magnitud de la fuerza?
  • Traducir esa fórmula en código de ProcessingJS que calcule un PVector que sea enviado a través de la función applyForce() de nuestro Mover.
Si podemos seguir los pasos anteriores con dos fuerzas, entonces con suerte si alguna vez te encuentras googleando “fuerza nuclear débil de núcleos atómicos” a las 3 a.m., tendrás las habilidades para tomar lo que encuentres y adaptarlo para los programas de ProcessingJS.

Tratando con fórmulas

Bien, en un momento vamos a escribir la fórmula para la fricción. Esta no es la primera vez que vemos esta fórmula; acabamos de terminar nuestra discusión acerca de la segunda ley de Newton, F=M×A​ (o fuerza = masa * aceleración). No pasamos mucho tiempo preocupándonos por esta fórmula porque es linda y sencilla. Sin embargo, el mundo real es más complicado y feo. Solo echa un vistazo a la ecuación de una distribución “normal”, la cual cubrimos (sin ver la fórmula) en la introducción.
f(x,μ,σ)=1σ2πe((xμ)22σ2)
Lo que estamos viendo aquí es que a las fórmulas les gusta usar muchos símbolos (a menudo letras del alfabeto griego). Echemos un vistazo a la fórmula de la fricción.
Fricción=µNv^
Si ha pasado un tiempo desde que miraste una fórmula de matemáticas o física, hay tres puntos clave que son importantes cubrir antes de continuar.
  • Evalúa el lado derecho, asigna del lado izquierdo. ¡Esto es justo como en el código! Lo que estamos haciendo aquí es evaluar el lado derecho de la ecuación y asignárselo al izquierdo. En el caso de arriba, queremos calcular la fuerza de fricción: el lado izquierdo nos dice qué es lo que queremos calcular y el derecho nos dice cómo hacerlo.
  • ¿Estamos hablando de un vector o de un escalar? Es importante darnos cuenta de que en algunos casos estaremos viendo un vector. Podemos ver eso por la flecha que está arriba de la palabra “fricción”. Tiene una magnitud y dirección. El lado derecho de la ecuación también tiene un vector, indicado por el símbolo v^, que en este caso representa el vector unitario de velocidad.
  • Cuando los símbolos están colocados uno junto al otro, queremos decir que se multiplican. La fórmula de arriba en realidad tiene cuatro elementos: -1, µ, N y v^. Queremos multiplicarlos todos y leer la fórmula como: Fricción=µNv^

Fricción

Comencemos con la fricción y sigamos nuestros pasos.
La fricción es una fuerza disipativa. Una fuerza disipativa es aquella en la cual la energía total de un sistema disminuye cuando un objeto está en movimiento. Digamos que estás conduciendo un coche. Cuando pisas el pedal de freno, los frenos del coche usan fricción para frenar el movimiento de las llantas. La energía cinética (movimiento) es convertida en energía térmica (calor). Siempre que dos superficies entran en contacto, experimentan fricción. Un modelo completo de la fricción incluiría casos separados para fricción estática (un cuerpo en reposo sobre una superficie) y fricción cinética (un cuerpo en movimiento contra una superficie), pero para nuestros propósitos, solo vamos a ver el caso cinético.
Aquí está la fórmula para la fricción, junto con una ilustración: 
Una ilustración de una persona en trineo, junto con la fórmula de la fricción, Fricción = −1µN*v
Ahora nos corresponde a nosotros separar esta fórmula en dos componentes que determinen la dirección de la fricción, así como la magnitud. Con base en el diagrama de arriba, podemos ver que la fricción apunta en la dirección opuesta a la velocidad. De hecho, esa es la parte de la fórmula que dice 1v^, o -1 veces el vector unitario de velocidad. En ProcessingJS, esto significaría tomar el vector de velocidad, normalizarlo y multiplicarlo por -1.
var friction = velocity.get();
friction.normalize();
// Vamos a averiguar la dirección de la fuerza de fricción
// (un vector unitario en la dirección opuesta de la velocidad)
friction.mult(-1);
Ten en cuenta los dos pasos adicionales aquí. Primero, es importante hacer una copia del vector de velocidad, ya que no queremos invertir la dirección del objeto por accidente. Segundo, normalizamos el vector. Esto es porque la magnitud de la fricción no está asociada con qué tan rápido se está moviendo, y queremos empezar con un vector de fricción de magnitud 1 para que se pueda escalar fácilmente.
Según la fórmula, la magnitud es μN. μ, la letra griega m (pronunciada “miu”), se utiliza aquí para describir el coeficiente de fricción. El coeficiente de fricción establece la intensidad de una fuerza de fricción para una superficie en particular. Mientras más grande es, más fuerte es la fricción; mientras más pequeña, más débil. Un bloque de hielo, por ejemplo, tendrá un coeficiente de fricción mucho menor que, digamos, papel de lija. Como estamos en un mundo simulado de ProcessingJS, podemos fijar arbitrariamente el coeficiente con base en cuánta fricción queremos simular.
var c = 0.01;
Ahora para la segunda parte: N. Esa N se refiere a la fuerza normal, la fuerza de contacto ejercida por los objetos que se están tocando. De manera más específica, es la componente perpendicular de la fuerza de contacto.
Piensa en un vehículo que va por un camino. El vehículo empuja hacia abajo contra el camino, y la tercera ley de Newton nos dice que el camino, a su vez, empuja de regreso contra el vehículo. Esa es la fuerza normal. Para un caso sencillo de un objeto que se mueve de manera horizontal, la fuerza normal es igual a la masa multiplicada por la fuerza gravitacional, Fn=mg. Eso significa que un automóvil deportivo ligero ejercería una fuerza normal más pequeña y por lo tanto experimentaría menos fricción que un camión de remolque masivo.
En el diagrama anterior del trineo, el objeto se está moviendo a lo largo de una superficie en un ángulo, de modo que calcular la fuerza normal es un poco más complicado porque no apunta en la misma dirección que la gravedad. Para eso, necesitaríamos saber algo acerca de ángulos y trigonometría.
Por ahora, nuestro objetivo será una simulación "suficientemente buena" para nuestros programas de ProcessingJS, no una simulación perfecta. Por ejemplo, podemos hacer que funcione la fricción con la suposición de que la fuerza normal siempre tiene una magnitud de 1. Entonces nuestra N es simplemente:
var normal = 1;
Cuando lleguemos a ver trigonometría en la siguiente sección, revisaremos estos detalles y haremos que nuestro ejemplo de la fricción sea un poco más sofisticado.
Ahora que tenemos tanto la magnitud como la dirección de la fricción, podemos ponerlo todo junto…
var c = 0.01;
var normal = 1;
var frictionMag = c * normal;
var friction = movers[i].velocity.get();
friction.mult(-1);
friction.normalize();
friction.mult(frictionMag);
…y agregarlo a nuestro ejemplo de “fuerzas”, donde muchos objetos experimentan viento, gravedad y ahora fricción:
Si miras al programa funcionar durante un rato, te darás cuenta de que los círculos se mueven cada vez menos y tienden a quedarse alrededor de una zona. Como la fricción empuja continuamente contra el objeto en la dirección opuesta de su movimiento, el objeto se frena continuamente. Esto puede ser una técnica útil o un problema, dependiendo de los objetivos de tu visualización.

Este curso de "Simulaciones Naturales" es un derivado de "La Naturaleza del Código" por Daniel Shiffman, usado bajo una Licencia Creative Commons Reconocimiento-NoComercial 3.0 Unported.

¿Quieres unirte a la conversación?

Sin publicaciones aún.
¿Sabes inglés? Haz clic aquí para ver más discusiones en el sitio en inglés de Khan Academy.