Inspiration
I've always loved astrophysics and space in general. It's been a hoppy of mine ever since I was a kid. I used to go stargazing every weekend but could never afford actual star-tracking equipment. Astrophotography has always been something I wanted to get into but a crucial part of astrophotography is the ability to track stars. Star tracking rigs are costly; ranging anywhere from $400 to $800. I wanted to create a system in which anyone would be able to track the path of planets to interface with their preexisting telescopes.
What it does
The simulation currently takes the mass, radius, velocity and distance of planets to simulate their orbital paths. It's able to precisely show the elliptical path of a planet's orbit and its distance from the sun at each point of its orbit. It's also capable of simulating slingshot manoeuvres. We could simulate a situation where rockets use gravitation assistance to then travel to further planets. The simulation can calculate how long this would take, the trajectory that the rocket would then travel at, how fast it's travelling and various other parameters.
How we built it
The language used to code this was python. I used the pygame module as a GUI to visualise the motion of planets. The main way it works is by using different laws of physics. By using the formula F = Gm1m2/r^2, we are able to calculate the force exerted on a particular celestial body. Using force we can then calculate the velocity, however, we needed to break down velocity in the x and y-axis. I created a class called Planets which took in parameters such as: Distance to the sun, x,y, radius, colour and mass. Using the NASA planetary database (https://pds.nasa.gov/), I was able to collect all the data I needed to simulate our solar system and the path of all the rocky planets in our solar system.
Challenges we ran into
Most of the challenges came in relearning the physics behind circular and orbital motion. I struggled with finding a balance between learning the physics and applying what I learnt to code. Sometimes I knew the physics but wasn't sure how to code it while other times I struggled to grasp the physics which meant I couldn't move forward with coding it. Another challenge I ran into was scale. I couldn't simulate the solar system at the scale it really was in so it took some time and testing to figure out a scale which I was happy with.
Accomplishments that we're proud of
I'm proud of the concept I tried to come up with. I feel like it's a unique idea that not many people would have attempted or tried and I pushed myself out of my boundary. As a freshman, I feel like I utilised the knowledge I had and pushed myself to learn more. In addition, I'm happy with how accurately the simulation was able to predict the orbital path of planets within our solar system.
What we learned
I learnt how to use pygames to create a graphical user interface. I learnt how to apply real-world physics to solve problems using code. I learnt a lot more about classes and used them more often as they proved to be extremely helpful in developing this product
What's next for Orbital Motion Simulation
The next step for my Orbital Motion Simulation would be to polish everything up. Right now, I'll be the first to admit that it's quite a janky product. The custom system section, its currently not able to take in more than 1 planet which is something I need to work on. Rather than using command line prompts for the custom section, I could use the Tkinter module to create a GUI which allows the user to change different parameters in real-time. Another thing which could be improved is the fact that currently, planets don't have gravitation effects on each other. It only models the influence of the sun on planets. I would like to take this a step further and simulate how the gravitational forces of each planet also influence the path it takes.
Log in or sign up for Devpost to join the conversation.