# Detecting Collision

Sketching with Math and Quasi Physics

## Circles

Two circles, \(A\) and \(B\) collide if the distance between the center points is equal or less than the two radii added together.

$$distance(A_{center},B_{center}) \leq A_{radius}+B_{radius}\Rightarrow$$

$$distance(A_{center},B_{center})-A_{radius}-B_{radius}\leq 0$$

## Line and Circle

The distance from a point \(P\) to a line that passes through points \(A\) and \(B\) is

$$distance=\left\|\overrightarrow{AP}\right\|\left|\sin(\theta)\right|=\left|(\overrightarrow{AP}_x\cdot \overrightarrow{AB}_y-\overrightarrow{AB}_x\cdot \overrightarrow{AP}_y)\right|/\left\|\overrightarrow{AB}\right\|$$ where \(\theta\) is the angle between \(\overrightarrow{AP}\) and \(\overrightarrow{AB}\)

## Rectangles

Two rectangles, \(A\) and \(B\) that are axis aligned collide if

$$(A_{left}\leq B_{right})\;\wedge\;(A_{right}\geq B_{left})\;\wedge\;(A_{top}\leq B_{bottom})\wedge(A_{bottom}\geq B_{top})$$

This is to project the shapes to x and y-axis and checking overlap on each axis. Note that screen coordinate system in which y increase from top to bottom is assumed.

## Triangles

Similarly, collision between two convex polygons can be detected by projecting the shapes to the vectors perpendicular to each side of one of the polygons.

### Learn More

Collision Detection Using the Separating Axis Theorem