1.1.2 • Published 5 months ago
2d-collision v1.1.2
💥 Particle Physics Simulation
A lightweight and customisable JavaScript library for simulating particle physics, including collisions, gravity, and mouse interactivity. Perfect for creating dynamic visual effects.
🚀 Installation:
Option 1: via npm
npm install 2d-collision
Option 2: Vanilla JS
- Download
physics.js
and add it to your project folder. - Include it in your HTML as a module:
<script src="path/to/physics.js" type="module"></script>
🎮 Usage and Configuration
Functions:
The library provides the following key functions:
createParticle(radius, mass, element, container)
– Creates a single particle and adds it to the simulation.radius
(number)
– determines particle's sizemass
(number)
– determines particle's weightelement
(string)
– the HTML element that you'd like to turn into a particlecontainer
(string)
– the HTML element that you'd like to act as the container for the particle
createParticles(radii, masses, elements, container)
– Creates multiple particles at once.editParticles()
– Modify properties of particles by selecting them via their class. Function provides the following arguments: -particlesClass
(string) – The class of the HTML elements representing the particles. -setVelX, setVelY
(number) – Sets the velocity of the particles along the X and Y axes. -addVelX, addVelY
(number) – Adds to the current velocity of the particles along the X and Y axes. -multiplyVelX, multiplyVelY
(number) – Multiplies the current velocity of the particles along the X and Y axes. -setPosX, setPosY
(number) – Sets the position of the particles along the X and Y axes. -addPosX, addPosY
(number) – Adds to the current position of the particles along the X and Y axes. -multiplyPosX, multiplyPosY
(number) – Multiplies the current position of the particles along the X and Y axes. -setRadii
(number) – Sets the radii of the particles. -addRadii
(number) – Adds to the current radii of the particles. -multiplyRadii
(number) – Multiplies the current radii of the particles. -setMasses
(number) – Sets the masses of the particles. -addMasses
(number) – Adds to the current masses of the particles. -multiplyMasses
(number) – Multiplies the current masses of the particles.
Example:
// Create a single particle
createParticle(10, 1, document.querySelector('#circle'), document.querySelector('#container'));
// Create multiple particles
createParticles(12, 3, document.querySelectorAll('.circle'), document.querySelector('#container'));
// Edit particles
editParticles({
particlesClass: 'circle',
setVelX: 5,
addPosY: 10,
multiplyRadii: 1.5
});
Global Configuration:
The library includes several global settings to control particle behavior:
Particle.acceleration
(Vector) – Controls gravity direction. Default: (0, 0.35) ➜ To edit values, assign like:Particle.acceleration.x = ...
,Particle.acceleration.y = ...
Particle.collisionDamping
(number) – Reduces velocity after collisions. Default: 0.5Particle.enableCursorForce
(boolean) – Enables or disables interactive forces from the cursor. Default: trueParticle.cursorForce
(number) – Strength of the cursor's interactive force. Default: 0.5Particle.containerPadding
(number) – Sets padding around the container to prevent particles from touching edges. Default: 0
License: MIT
Contributing: Contributions welcome! Please feel free to submit a Pull Request.