Voy a asumir su ventana tiene unas dimensiones de 1 x 1, en unidades de longitud. Ya que es un juego de vídeo unidades realmente no importa. La aceleración de la gravedad que usted está buscando puede ser un vector de 2 componentes.
$$\langle a_x, a_y\rangle$$
A continuación, voy a decir que la nave espacial está en el origen con el asteroide en (x,y). Esto sólo hace que sea más fácil. La gravedad de un único asteroide será:
$$\vec{a} = \frac{\vec{r}}{\left| \vec{r} \right|^3}$$
$$a_x = \frac{-x}{ \left( x^2 + y^2 \right)^{3/2}}$$
$$a_y = \frac{-y}{ \left( x^2 + y^2 \right)^{3/2}}$$
Aquí de nuevo he ejercido temerario desprecio por unidades. Una forma de abordar el problema es en realidad la suma de hasta la aceleración de toda una red infinita de masas que se repita cada x e y de incremento. Si usted hace esto por la parte superior derecha del cuadrante solo vas a encontrar simplemente se bifurca. Una forma de evitar esto es la suma de la contribución de un punto de índice (i,j) con un punto en las otras 3 cuadrantes de índices (i,j), (i, j), y (-i,-j). Que la serie converge para el calculo de la aceleración, pero no el potencial. Aquí es un formalismo de lo que he descrito.
$$x_{i} = x+i$$
$$x_{-i} = x-1-i$$
$$y_{j} = y+j$$
$$y_{j} = y-1-j$$
He reservado el $i=0$ $j=0$ valores para el 4 de asteroides más cercanos al origen. Ahora podemos escribir la aceleración de un conjunto dado de 4 asteroides con una (i,j) de índice par.
$$a_{xij} = \frac{-x_{i}}{(x_{i}^2+y_{j}^2)^{3/2}} - \frac{x_{-i}}{(x_{-i}^2+y_{j}^2)^{3/2}} - \frac{x_{i}}{(x_{i}^2+y_{-j}^2)^{3/2}} - \frac{x_{-i}}{(x_{-i}^2+y_{-j}^2)^{3/2}}$$
$$a_{yij} = \frac{-y_{j}}{(x_{i}^2+y_{j}^2)^{3/2}} - \frac{y_{j}}{(x_{-i}^2+y_{j}^2)^{3/2}} - \frac{y_{-j}}{(x_{i}^2+y_{-j}^2)^{3/2}} - \frac{y_{-j}}{(x_{-i}^2+y_{-j}^2)^{3/2}}$$
Entonces podemos tomar estos aportes y hacer un doble infinito suma.
$$a_x = \sum_{j=0}^{\infty} \sum_{i=0}^{\infty} a_{xij}$$
$$a_y = \sum_{j=0}^{\infty} \sum_{i=0}^{ \infty} a_{yij}$$
Estamos básicamente terminado aquí. Pensé que iba a ser fácil para obtener una solución de forma cerrada para la serie, pero realmente no lo es. Hice implementar numéricamente. Tenga en cuenta que los cálculos crecer como $n^2$ donde $n$ es el límite superior de su serie porque es una suma doble. Me encontré con que $n=0$ da un error de 5% y cae lentamente para valores más altos. Al hacer su código, deberás consultar a un matemático o aplicar un conjunto de trucos para una suavidad comportarse de código. Probablemente encontrará que es más fácil para calcular un vector de campo que tiene buena precisión y, a continuación, sólo interpolar los valores de que cuando se ejecuta el código. Sin embargo, eso es sólo para los puntos lejos del asteroide. Una vez que tienes muy cerca el asteroide este método se romperá y tendrás que usar una técnica de integración que puede manejar el gran pendiente en la región. Afortunadamente, la contribución del asteroide imágenes de espejo disminuirán a medida que se acerque a ella, y puede hacer la transición a una sola $1/r^2$ aceleración.
Además:
Parece haber un cierto escepticismo en cuanto a si o no la serie converge en todo. Te aseguro que no. A continuación son las componentes x y y ($\langle a_x, a_y\rangle$) de la aceleración calculada con el método descrito aquí, haciendo una suma de $5$. Eso significa, $5^2=25$ términos en la suma de la serie con 4 asteroides para cada término, lo que resulta en 100 total de asteroides. Así que la siguiente es la aceleración de una malla de 100 asteroides en una malla de 10x10 alrededor del origen. Usted puede aumentar el lado de la forma de 10 a 400 asteroides y usted consigue solamente una pequeña revisión en estos números.
x-componente
y-componente
Esta es lisa, continua, y repetir, exactamente como se esperaba. A un muy buen nivel de precisión, este es el campo de un infinito de malla de asteroides haciendo un $1/r^2$ suma, como se describe anteriormente. Se hace converger.