Skip to content

Dynamic Billiards Simulator demonstrates the principles of dynamic billiards through various collision scenarios. This project uses Newton's Law of Restitution to calculate the speeds of projectiles hurled towards each other in different scenarios. Originally made for my CAIE A Level Further Maths 9231 Mechanics course, it is now being expanded.

Notifications You must be signed in to change notification settings

danialramzan/dynamic-billiards

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Dynamic Billiards Simulator

A Python project demonstrating the principles of dynamic billiards through various collision scenarios. Originally created by me during high school as a proof of concept for collisions based on Newton's Law of Restitution for my CAIE A Level Further Maths 9231 Mechanics course, this project has been expanded to include more complex and interesting collision simulations.

image image image image

Features

Linear Collisions: Simulate two objects colliding in a straight line, demonstrating the basic principles of conservation of momentum and energy.

Angular Collisions: Model collisions at an angle, reflecting more realistic and intricate billiard dynamics.

New! (2024-07-15) Pi Approximation: Use colliding balls to approximate the value of π, showcasing a creative application of elastic collision principles. This project was inspired by Grant Sanderson's (3Blue1Brown) video on the topic (Approximating Pi with Colliding Blocks) and the associated paper upon which it is based: Galperin, G. (2003). Playing pool with π (the number π from a billiard point of view). Regular and Chaotic Dynamics, 8(4), 375-394. https://doi.org/10.1070/RD2003v008n04ABEH000252

Planned Features:

User Stories:

  • As a user, I want to simulate billiard balls colliding head on with arbitrary initial velocities and COR's

  • As a user, I want to be able to model collisions between billiard balls at angles with arbitrary initial velocities and calculate their velocities and angles after collision

  • As a user, I want to use a ridiculously inefficient and unnessesary algorithm to calculate the value of pi to an arbitary number of significant figures using a completely unconventional approach when far better and more appropriate methods are available.

  • As a user, I want to be able to use a GUI to model these collisions and see them occur in real time

OLD DESCRIPTION:

Restitution Momentum Calculator

A Python3 project I made as a proof of concept for collisions based on newtons law of restitution for my CAIE A Level Further Maths 9231 Mechanics course. This project uses the math library and matrices from the numpy library in order to make simultaneous equations using conservation of momentum and Newtons law of restitution to calculate speeds of objects after colliding given a coefficient of restitution x, where 0 ≤ x ≤ 1. It greatly helped me understand the topic better and also helped me verify my answers for my calculations.

It requires numpy to be installed, which can be done with

pip3 install numpy

in an app such as terminal, cmd, or powershell. ^skip this step if it is already installed.

About

Dynamic Billiards Simulator demonstrates the principles of dynamic billiards through various collision scenarios. This project uses Newton's Law of Restitution to calculate the speeds of projectiles hurled towards each other in different scenarios. Originally made for my CAIE A Level Further Maths 9231 Mechanics course, it is now being expanded.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages