Simulation de la gravitation selon newton (opengl / devc++)

Description

Cette simulation utilise la loi de la gravitation universelle de Newton qui permet de connaître l'intensité de la force qu'un corps effectue sur un autre, la formule est:

F = (G * m1 * m2) / d²

(avec F une valeur scalaire, les résultats sont après convertis en valeurs vectorielles pour pouvoir déterminer le mouvement total des corps)

G = 6.67259e-11

m1 = masse du premier corps
m2 = masse du second corps
d = distance séparant les corps

La force qu'effectue un corps sur un autre est la même que cet autre corps effectue sur le premier. Je m'explique: le Soleil effectue une force gravitationnelle sur la Terre, qui est exactement la même que celle que la Terre effectue sur le Soleil. Cependant, selon la relation fondamentale de la dynamique F = ma (la Force = la masse * l'accélération), l'accélération subie par le Soleil sera rikiki pendant que la Terre se fait balancer au tour du Soleil à une vitesse phénoménale.

La simulation utilise essentiellement des valeurs vectorielles. Càd que je pose les forces que chaque corps subit à tout instant, j'en calcul la résultante (le tout est programmé en Orienté Objet) et puis en fonction de cette force et de la masse du corps je calcul l'accélération de ce corps (un vecteur, donc une accélération orientée) et j'en déduis un vecteur vitesse "ponctuel" (pas instantané par ce que je n'utilise pas les dérivées, mea culpa, pardon aux familles tout ça) selon la relation de la cinétique: v = t.a (la vitesse est égale au temps multiplié par l'accélération).

ce qui "prouve" que la simulation est environ correcte est que la trajectoire des corps est elliptique, comme l'avait prédit Newton.

Ceci dit: les nouvelles découvertes en physique (bon, nouvelles... ça doti avoir un peu plus de 20 ans qd même j'en sais trop rien) indiquent qu'il est impossible de simuler correctement la gravité. La théorie Newtonienne (de la physique classique) est une approche pas trop mauvaise, rien de plus.

Source / Exemple :


zip, il y a un exécutable dedans
les corps sont référencés dans corps.txt, le format est expliqué dedans.

Conclusion :


Commentez autant que vous le désirez ;-)

PS à Funto: c'est une version corrigée avec l'utilisation des Display List, c'est pour ça que je me suis décidé à montrer ce code.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.