Math 在圆内绘制正方形时,能否假定正方形的宽度为圆半径的4/3?

Math 在圆内绘制正方形时,能否假定正方形的宽度为圆半径的4/3?,math,Math,我想在圆里画一个正方形。我的圆的半径在0.5到3之间 假设我的正方形总是0.66*2*半径宽/高,安全吗 我正在做一个函数来计算某个点是否在圆内。我已经把我的观点从数据库中拿出来了。 我想在圆内画一个正方形,以快速确定一个点是否确实在我的圆内这取决于你的确切定义 如果你使用整数数学,当然不是因为你不能用它来表示 如果您使用的是浮点运算,那么就不能使用,因为可能会有舍入错误 如果你使用的是浮点运算,有足够的难度,那么假设你的数学做得对,是的,你可以做出这样的假设 如果您使用的是非浮点的十进制,那么

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

假设我的正方形总是
0.66*2*半径
宽/高,安全吗

我正在做一个函数来计算某个点是否在圆内。我已经把我的观点从数据库中拿出来了。
我想在圆内画一个正方形,以快速确定一个点是否确实在我的圆内这取决于你的确切定义

如果你使用整数数学,当然不是因为你不能用它来表示

如果您使用的是浮点运算,那么就不能使用,因为可能会有舍入错误

如果你使用的是浮点运算,有足够的难度,那么假设你的数学做得对,是的,你可以做出这样的假设

如果您使用的是非浮点的十进制,那么再次假设您的数学计算正确,是的,您可以做出这样的假设


但不管怎样,如果你想确定一个点是否在你的圆内,只需使用毕达哥拉斯定理,得到你到中心的距离,然后比较这个距离。如果将半径平方,甚至不必使用昂贵的平方根

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;

}
布尔isInCircle(圆c,点p){
双dx=c.center.x-p.x;
双dy=c.center.y-p.y;
双r2=c.半径*c.半径;
返回dx*dx+dy*dy
这取决于您对的确切定义

如果你使用整数数学,当然不是因为你不能用它来表示

如果您使用的是浮点运算,那么就不能使用,因为可能会有舍入错误

如果你使用的是浮点运算,有足够的难度,那么假设你的数学做得对,是的,你可以做出这样的假设

如果您使用的是非浮点的十进制,那么再次假设您的数学计算正确,是的,您可以做出这样的假设


但不管怎样,如果你想确定一个点是否在你的圆内,只需使用毕达哥拉斯定理,得到你到中心的距离,然后比较这个距离。如果将半径平方,甚至不必使用昂贵的平方根

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;

}
布尔isInCircle(圆c,点p){
双dx=c.center.x-p.x;
双dy=c.center.y-p.y;
双r2=c.半径*c.半径;
返回dx*dx+dy*dy
恰好适合于圆的正方形的边长应为
sqrt(2)*半径
恰好适合于圆的正方形的边长应为
sqrt(2)*半径
正方形对角线的长度对应于圆半径的两倍,即

d = 2 * r
同时它是

d = sqrt(2) * a
其中
a
是正方形一侧的长度

因此

大约是

a = r * 1.41421

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

d = 2 * r
同时它是

d = sqrt(2) * a
其中
a
是正方形一侧的长度

因此

大约是

a = r * 1.41421

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


无论如何,计算该点是否在圆内的最简单方法是检查该点距圆心的距离是否小于
半径
;请参阅glowcoder的代码。

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


无论如何,计算该点是否在圆内的最简单方法是检查该点距圆心的距离是否小于
半径
;请参阅glowcoder的代码。

值得注意的是,您“快速确定点是否确实在圆内”的决定实际上比定义圆内的内容(无论如何,您必须经常这样做)有更多的说明。是吗?我使用它进行地理定位,以查看点是否在某个半径内。为了加快速度,我想先画一个正方形,然后在剩下的点上使用哈弗森函数。你可以应用到正方形上的任何东西都可以应用到圆上。此外,你可以在3D中使用毕达哥拉斯定理,比运行哈文辛要便宜得多。如果你的唯一目标是确定它是否落在圆圈内,那么它会快得多!值得注意的是,你“快速确定一个点是否确实在圆内”的决定实际上比定义圆内的东西(你必须经常这样做)有更多的说明。是吗?我使用它进行地理定位,以查看点是否在某个半径内。为了加快速度,我想先画一个正方形,然后在剩下的点上使用哈弗森函数。你可以应用到正方形上的任何东西都可以应用到圆上。此外,你可以在3D中使用毕达哥拉斯定理,比运行哈文辛要便宜得多。如果你的唯一目标是确定它是否落在圆圈内,那么它会快得多!