collision v0.1.0 Collision

Wrapper around functionality to generate polygons and test for collisions.

Summary

Functions

Test for collision between two two-dimensional polygons

Test for collision between two two-dimensional polygons and return the minimum translation vector and magnitude to resolve collision

Create a two dimensional, regular polygon from a number of sides, radius, rotation angle, and a midpoint (x, y coordinates)

Functions

two_dimensional_collision?(polygon1, polygon2)

Specs

Test for collision between two two-dimensional polygons.

Returns: boolean

Examples

iex> Collision.two_dimensional_collision?( …> %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2}, …> %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2, midpoint: %{x: 4, y: 4}} …> ) false

iex> Collision.two_dimensional_collision?( …> %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2}, …> %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 4, …> midpoint: %{x: 4, y: 2}} …> ) true

two_dimensional_mtv(polygon1, polygon2)

Test for collision between two two-dimensional polygons and return the minimum translation vector and magnitude to resolve collision.

Returns: nil | {%Vector2{}, float}

Examples

iex> Collision.SeparatingAxis.collision_mtv( …> %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2}, …> %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2, midpoint: %{x: 4, y: 4}} …> ) nil

iex> Collision.SeparatingAxis.collision_mtv( …> %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2}, …> %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 4, …> midpoint: %{x: 4, y: 1}} …> ) {%Collision.Vector.Vector2{x: 2.0, y: 2.0}, 2.0}

two_dimensional_polygon(sides, radius, rotation_angle, arg)

Specs

two_dimensional_polygon(integer, integer, number, {number, number}) :: Collision.Polygon.RegularPolygon.t

Create a two dimensional, regular polygon from a number of sides, radius, rotation angle, and a midpoint (x, y coordinates).

Returns: %RegularPolygon{}

Examples

iex> Collision.two_dimensional_polygon(4, 2, 0, {0, 0}) %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2, rotation_angle: 0.0, midpoint: %Collision.Polygon.Vertex{x: 0, y: 0}}