Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

check2d

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

check2d

detect collisions 2d between all possible kinds of shapes. It uses Bounding Volume Hierarchy (BVH) for sweep wide quick tree trim phase, and the Separating Axis Theorem (SAT) for accurate detection inside nearby groups. This library supports RayCasting, o

latest
Source
npmnpm
Version
9.36.4
Version published
Weekly downloads
4.7K
-12.73%
Maintainers
1
Weekly downloads
 
Created
Source

check2d

npm downloads per week + npm downloads per week @ npm version

check2d is a feature-complete 2D collision detection library for JavaScript, designed for real-time games and simulations.

It combines a Bounding Volume Hierarchy (BVH) broad phase with Separating Axis Theorem (SAT) narrow phase detection, providing fast and accurate collision checks across many shape types.

highlights

  • BVH-based broad phase for high performance
  • SAT-based precise collision detection
  • supports boxes, circles, ellipses, polygons, lines, points
  • raycasting, offsets, rotation, scaling
  • group-based collision filtering
  • visual debugging helpers
  • browser and Node.js support
  • battle-tested and well benchmarked

demos

quick start

const { System } = require('check2d')

const system = new System()

creating bodies

const { Box, Circle, Polygon } = require('check2d')

const box = system.createBox({ x: 0, y: 0 }, 10, 10)
const circle = new Circle({ x: 5, y: 0 }, 5)

system.insert(circle)

body manipulation

Bodies can be transformed freely. Changes are batched and applied once.

box.setPosition(10, 5, false)
box.setAngle(Math.PI / 4, false)
box.setScale(2, 1, false)
box.move(1, false)

box.updateBody()

Supported features include:

  • position, rotation, scale
  • movement in facing direction
  • offsets relative to body center
  • AABB access
  • padding to reduce BVH reinserts
  • group-based collision filtering

collision checks

system.checkAll((result) => {
  console.log(result)
})

system.checkOne(box, (result) => {
  console.log(result)
})

// optional automatic separation
system.separate()

collision points

const points = system.getCollisionPoints(result.a, result.b)

raycasting

const hit = system.raycast(
  { x: 0, y: 0 },
  { x: 0, y: -10 },
  (body) => true
)

if (hit) {
  const { point, body } = hit
  console.log(point, body)
}

visual debugging

Draw bodies directly to a <canvas> context:

context.beginPath()
system.draw(context)
context.stroke()

Draw BVH bounding boxes:

context.beginPath()
system.drawBVH(context)
context.stroke()

browser usage

import { System } from 'https://esm.sh/check2d'

testing & benchmark

Test Suites: 12 passed, 12 total
Tests:       84 passed, 84 total

Run benchmarks and stress tests:

git clone https://github.com/nenjack/check2d.git
cd check2d
npm i
npm run benchmark

installation

yarn add check2d

documentation

API reference and guides: https://nenjack.github.io/check2d/

why not a physics engine?

Physics engines like Matter.js or Planck.js are excellent when full simulation is required, but they often introduce unnecessary overhead when only collision detection is needed.

check2d focuses purely on collision detection:

  • no gravity
  • no forces
  • no assumptions about movement

This makes it ideal as a standalone collision system or as the foundation of a custom physics engine.

contributing

Contributions are welcome.

  • run npm run precommit
  • follow conventional commits
  • avoid using any

license

MIT

Keywords

javascript

FAQs

Package last updated on 19 Dec 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts