あたり判定 †
このページは競技プログラミングに興味のある方向けにあたり判定を簡単に説明するページです
あたり判定って何? †
説明いりますか?
円と点 †
点(x1,y1)と中心座標(x2,y2),半径rの円を考える
(x2-x1)^2 + (y2-y1)^2 < r の時、点は円内部にある
(x2-x1)^2 + (y2-y1)^2 = r の時、点は円周上にある
(x2-x1)^2 + (y2-y1)^2 < r の時、点は円外部にある
円と円 †
中心座標(x1,y1),半径r1の円1と、中心座標(x2,y2),半径r2の円2を考える
中心座標の距離Rを
R = (x2-x1)^2 + (y2-y1)^2 としたとき
R > r1 + r2 の時、円は接しておらず、重なっていない
R = r1 + r2 の時、円は接しており、重なっていない
R < r1 + r2 の時、円は重なっている。(特にr1 < r2 かつ R + r1 ≦ r2 のとき、円1は円2の中に入っている:ドーナッツ!)
直線と直線 †
y = ax + b
y = a'x + b' であらわされる2直線を考える
a = a' かつ b = b' のとき、両者は重なっている
a = a' かつ b≠b のとき、両者は重なっておらず平行なので交差していない
a ≠ a'かつ b = b' のとき、両者は座標(0,b)で交差している
a ≠ a'かつ b≠ b' のとき、両者は座標((b - b')/(a' - a),(a'b - ab')/(a' - a))で交差する
線分と線分 †
直線と直線の交差判定を流用すればいいので割愛