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
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
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 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}