こんなものはどこにでも載ってるが。
int IsInRect(int in_x,int in_y,RECT _rect) { return (in_x>_rect.left&&in_x<_rect.right&&in_y>_rect.top&&in_y<_rect.bottom); }; int IsInCircle(int in_x,int in_y,int in_cx,int in_cy,int in_cr) { return (pow2(in_x-in_cx)+pow2(in_y-in_cy)<pow2(in_cr)); }; int HitCheckRect(RECT _rect1,RECT _rect2) { return (_rect1.right > _rect2.left && // 左端 _rect1.bottom > _rect2.top && // 上 _rect1.left < _rect2.right&& // 右端 _rect1.top < _rect2.bottom); // 下 } int HitCheckRect2(double left,double top,double right,double bottom,double left2,double top2,double right2,double bottom2) { return (right > left2 && // 左端 bottom > top2 && // 上 left < right2&& // 右端 top < bottom2); // 下 } int pow2(int a) { return a*a; } int HitCheckCircle(int x1,int y1,int r1,int x2,int y2,int r2) { return (pow2(x2-x1)+pow2(y2-y1)<pow2(r2+r1) ); }
点vs矩形、点vs円形、矩形vs矩形、矩形vs矩形(RECT構造体使用)、円形vs円形。
たまーに矩形vs円形とか欲しくなるが、格段に処理は重くなるのでやめた方が良い。苦労して作った割にあまり効果が分からず処理は重くなる、という三重苦。コードから仕様を考えるのもまたプログラミングの醍醐味やらなんやら