python - 为什么我的海龟绘图会根据我设置像素数量的方式产生不同的图片?
问题描述
您能否向我解释一下,为什么我在设置指定运动的像素数量后会得到不同的图纸?
例如,在下面的代码中,我得到了这张图片(在这两种情况下number_of_angles = 3
)initial_radius = 100
:
import turtle
import math
turtle.speed(1)
turtle.shape("turtle")
number_of_angles = int(input("Number of angles? "))
initial_radius = int(input("Initial Radius? "))
sum_angle = 180*(number_of_angles-2)
angle = sum_angle/number_of_angles
Q = 180-(180/number_of_angles)/2
turtle.left(Q)
for i in range(number_of_angles):
turtle.forward(100)
turtle.left(180-angle)
turtle.done()
但是当我尝试定义移动的像素数(而不是100
我定义initial_size
)时,我得到了这张图片:
import turtle
import math
turtle.speed(1)
turtle.shape("turtle")
number_of_angles = int(input("Number of angles? "))
initial_radius = int(input("Initial Radius? "))
sum_angle = 180*(number_of_angles-2)
angle = sum_angle/number_of_angles
Q = 180-(180/number_of_angles)/2
turtle.left(Q)
initial_size = initial_radius*(2*math.sin(360/(2*number_of_angles)))
for i in range(number_of_angles):
turtle.forward(initial_size)
turtle.left(180-angle)
turtle.done()
解决方案
因为您计算的初始大小不等于 100。
更具体地说, math.sin()使用弧度而不是度数,导致最终值为 -60.962124220443336。这会导致海龟向后移动,从而形成一个镜像且略微缩小的三角形。
最快的解决方法是将角度计算转换为弧度,然后再将其传递给 math.sin()。
initial_size = initial_radius*(2*math.sin(math.radians(360/(2*number_of_angles))))
推荐阅读
- php - 没有 xdebug.remote_autostart=1 的 VS Code PHP 调试
- python - 有没有办法将多个频率写入 .wav 文件?
- ethereum - 无法使用转移或发送稳固性
- apache-hudi - 在 Java 客户端中使用 Apache hudi 库
- python - 如何增加 URL 字符串中特定参数的数字部分?
- html - 包装元素时内联容器不显示背景颜色
- javascript - hls.js 记录文件
- python - 在 postgresql 上查找服务器名称?
- python - 对多标签 predict_proba 的输出进行切片
- android - 当我点击 textarea 时,键盘会隐藏我的页脚