我在按钮中间画了一个假想的圆圈。
圆圈的半径为Height/2
Height>Width
或Width/2
Width>Height
。
现在我必须计算这个圆圈中的坐标(以像素为单位)。
这个想法是,如果,例如,鼠标光标悬停在该圆圈上,发生了一些事情。
答案 0 :(得分:4)
计算每个坐标是过度的;只需将距离与中心进行比较即可。例如:
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
}
为了避免一点点数学运算,您还可以进行快速边界框检查,即检查矩形区域(只需加/减)。这可以组合使用,即
答案 1 :(得分:3)
满足这个等式时,你在圈内:
Math.pow(mouse_pos_x-center_circle_x,2)+Math.pow(mouse_pos_y-center_circle_y,2)<Math.pow(radius,2)
答案 2 :(得分:1)
根据定义,圆的面积是一组距离等于或小于中心的点。
要测试一个点是否在圆内,你必须做的就是计算它与中心点之间的距离。如果此距离小于圆的半径,则该点在圆内。
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);
}
答案 3 :(得分:1)
您可以使用下一个条件:
x^2+y^2<R^2
其中R - 半径, 所有这些都是圆圈。