@megaofmegalodon/2d-collisions
v1.0.1
Published
A TypeScript library for 2D collision detection.
Readme
@megaofmegalodon/2d-collisions
A lightweight TypeScript library for 2D collision detection. Uses the Separating Axis Theorem (SAT) for collision detection on convex polygons.
The library supports:
- Circle vs. Circle collisions
- Polygon vs. Circle collisions
- Polygon vs. Polygon collisions
Installation
npm i @megaofmegalodon/2d-collisionsUsage
Circle Collisions
import { checkCollision, circleCollision, Circle, Vertex } from "@megaofmegalodon/2d-collisions";
const c1 = new Circle(new Vertex(0, 0), 5);
const c2 = new Circle(new Vertex(3, 4), 5);
console.log(checkCollision(c1, c2)); // true
console.log(circleCollision(c1, c2)); // truePolygon vs. Circle Collisions
import { checkCollision, Polygon, Circle, Vertex } from "@megaofmegalodon/2d-collisions";
const c1 = new Circle(new Vertex(1, 1), 0.5);
const p1 = new Polygon(new Vertex(0, 0))
.addVertex(new Vertex(0, 0))
.addVertex(new Vertex(2, 0))
.addVertex(new Vertex(1, 2));
console.log(checkCollision(c1, p1)); // true
console.log(checkCollision(p1, c1)); // true
Polygon Collisions
import { checkCollision, Polygon, Vertex } from "@megaofmegalodon/2d-collisions";
const p1 = new Polygon(new Vertex(0, 0))
.addVertex(new Vertex(0, 0))
.addVertex(new Vertex(2, 0))
.addVertex(new Vertex(1, 2));
const p2 = new Polygon(new Vertex(1, 1))
.addVertex(new Vertex(0, 0))
.addVertex(new Vertex(2, 0))
.addVertex(new Vertex(1, 2));
console.log(checkCollision(p1, p2)); // trueNotes:
- Polygons must be convex, meaning that all interior angles must be less than 180 degrees.
- Vertices must be added in clockwise or counter-clockwise order. Inconsistent ordering may cause the collision detection to fail.
