首页 > 解决方案 > 为什么我的海龟绘图会根据我设置像素数量的方式产生不同的图片?

问题描述

您能否向我解释一下,为什么我在设置指定运动的像素数量后会得到不同的图纸?

例如,在下面的代码中,我得到了这张图片(在这两种情况下number_of_angles = 3initial_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()

标签: pythonpython-turtle

解决方案


因为您计算的初始大小不等于 100。

更具体地说, math.sin()使用弧度而不是度数,导致最终值为 -60.962124220443336。这会导致海龟向后移动,从而形成一个镜像且略微缩小的三角形。

最快的解决方法是将角度计算转换为弧度,然后再将其传递给 math.sin()。

initial_size = initial_radius*(2*math.sin(math.radians(360/(2*number_of_angles))))

推荐阅读