在圆内画一个正方形时,你能否假设正方形的宽度是圆半径的4/3?

时间:2011-09-28 17:45:18

标签: math

我想在圆圈内画一个正方形。我的圆的半径在0.5到3之间。

可以安全地假设我的方格总是0.66 * 2 * radius宽/高吗?

我正在制作一个函数来计算某个点是否在圆圈内。我已经建立了一个广场来从数据库中获取我的观点。 我想在圆圈内制作正方形,以便快速确定一个点是否明确在我的圆圈内

4 个答案:

答案 0 :(得分:10)

正方形对角线的长度对应于圆的半径的两倍,即

d = 2 * r

同时它是

d = sqrt(2) * a

其中a是广场一侧的长度。

因此

a = r * 2 / sqrt(2) = r * sqrt(2)

大约是

a = r * 1.41421

答案 1 :(得分:3)

正好适合圆圈的正方形的边长应为sqrt(2) * radius

答案 2 :(得分:2)

这取决于你的确切定义。

如果你使用的是整数数学,当然不是因为你不能代表那个课程。

如果你正在使用浮点运算,那么你就不能,因为你可能有舍入错误。

如果你使用具有足够的过程episilon的浮点运算,那么假设你已经完成了你的数学运算,是的,你可以做出这个假设。

如果您使用的是非浮点的十进制系统,那么再次假设您已经完成了数学运算,是的,您可以做出这样的假设。


但无论如何,如果你想确定一个点是否在你的圆圈内,只需使用毕达哥拉斯定理来获得你到中心的距离并比较距离。如果你改变半径,你甚至不必使用昂贵的平方根。

boolean isInCircle(Circle c, Point p) {

    double dx = c.center.x - p.x;
    double dy = c.center.y - p.y;
    double r2 = c.radius * c.radius;

    return dx*dx + dy*dy < r2;

}

答案 3 :(得分:0)

从技术上讲,是的,4/3*r的正方形将完全位于圆圈内,但这不是圆圈内最大的正方形。刻有正方形的边有sqrt(2)*r

无论如何,计算点是否在圆圈内的最简单方法是检查点是否距离中心小于radius;看看glowcoder的代码。