Cantidad de materia atraída por la gravedad de la Tierra
Respuestas a la pregunta
Respuesta:
Diagrama de fuerzas gravitacionales entre dos esferas
Diagrama de fuerzas gravitacionales entre dos esferas
Examinemos esta fórmula un poco más de cerca.
F se refiere a la fuerza gravitacional, el vector que a final de cuentas queremos calcular y pasar a nuestra función applyForce().
G es la constante de gravitación universal, que en nuestro mundo es igual a 6.67428 x 10^-11 metros cúbicos por kilogramo por segundo cuadrado. Este es un número bastante importante si tu nombre es Isaac Newton o Albert Einstein. No es un número importante si eres un programador de ProcessingJS. De nuevo, es una constante que podemos usar para hacer que las fuerzas en nuestro mundo sean más intensas o más débiles. Tampoco es una opción tan terrible hacerla igual a uno e ignorarla.
m_1m
1
m, start subscript, 1, end subscript y m_2m
2
m, start subscript, 2, end subscript son las masa de los objetos 1 y 2. Como vimos con la segunda ley de Newton (\vec{F} = M\vec{A}
F
=M
A
F, with, vector, on top, equals, M, A, with, vector, on top), la masa también es algo que podríamos escoger ignorar. Después de todo, las figuras que se dibujan en la pantalla en realidad no tienen una masa física. Sin embargo, si nos quedamos con estos valores, podemos crear simulaciones mucho más interesantes en las cuales los objetos “más grandes” ejercen una fuerza gravitacional mayor sobre los más pequeños.
\hat{r}
r
^
r, with, hat, on top se refiere al vector unitario que apunta del objeto 1 al objeto 2. Como veremos en un momento, podemos calcular este vector de dirección al restar la ubicación de un objeto de la ubicación del otro.
r^2r
2
r, squared se refiere a la distancia entre los dos objetos elevada al cuadrado. Tomemos un momento para pensar acerca de esto un poco más. Con todo lo que está en la parte de arriba de la fórmula (G, m_1m
1
m, start subscript, 1, end subscript, m_2m
2
m, start subscript, 2, end subscript), mientras más grande sea su valor, mayor será la fuerza. Una masa grande, una fuerza grande. G grande, fuerza grande. Ahora, cuando lo dividimos entre algo, tenemos lo opuesto. La intensidad de la fuerza es inversamente proporcional a la distancia al cuadrado. Mientras más lejos esté un objeto, más débil será la fuerza; mientras más cerca, será mayor.
Espero que ahora la fórmula tenga sentido para nosotros. Vimos un diagrama y analizamos los componentes individuales de la fórmula. Ahora es tiempo de averiguar cómo traducir las matemáticas en código de ProcessingJS. Vamos a hacer las siguientes suposiciones.
Tenemos dos objetos, y:
Cada objeto tiene una ubicación de PVector: location1 y location2.
Cada objeto tiene una masa numérica: mass1 y mass2.
Hay una variable numérica G para la constante de gravitación universal.
Dadas estas suposiciones, queremos calcular una fuerza PVector, la fuerza de gravedad. Lo haremos en dos partes. Primero, vamos a calcular la dirección de la fuerza \hat{r}
r
^
r, with, hat, on top en la fórmula de arriba. Segundo, vamos a calcular la intensidad de la fuerza de acuerdo con las masas y la distancia.
¿Recuerdas cuando averiguamos cómo tener un objeto que se acelera hacia el ratón? Vamos a usar la misma lógica aquí.
Un vector es la diferencia entre dos puntos. Para hacer un vector que apuntara del círculo al ratón, simplemente restamos un punto del otro:
var dir = PVector.sub(mouse, location);
En nuestro caso, la dirección de la fuerza de atracción que el objeto 1 ejerce sobre el objeto 2 es igual a:
var dir = PVector.sub(location1, location2);
No olvides que como queremos un vector unitario, un vector que nos diga solo la dirección, necesitaremos normalizar el vector después de restar las ubicaciones:
dir.normalize();
Bien, tenemos la dirección de la fuerza. Ahora solo necesitamos calcular la magnitud y escalar el vector de manera correspondiente.
var m = (G * mass1 * mass2) / (distance * distance);
dir.mult(m);
El único problema es que no conocemos la distancia. G, mass1 y mass1 estaban dados, pero vamos a tener que realmente calcular la distancia antes de que funcione el código anterior. ¿No acabamos de hacer un vector que apunta desde una dirección a la otra? ¿La longitud de ese vector no sería la distancia entre los dos objetos?
Bueno, si agregamos una sola línea de código y tomamos la magnitud de ese vector antes de normalizarlo, entonces tendremos la distancia.
Explicación: