A human can tell if two figures overlap or not at a glance. But it is difficult to solve this generally with a computer, and different problems often require different tricks.

2つの図形が重なっているかどうかは人間ならば一目でわかります。ところがこれをコンピュータで一般的に解くのは難しく、問題によって様々なトリックが必要になります。

Various methods of checking whether figures overlap is used to detect collision between objects in physics simulations and games. You may rely on the functions of existing tools and libraries in actual projects. But knowing the basics will not only help you understand these tools, but will also enable you to quickly implement only the functions you need yourself.

図形が重なっているかを調べる様々な手法は物理シミュレーションやゲームなどで物体同士の衝突判定に使われます。実際のプロジェクトでは既存のツールの機能やライブラリなどに頼ることも多いと思いますが、基本的なことを知っておくと、これらのツールを理解する役にたつだけでなく、自分で必要な機能だけを素早く実装できるようになります。

Circles

One of the simplest is the circle-point collision detection. Since all points on the edge of a circle are at the distance of the radius from its center, checking if a certain point is inside a circle is just to check the distance between the point and the center of the circle.

Two circles are overlapping if the distance between their centers is equal to or less than the sum of their radii.

最も簡単なものの1つは円と点の衝突判定です。円は境界線上の全ての点が中心から半径の距離にあるので、ある点が円の内側にあるかどうかはその点と中心の距離を調べるだけで判定できます。

2つの円は、中心どうしの距離がそれぞれの半径の和に等しいか小さければ重なっていることになります。

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

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

The distance between two points can be obtained by the following equation.

2点間の距離は下記の式で求められます。

${d={\sqrt {(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}}}}$