Skip to content

2-dimensional physics engine written in Cairo

License

Notifications You must be signed in to change notification settings

jyfmidi/fountain

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fountain

A 2-dimensional physics engine written in Cairo

2-dimensional ellastic collision

source: https://en.wikipedia.org/wiki/Elastic_collision

Physics engine

  • euler_step_single_circle_aabb_boundary(): Forward the position and velocity of one circle by one step with Euler method, where the circle is bounded by an axis-aligned box
  • collision_pair_circles(): For two circle objects, given their current positions and next candidate positions, which come from Euler forward function, detect if they would have collided, and handle the collision by snapping them to the point of impact, and set their velocities assuming fully elastic collision. Note that this function assumes the two circle objects to share the same radius value, and that it does not handle potential tunneling effect.
  • friction_single_circle(): Handle acceleration recalculation with kinetic friction

Scene forwarder

  • forward_scene_capped_counting_collision(): Forward a scene of circle objects by cap number of steps, where each step involves forwarding each object with Euler method, handling all possible collisions, and recalculate acceleration based on friction. The function keeps count of collision occurences between all pairs of objects.

About

2-dimensional physics engine written in Cairo

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%