python用海龟画圆的代码_如何找到使用海龟Python图形绘制的圆的半径?

“圆”的半径应该是57.28996163075943像素,可以这样计算:import math

radius = math.sin(math.radians(89)) / math.sin(math.radians(1))

print('Radius of circle =', radius)

之所以是真的,是因为你的圈子其实不是一个圈子。它由360个不同的三角形组成。尤其是,它们都是(角,边,角)三角形。让我们假设当你开始画圆的时候,你的乌龟从圆的切线开始。这意味着,如果你画一条线,穿过你画的圆的中心和画这幅画的乌龟,你的乌龟的方向将垂直于这条线。因此,我们可以说:

^{pr2}$

我们说的是,我们所知道的三角形的第一个角是90度。我们需要的下一个信息是边的长度。因为乌龟画了一条1像素的线,所以我们知道这是长度,可以将其添加到我们的注释中:angle_a = 90

side_c = 1

我们需要知道的最后一件事是多看一个角度。现在这必须从以前的知识中得出,因为一开始可能并不明显。在每个绘图步骤的开始,我们的乌龟与圆上的切线平行;这意味着在将海龟旋转1度后,它就可以开始下一个绘图步骤,并且必须位于切线上。因此,在绘图步骤结束时,应该可以沿着一条与海龟所面对的方向垂直的路径,将一条线追溯到圆的中间。因为转了1度,我们知道我们正在做的三角形的另一个角必须是89度。在angle_a = 90

side_c = 1

angle_b = 89

由此我们可以得出结论,在圆的中心三角形的另一个角必须是1度。在angle_a = 90

side_c = 1

angle_b = 89

angle_c = 1

既然我们已经掌握了所有这些信息,我们就可以利用正弦定律来求出三角形另两条边的长度。我们将得到两个不同的值。第一个是a边的长度,斜边;第二个是b边的长度,半径。你会注意到较长的长度是海龟在第一次画画后离圆中心的距离。为了计算半径,我选择了第二次测量,这几乎没有什么不同。在

是时候解决一些公式了:side_a / sin(angle_a) = side_c / sin(angle_c)

side_a / sin(90) = 1 / sin(1)

side_a = sin(90) / sin(1)

side_a = math.sin(math.radians(90)) / math.sin(math.radians(1)) # hypotenuse

side_b / sin(angle_b) = side_c / sin(angle_c)

side_b / sin(89) = 1 / sin(1)

side_b = sin(89) / sin(1)

side_b = math.sin(math.radians(89)) / math.sin(math.radians(1)) # radius

您也可以选择平均a边和b边的长度,以便更好地近似圆的半径:print('Radius of circle =', (side_a + side_b) / 2)

由此,您将得到57.29432506465481作为近似半径(以像素为单位)。在

附录

在对这个问题做了更多的研究之后,很容易开发出一个函数来帮助将来更容易地解决此类问题。请注意,多边形不一定有直径,但即使是边的多边形也至少有两个相互平行的半径。用下面的函数求半径就像把结果除以2一样简单。示例用法包括:import math

def get_polygon_diameter(side_length, side_rotation):

return side_length / math.sin(math.pi * side_rotation / 360)

length_of_each_side = 1 # in pixels

rotation_per_side = 1 # in degrees

diameter = get_polygon_diameter(length_of_each_side, rotation_per_side)

radius = diameter / 2

print(f'Radius of "circle" that is actually a polygon = {radius:.3f} pixels')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值