Skip to content

setanarut/coll

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoDoc

coll - 2d collision library for Go

Features

  • Collisions only - no gravity, rigid body handling, or complex solvers
  • Is data-oriented and functional

Conventions

"Sweep" tests indicate at least 1 of the objects is moving. The number indicates how many objects are moving. e.g., box-box-sweep2 means we are comparing 2 aabbs, both of which are moving. "Overlap" tests don't take movement into account, and this is a static check to see if the 2 entities overlap. plural forms imply a collection. e.g., BoxSegmentsSweep1Indexed() checks one box segment against a set of line segments. If there is more than one collision, the closest collision is set in the h *Hit argument.

Visualization of some (but not all) functions

Box-Box overlap

Box-Box-overlap

Box-Box sweep 1

Box-Box sweep 1

Box-Box sweep 2

Box-Box sweep 2

Box-OrientedBox overlap

abb-obb-overlap

Box-Segment sweep 1

Box-Segment sweep 1

Box-Segments sweep 1 indexed

Box-Segments sweep 1

Box-Segment overlap

Box-Segment overlap

Line-Circle overlap

alt text

Segment-Circle overlap

alt text

Examples (Ebitengine)

  1. Clone this repository
  2. In the terminal, change to the examples directory cd examples
  3. Run a folder with go run ./foldername. Example: go run ./box_box_sweep1

Credits

Most of these collision checks were adapted from existing open source repos: