我想在圆圈内画一个正方形。我的圆的半径在0.5到3之间。
可以安全地假设我的方格总是0.66 * 2 * radius
宽/高吗?
我正在制作一个函数来计算某个点是否在圆圈内。我已经建立了一个广场来从数据库中获取我的观点。 我想在圆圈内制作正方形,以便快速确定一个点是否明确在我的圆圈内
答案 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的代码。