{"_id":"2d-collision","_rev":"5-32d200b9ca4c51bc24c449847a96c13a","name":"2d-collision","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"2d-collision","version":"1.0.0","keywords":["collision","physics","engine","collide","collisions","particles","particle","2d","simulation","gravity","interactive","visual-effects","vector","dynamics","animation","javascript","customizable","lightweight","mouse-interactivity","physics-simulation","physics-engine"],"author":{"url":"https://alyshukry.works","name":"Aly Shukry","email":"alyshukry.dev@gmail.com"},"license":"MIT","_id":"2d-collision@1.0.0","maintainers":[{"name":"alyshukry","email":"alyshukry.dev@gmail.com"}],"homepage":"https://github.com/alyshukry/2d-collision#readme","bugs":{"url":"https://github.com/alyshukry/2d-collision/issues"},"dist":{"shasum":"540e38cdcc27aae3ee6fd0280940dfb4763e1ecc","tarball":"https://registry.npmjs.org/2d-collision/-/2d-collision-1.0.0.tgz","fileCount":4,"integrity":"sha512-/u4vwcDfpOcJIZlhok1yx24vLz3w3cvP5i5q62o4dUSGvqQTq0cWmyu8LOSLN8N33ods/SX72BLJXrBk1/ndLA==","signatures":[{"sig":"MEUCIQDZINfWAlDTFeyuxTSBdbm32TTIBqehfTtXfhJRE/R3OwIgNt3gEebXYjJhYeZrPou0LIlr7y6t1HVwP63FptkepQg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18364},"main":"physics.js","gitHead":"ff8a56d4ec4b6e5079f0e70dd94b14b7b77d928d","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alyshukry","email":"alyshukry.dev@gmail.com"},"repository":{"url":"git+https://github.com/alyshukry/2d-collision.git","type":"git"},"_npmVersion":"10.9.2","description":"💥 A lightweight and customisable JavaScript library for simulating particle physics, including collisions, gravity, and mouse interactivity. Perfect for creating dynamic visual effects.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/2d-collision_1.0.0_1747437892145_0.9943141097603139","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"2d-collision","version":"1.1.0","keywords":["collision","physics","engine","collide","collisions","particles","particle","2d","simulation","gravity","interactive","visual-effects","vector","dynamics","animation","javascript","customizable","lightweight","mouse-interactivity","physics-simulation","physics-engine"],"author":{"url":"https://alyshukry.works","name":"Aly Shukry","email":"alyshukry.dev@gmail.com"},"license":"MIT","_id":"2d-collision@1.1.0","maintainers":[{"name":"alyshukry","email":"alyshukry.dev@gmail.com"}],"homepage":"https://github.com/alyshukry/2d-collision#readme","bugs":{"url":"https://github.com/alyshukry/2d-collision/issues"},"dist":{"shasum":"05467360c2cb3a13c03ef156800c12a8ea834630","tarball":"https://registry.npmjs.org/2d-collision/-/2d-collision-1.1.0.tgz","fileCount":4,"integrity":"sha512-u8VFum8/aAtAXM3z7HID9SY3qTQrKCBnbCQDf3OXbKZzcBy/IsuTCrMk/w9SJNMJIKJb8hNIW2ZleKUvXoMK6w==","signatures":[{"sig":"MEUCIQCSEJfiBUw1Q3pmmfXRs8TmYr/kmlxyoLzFnPcNEEq4LgIgMz4dw9sZRwYjK6Jflvk/6hrkaYL8C4Rko2IZVtCzF2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19055},"main":"physics.js","gitHead":"97bf02f3ca1db469a9bbc7a30d193e36a2970d31","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alyshukry","email":"alyshukry.dev@gmail.com"},"repository":{"url":"git+https://github.com/alyshukry/2d-collision.git","type":"git"},"_npmVersion":"10.9.2","description":"💥 A lightweight and customisable JavaScript library for simulating particle physics, including collisions, gravity, and mouse interactivity. Perfect for creating dynamic visual effects.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/2d-collision_1.1.0_1747481245032_0.05313184063831833","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"2d-collision","version":"1.1.1","keywords":["collision","physics","engine","collide","collisions","particles","particle","2d","simulation","gravity","interactive","visual-effects","vector","dynamics","animation","javascript","customizable","lightweight","mouse-interactivity","physics-simulation","physics-engine"],"author":{"url":"https://alyshukry.works","name":"Aly Shukry","email":"alyshukry.dev@gmail.com"},"license":"MIT","_id":"2d-collision@1.1.1","maintainers":[{"name":"alyshukry","email":"alyshukry.dev@gmail.com"}],"homepage":"https://github.com/alyshukry/2d-collision#readme","bugs":{"url":"https://github.com/alyshukry/2d-collision/issues"},"dist":{"shasum":"b814700ec4c8ed5d6ac4a510dd374bd4873f1fd1","tarball":"https://registry.npmjs.org/2d-collision/-/2d-collision-1.1.1.tgz","fileCount":4,"integrity":"sha512-t5y85oSI2vdhZMUsRrgB1n0PStljmXqx4/+9QPvSFIhfWNZzPIdxwPkZye8Drl5HY/yR2uvNqg1zVx7c1iCmKg==","signatures":[{"sig":"MEYCIQCrhIeuC/Mj2dnz/NKtVQjjFKjjvflYKmB5x1hEKFptDAIhAJDckl/9qcvP6dVT7/Er4vR3vqUAUdNDFkR65VELI3p7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19011},"main":"physics.js","gitHead":"363fada84af608a7feceb2de6c64dd778f8b8ce8","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alyshukry","email":"alyshukry.dev@gmail.com"},"repository":{"url":"git+https://github.com/alyshukry/2d-collision.git","type":"git"},"_npmVersion":"10.9.2","description":"💥 A lightweight and customisable JavaScript library for simulating particle physics, including collisions, gravity, and mouse interactivity. Perfect for creating dynamic visual effects.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/2d-collision_1.1.1_1747481476698_0.922771873428716","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"2d-collision","version":"1.1.2","keywords":["collision","physics","engine","collide","collisions","particles","particle","2d","simulation","gravity","interactive","visual-effects","vector","dynamics","animation","javascript","customizable","lightweight","mouse-interactivity","physics-simulation","physics-engine"],"author":{"url":"https://alyshukry.works","name":"Aly Shukry","email":"alyshukry.dev@gmail.com"},"license":"MIT","_id":"2d-collision@1.1.2","maintainers":[{"name":"alyshukry","email":"alyshukry.dev@gmail.com"}],"homepage":"https://github.com/alyshukry/2d-collision#readme","bugs":{"url":"https://github.com/alyshukry/2d-collision/issues"},"dist":{"shasum":"185e8ea1c44f6bb5e0c1d37581094833e48c4723","tarball":"https://registry.npmjs.org/2d-collision/-/2d-collision-1.1.2.tgz","fileCount":3,"integrity":"sha512-sxGWIcJnC/r2LdaK8yS0YRpZTqK+viVlEHtSdTDawiZ8EPJ35U9pM4ScX/u5ATswQ05IAHSdPXypC/sL6887vA==","signatures":[{"sig":"MEUCIQDpHaJeGS6x0PCQWO2/iwHoC6L43AT3QfR6JYbONP8DIQIgcIptL6UQVByxFc3ReYakZuvkx1JvAtgj9LYSalWYFk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18987},"main":"physics.js","gitHead":"78d74475a0056034ceafb960b98e7d7c39ab72e0","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alyshukry","email":"alyshukry.dev@gmail.com"},"repository":{"url":"git+https://github.com/alyshukry/2d-collision.git","type":"git"},"_npmVersion":"10.9.2","description":"💥 A lightweight and customisable JavaScript library for simulating particle physics, including collisions, gravity, and mouse interactivity. Perfect for creating dynamic visual effects.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/2d-collision_1.1.2_1747646147671_0.9810812482384792","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"2d-collision","version":"1.2.0","description":"💥 A lightweight and customisable JavaScript library for simulating particle physics, including collisions, gravity, and mouse interactivity. Perfect for creating dynamic visual effects.","main":"physics.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/alyshukry/2d-collision.git"},"keywords":["collision","physics","engine","collide","collisions","particles","particle","2d","simulation","gravity","interactive","visual-effects","vector","dynamics","animation","javascript","customizable","lightweight","mouse-interactivity","physics-simulation","physics-engine"],"author":{"name":"Aly Shukry","email":"alyshukry.dev@gmail.com","url":"https://alyshukry.works"},"license":"MIT","bugs":{"url":"https://github.com/alyshukry/2d-collision/issues"},"homepage":"https://github.com/alyshukry/2d-collision#readme","_id":"2d-collision@1.2.0","gitHead":"24189bf4dd21d53a9680ec834d4a55a6b9ceb287","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-J72ACF9j2GP4/YKS0xe3FjN+tQ57mju4JRe3F7mu/21bVKNRVnHjCWHQ9qeV1IpdDZNcrnMeOTIv42u4I1rxqQ==","shasum":"b2151660118e68b0edbb6ee2501154c5c881830f","tarball":"https://registry.npmjs.org/2d-collision/-/2d-collision-1.2.0.tgz","fileCount":3,"unpackedSize":19531,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFsUs1/frRQkdgcktNnBqokZWvID4kRCVc7ZA8hUJRejAiAQO0SrOCWfosQZ1cteX1t1OAeT7Z/fSLWlw+rCjTfRjQ=="}]},"_npmUser":{"name":"alyshukry","email":"alyshukry.dev@gmail.com"},"directories":{},"maintainers":[{"name":"alyshukry","email":"alyshukry.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/2d-collision_1.2.0_1753546318515_0.6405567255311346"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-16T23:24:52.144Z","modified":"2025-07-26T16:11:58.869Z","1.0.0":"2025-05-16T23:24:52.363Z","1.1.0":"2025-05-17T11:27:25.195Z","1.1.1":"2025-05-17T11:31:16.871Z","1.1.2":"2025-05-19T09:15:47.849Z","1.2.0":"2025-07-26T16:11:58.685Z"},"bugs":{"url":"https://github.com/alyshukry/2d-collision/issues"},"author":{"name":"Aly Shukry","email":"alyshukry.dev@gmail.com","url":"https://alyshukry.works"},"license":"MIT","homepage":"https://github.com/alyshukry/2d-collision#readme","keywords":["collision","physics","engine","collide","collisions","particles","particle","2d","simulation","gravity","interactive","visual-effects","vector","dynamics","animation","javascript","customizable","lightweight","mouse-interactivity","physics-simulation","physics-engine"],"repository":{"type":"git","url":"git+https://github.com/alyshukry/2d-collision.git"},"description":"💥 A lightweight and customisable JavaScript library for simulating particle physics, including collisions, gravity, and mouse interactivity. Perfect for creating dynamic visual effects.","maintainers":[{"name":"alyshukry","email":"alyshukry.dev@gmail.com"}],"readme":"# 💥 Particle Physics Simulation\n![npm](https://img.shields.io/npm/v/2d-collision) ![license](https://img.shields.io/badge/license-MIT-blue.svg) ![downloads](https://img.shields.io/npm/dt/2d-collision)\n\nA lightweight and customisable JavaScript library for simulating particle physics, including collisions, gravity, and mouse interactivity. Perfect for creating dynamic visual effects.\n\n![Demo](demo.gif)\n## 🚀 Installation:\n### Option 1: via npm\n```bash\nnpm install 2d-collision\n```\n## 🎮 Usage and Configuration\n### Functions:\nThe library provides the following key functions:\n- **`createParticle(radius, mass, element, container)`** – Creates a single particle and adds it to the simulation.\n\n    - `radius`*`(number)`* – determines particle's size\n    - `mass`*`(number)`* – determines particle's weight\n    - `element`*`(string)`* – the HTML element that you'd like to turn into a particle\n    - `container`*`(string)`* – the HTML element that you'd like to act as the container for the particle\n- **`createParticles(radii, masses, elements, container)`** – Creates multiple particles at once.\n- **`editParticles()`** – Modify properties of particles by selecting them via their class. Function provides the following arguments:\n    - `particlesClass` *(string)* – The class of the HTML elements representing the particles.\n    - `setVelX, setVelY` *(number)* – Sets the velocity of the particles along the X and Y axes.\n    - `addVelX, addVelY` *(number)* – Adds to the current velocity of the particles along the X and Y axes.\n    - `multiplyVelX, multiplyVelY` *(number)* – Multiplies the current velocity of the particles along the X and Y axes.\n    - `setPosX, setPosY` *(number)* – Sets the position of the particles along the X and Y axes.\n    - `addPosX, addPosY` *(number)* – Adds to the current position of the particles along the X and Y axes.\n    - `multiplyPosX, multiplyPosY` *(number)* – Multiplies the current position of the particles along the X and Y axes.\n    - `setRadii` *(number)* – Sets the radii of the particles.\n    - `addRadii` *(number)* – Adds to the current radii of the particles.\n    - `multiplyRadii` *(number)* – Multiplies the current radii of the particles.\n    - `setMasses` *(number)* – Sets the masses of the particles.\n    - `addMasses` *(number)* – Adds to the current masses of the particles.\n    - `multiplyMasses` *(number)* – Multiplies the current masses of the particles.\n<br>\n\nExample:\n```js\n// Create a single particle\ncreateParticle(10, 1, document.querySelector('#circle'), document.querySelector('#container'));\n\n// Create multiple particles\ncreateParticles(12, 3, document.querySelectorAll('.circle'), document.querySelector('#container'));\n\n// Edit particles\neditParticles({\n    particlesClass: 'circle',\n    setVelX: 5,\n    addPosY: 10,\n    multiplyRadii: 1.5\n});\n```\n### Global Configuration:\nThe library includes several global settings to control particle behavior:\n- **`Particle.acceleration`** *(Vector)* – Controls gravity direction.<br>\n    *Default:* (0, 0.35)<br>\n    ➜ *To edit values, assign like*: `Particle.acceleration.x = ...`, `Particle.acceleration.y = ...`\n- **`Particle.collisionDamping`** *(number)* – Reduces velocity after collisions.<br>\n    *Default:* 0.5\n- **`Particle.enableCursorForce`** *(boolean)* – Enables or disables interactive forces from the cursor.<br>\n    *Default:* true\n- **`Particle.cursorForce`** *(number)* – Strength of the cursor's interactive force.<br>\n    *Default:* 0.5\n- **`Particle.containerPadding`** *(number)* – Sets padding around the container to prevent particles from touching edges.<br>\n    *Default:* 0\n\n<br>\n\n**License:** MIT  \n**Contributing:** Contributions welcome! Please feel free to submit a Pull Request.","readmeFilename":"README.md"}