Skip to content

treeform/bumpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bumpy - 2d collision library for nim.

nimble install bumpy

Based on the book http://www.jeffreythompson.org/collision-detection/table_of_contents.php

Supported collisions:

Shape Point Circle Rectangle Segment Polygon
Point
Circle
Rectangle
Segment
Polygon

API: bumpy

import bumpy

type Circle

Circle = object
 pos*: Vec2
 radius*: float32

type Segment

Segment = object
 at*: Vec2
 to*: Vec2

proc circle

proc circle(pos: Vec2; radius: float32): Circle {.inline.}

proc segment

proc segment(at, to: Vec2): Segment {.inline.}

proc overlap

Do two points overlap? (Must be exactly equal.)

proc overlap(a, b: Vec2): bool {.inline.}

proc overlap

Test overlap: point vs circle.

proc overlap(a: Vec2; b: Circle): bool {.inline.}

proc overlap

Test overlap: circle vs point.

proc overlap(a: Circle; b: Vec2): bool {.inline.}

proc overlap

Test overlap: circle vs circle.

proc overlap(a, b: Circle): bool

proc overlap

Test overlap: point vs rectangle.

proc overlap(a: Vec2; b: Rect): bool

proc overlap

Test overlap: rect vs point.

proc overlap(a: Rect; b: Vec2): bool {.inline.}

proc overlap

Do two rectangles overlap?

proc overlap(a, b: Rect): bool

proc overlap

Test overlap: circle vs rectangle.

proc overlap(a: Circle; b: Rect): bool

proc overlap

Test overlap: rect vs circle.

proc overlap(a: Rect; b: Circle): bool {.inline.}

proc overlap

Test overlap: point vs segment.

proc overlap(a: Vec2; s: Segment; buffer = 0.1): bool

proc overlap

Test overlap: segment vs point.

proc overlap(a: Segment; b: Vec2; buffer = 0.1): bool {.inline, tags: [].}

proc overlap

Test overlap: circle vs segment.

proc overlap(c: Circle; s: Segment): bool

proc overlap

Test overlap: circle vs segment.

proc overlap(s: Segment; c: Circle): bool {.inline.}

proc overlap

Test overlap: segment vs segment.

proc overlap(d, s: Segment): bool

proc overlap

Test overlap: segments vs rectangle.

proc overlap(s: Segment; r: Rect): bool

proc overlap

Test overlap: rectangle vs segment.

proc overlap(r: Rect; s: Segment): bool {.inline.}

proc overlap

Test overlap: polygon vs point.

proc overlap(poly: seq[Vec2]; p: Vec2): bool

proc overlap

Test overlap: point vs polygon.

proc overlap(p: Vec2; poly: seq[Vec2]): bool {.inline.}

proc overlap

Test overlap: polygon vs circle.

proc overlap(poly: seq[Vec2]; c: Circle): bool

proc overlap

Test overlap: circle vs polygon.

proc overlap(c: Circle; poly: seq[Vec2]): bool {.inline.}

proc overlap

Test overlap: polygon vs rect.

proc overlap(poly: seq[Vec2]; r: Rect): bool

proc overlap

Test overlap: rect vs polygon.

proc overlap(r: Rect; poly: seq[Vec2]): bool {.inline.}

proc overlap

Test overlap: polygon vs segment.

proc overlap(poly: seq[Vec2]; s: Segment): bool

proc overlap

Test overlap: segment vs polygon.

proc overlap(s: Segment; poly: seq[Vec2]): bool {.inline.}

proc overlap

Test overlap: polygon vs polygon.

proc overlap(a: seq[Vec2]; b: seq[Vec2]): bool

proc intersects

Checks if the a segment intersects b segment. If it returns true, at will have point of intersection

proc intersects(a, b: Segment; at: var Vec2): bool {.inline, tags: [].}

About

2d collision library for Nim.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages