ボタンの真ん中に想像上の円を描いています。
円の半径はHeight/2
ifHeight>Width
またはWidth/2
ifWidth>Height
です。ここで、この円に含まれる座標 (ピクセル単位) を計算する必要があります。アイデアは、たとえばマウス カーソルがその円の上に置かれると、何かが起こるということです。
各座標を計算するのはやり過ぎです。中心までの距離を比較するだけです。例えば:
int radius = 5; // whatever
int deltaX = originX - mouseX, deltaY = originY - mouseY;
// compare the square distance, to avoid an unnecessary square-root
if((deltaX * deltaX) + (deltaY * deltaY) <= (radius * radius)) {
// inside the circle, or on the edge
}
ちょっとした計算を避けるために、簡単なバウンディング ボックス チェック、つまり四角形領域のチェック (加算/減算のみ) を行うこともできます。これは組み合わせて使用できます。
次の式が満たされるとき、あなたは円の中にいます。
Math.pow(mouse_pos_x-center_circle_x,2)+Math.pow(mouse_pos_y-center_circle_y,2)<Math.pow(radius,2)
定義による円の面積は、距離が中心以下の点のグループです。
ポイントが円内にあるかどうかをテストするために必要なのは、ポイントと中心点の間の距離を計算することだけです。この距離が円の半径よりも小さい場合、点は円の中にあります。
double Distance(Point p1, Point p2)
{
int x = p1.X - p2.X;
int y = p1.Y - p2.Y;
return Math.Sqrt(x * x + y * y);
}
次の条件を使用できます。
x^2+y^2<R^2
どこで R - 半径, このすべてのポイントは円です.