soulwire/Coffee-Physics
soulwire/Coffee-Physics has 1,049 GitHub stars and 83 forks. GitHot measured 0 in 7 days. Last checked 2026-11-11 01:33 UTC. Last push 2016-12-12.
A simple, lightweight physics engine written in CoffeeScript
Measured star growth
- in 24h
- Update delayed
- in 7 days
- 0
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalCoffee Physics
A lightweight physics engine, written in CoffeeScript. Why? Why not!?
Early demos can be found here: http://soulwire.github.com/Coffee-Physics/
A Quick Example
The CoffeePhysics API is designed to be very simple. Consider the following example:
// Create a physics instance which uses the Verlet integration method
var physics = new Physics();
physics.integrator = new Verlet();
// Design some behaviours for particles
var avoidMouse = new Attraction();
var pullToCenter = new Attraction();
// Allow particle collisions to make things interesting
var collision = new Collision();
// Use Sketch.js to make life much easier
var example = Sketch.create({ container: document.body });
example.setup = function() {
for ( var i = 0; i < 200; i++ ) {
// Create a particle
var particle = new Particle( Math.random() );
var position = new Vector( random( this.width ), random( this.height ) );
particle.setRadius( particle.mass * 10 );
particle.moveTo( position );
// Make it collidable
collision.pool.push( particle );
// Apply behaviours
particle.behaviours.push( avoidMouse, pullToCenter, collision );
// Add to the simulation
physics.particles.push( particle );
}
pullToCenter.target.x = this.width / 2;
pullToCenter.target.y = this.height / 2;
pullToCenter.strength = 120;
avoidMouse.setRadius( 60 );
avoidMouse.strength = -1000;
example.fillStyle = '#ff00ff';
}
example.draw = function() {
// Step the simulation
physics.step();
// Render particles
for ( var i = 0, n = physics.particles.length; i < n; i++ ) {
var particle = physics.particles[i];
example.beginPath();
example.arc( particle.pos.x, particle.pos.y, particle.radius, 0, Math.PI * 2 );
example.fill();
}
}
example.mousemove = function() {
avoidMouse.target.x = example.mouse.x;
avoidMouse.target.y = example.mouse.y;
}
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,641 starspublic-apis/public-apis
A collective list of free APIs
498,007 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
450,446 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,311 stars