@basementuniverse/intersection-helpers
v0.5.0
Published
A collection of helpers for detecting intersections in 2D and 3D
Maintainers
Readme
Intersection Helpers
This project is a work in progress. The 2D namespace is complete and has comprehensive tests, but the 3D namespace is almost entirely untested. It most likely has some bugs, so use with caution! Bug reports, issues, feature requests and PRs are very welcome :)
A collection of helper functions for detecting intersections between various geometric shapes in 2D and 3D.
This library is not intended to be a full collision detection system - if you need that, I'd highly recommend detect-collisions. If you just need to check for intersections between shapes, this library is for you.
Uses poly-decomp for 2D polygon decomposition.
Uses vec for vec2, vec3, and mat types.
Uses utils for various utility functions.
How to install
npm install @basementuniverse/intersection-helpersHow to use
Node
const { distance } = require('@basementuniverse/intersection-helpers/2d');
const pointA = { x: 1, y: 2 };
const pointB = { x: 4, y: 2 };
console.log(distance(pointA, pointB));Node (TypeScript)
import { distance, Point } from '@basementuniverse/intersection-helpers/2d';
const pointA: Point = { x: 1, y: 2 };
const pointB: Point = { x: 4, y: 2 };
console.log(distance(pointA, pointB));Browser
<script src="intersection-helpers/build/index.js"></script>
<script>
const pointA = { x: 1, y: 2 };
const pointB = { x: 4, y: 2 };
console.log(intersection2d.distance(pointA, pointB));
</script>Documentation
Documentation can be found here.
Examples
Examples can be found here.
Notes
In the 2D namespace we use the "screen" coordinate system where positive Y is pointing downwards. In places where this makes a difference (specifically in the polygonWindingOrder function), we can optionally specify whether to use the "screen" (Y+ is down) or "cartesian" (Y+ is up) coordinate system.
In places where the polygonWindingOrder function is called as part of another function, we assume the default "screen" coordinate system.
Todo
- [ ] Add intersection normals to point functions in 3D namespace
- [ ] Write tests for 3D namespace
- [ ] Add demos for functions in 3D namespace
