collision v0.2.0 Collidable protocol

Summary

Functions

Determine whether a pair of collidable entities are in collision

Determine how to resolve the collision

Resolve the collision

Types

t :: term

Functions

collision?(any, any)

Determine whether a pair of collidable entities are in collision.

Examples

iex> Collidable.collision?(

...>   %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2},
...>   %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2, midpoint: %{x: 4, y: 4}}
...> )

false

iex> Collidable.SeparatingAxis.collision?(

...>   %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 2},
...>   %Collision.Polygon.RegularPolygon{n_sides: 4, radius: 4,
...>     midpoint: %{x: 4, y: 2}}
...> )

true

resolution(any, any)

Determine how to resolve the collision.

Returns: {Vector, magnitude}

Examples

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

iex> Collidable.resolution( …> %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: 0.7071067811865475, y: 0.7071067811865475}, 0.7071067811865475}

resolve_collision(any, any)

Resolve the collision.

Returns the the first entity and the translation of the second entity.

Returns: {Collidable_entity, Collidable_entity}

Examples

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

iex> Collidable.resolve_collision( …> %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: 0.7071067811865475, y: 0.7071067811865475}, 0.7071067811865475}