Axis aligned bounding boxes for fun and profit.
var aabb = require('aabb-2d')
var bounding_box = aabb([0, 0], [12, 12]) // x, y == 0, 0; width, height == 12, 12
, other = aabb([10, 10], [2, 2])
bounding_box.intersects(other) // true
bounding_box.union(other) // -> aabb([10, 10], [2, 2])
bounding_box.translate([2, 2]) // moves the bounding box
bounding_box.expand(other) // returns a new aabb that surrounds both bboxes
returns a new aabb.
returns the perimeter length of the box.
returns the integer perimeter length of the box (using a bit shift instead of a multiply.)
returns the area of the box.
returns:
x0/y1 ------ x1/y1
| |
| | <-- height
| |
| |
x0/y0 ------ x1/y0
^
|
width
moves the box. returns itself.
returns true if the two bounding boxes intersect (or touch at all.)
returns a new aabb representing the shared area of the
two aabb's. returns null if the boxes don't intersect.
MIT