円と線分の当たり判定
以下の3つの条件のいずれかを満たせば衝突です。
条件1
円と直線が衝突している
(始点と終点の位置ベクトルv23)・(始点と円の位置ベクトルv21)が正
(終点と始点の位置ベクトルv32)・(終点と円の位置ベクトルv31)が正
の全ての条件を満たす
条件2
円と始点が衝突している
条件3
円と終点が衝突している
def circlehitlseg x1,y1,r,x2,y2,x3,y3 out hit,nr,nj,cx,cy
circlehitline x1,y1,r,x2,y2,x3,y3 out hit,nr,nj,cx,cy
if hit==0||dot(x3-x2,y3-y2,x1-x2,y1-y2)<0||dot(x2-x3,y2-y3,x1-x3,y1-y3)<0 then
circlehitpoint x1,y1,r,x2,y2 out hit,nr,nj,cx,cy
if hit==0 then
circlehitpoint x1,y1,r,x3,y3 out hit,nr,nj,cx,cy
endif
endif
end