Em cada iteração todos os objetos precisam recalcular todas as distâncias em relação a outros objetos e as forças resultantes.
Uma matriz de distâncias é uma matriz com todos os objetos a serem considerados em uma linha e também uma coluna. Para preenche-la parte-se de uma matriz nula e então calcula-se a distancia apenas para os elementos da matriz onde i > j. isto gera uma matriz triangular inferior com a diagonal principal nula (já que a distância de A-A é 0). Em seguida é só somar a matriz ao negativo da transposta e ter uma matriz de diagonal nula.
Dessa forma não será necessário calcular a distância de A-B e depois novamente a distância B-A.
Todas as operações são feitas a partir disso. Pode-se dar mais um passo e utilizar de uma matriz de produtos de massas e ter uma matriz de forças gravitacionais, ou uma matriz de produtos de cargas elétricas.
Uma matriz de distâncias seria o primeiro passo para optmizar também as colisões. Considere vários objetos de mesmo raio, basta ver quais elementos da matriz tem uma distância menor que os raios e pronto, tem-se uma colisão.
Vale lembrar que o calculo de matriz de numpy é bastante rápido.
Enfim, isso tudo pode ser opcional e não precisa sobrescrever os cálculos de forças atuais, apenas substituir quando chamado.
Em cada iteração todos os objetos precisam recalcular todas as distâncias em relação a outros objetos e as forças resultantes.
Uma matriz de distâncias é uma matriz com todos os objetos a serem considerados em uma linha e também uma coluna. Para preenche-la parte-se de uma matriz nula e então calcula-se a distancia apenas para os elementos da matriz onde i > j. isto gera uma matriz triangular inferior com a diagonal principal nula (já que a distância de A-A é 0). Em seguida é só somar a matriz ao negativo da transposta e ter uma matriz de diagonal nula.
Dessa forma não será necessário calcular a distância de A-B e depois novamente a distância B-A.
Todas as operações são feitas a partir disso. Pode-se dar mais um passo e utilizar de uma matriz de produtos de massas e ter uma matriz de forças gravitacionais, ou uma matriz de produtos de cargas elétricas.
Uma matriz de distâncias seria o primeiro passo para optmizar também as colisões. Considere vários objetos de mesmo raio, basta ver quais elementos da matriz tem uma distância menor que os raios e pronto, tem-se uma colisão.
Vale lembrar que o calculo de matriz de numpy é bastante rápido.
Enfim, isso tudo pode ser opcional e não precisa sobrescrever os cálculos de forças atuais, apenas substituir quando chamado.