Click here to Skip to main content
15,891,136 members
Articles / Programming Languages / C++
Technical Blog

My God, It’s Full Of Stars: The N-Body-Problem Series

Rate me:
Please Sign up or sign in to vote.
3.67/5 (2 votes)
13 Mar 2019CPOL2 min read 2.4K   3   1
I thought it would be a very nice idea to start my blog with a small project I wanted to do since a long time. A small tool/solver of the n-body-problem. It’s not just only the interest of solving a challenging mathematical problem with modern C++.

I thought it would be a very nice idea to start my blog with a small project I wanted to do since a long time. A small tool/solver of the n-body-problem. It’s not just only the interest of solving a challenging mathematical problem with modern C++. I also love clean, concise and readable code, which is also something I would like to train and share with this project. You can find the empty repository setup at GitHub. I will always try to tag the end state of the repository after each post of this blog series.

So lets start with the bare minimum of theory we need. We want to start with a simple example of two still standing masses (or stars if you like) which get attracted to each other. For the sake of simplicity we consider them as point masses which mean they are infinitesimal small, or in other words, they have no volume.

Kinematics
Kinematic quantities of a classical particle of mass m: position r, velocity v, acceleration a [Wikipedia]

From the image above we can see that a particle is moving the path dr , with its velocity v and accelerated by a . From this point we get the equations of motion of one such point as

r=r_{0}+vt+\frac{1}{2}at^{2}

with r as the resulting position, r_{0} as the starting position, v as the velocity, t as the time step and a as the acceleration. We also know that the force is defined by the product of mass m and the acceleration a

F=ma

We know as well that the force due to gravity between two masses can be calculated as

F=G\frac{m_{1}m_{2}}{r^2}

with the gravitational constant G the two masses of them and their distance r . With the equations of the force and the force due to gravity, we can derive the acceleration a a mass point is experiencing while he is attracted by another mass point.

a=G\frac{m_{1}m_{2}}{m_{1}r^2}

As a result we get our final equation which is deriving the change of position of a mass point by its starting position, its velocity and its acceleration.

r=r_{0}+vt+\frac{1}{2}G\frac{m_{1}m_{2}}{m_{1}r^2}t^{2}

With this I will close this post and we will proceed next time with setting up a basic CMAKE example project which is building our solver library and a separate test library.

Did you like this post?

What are your thoughts on this post?

Feel free to comment and share the post.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Team Leader KISSsoft AG
Switzerland Switzerland
Passionate C++ developer, mechanical engineer, Head of Software Development at KISSsoft AG and host of https://thoughs-on-coding.com

Comments and Discussions

 
QuestionAcceleration is not constant Pin
Art Braundmeier15-Mar-19 8:24
Art Braundmeier15-Mar-19 8:24 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.