我有一些代码是用户输入他们想要的星号的长度,然后它绘制出星号。我想要实现的是,每次输入的时候,它不仅会画出星形,而且会让它保持在屏幕的中心位置。中间点(0,0)
import turtle
Length = eval(input("enter the length you want for your star: "))
turtle.penup()
turtle.goto(0,200)
turtle.pendown()
turtle.goto(0,-200)
turtle.penup()
turtle.goto(200,0)
turtle.pendown()
turtle.goto(-200,0)
turtle.penup()
turtle.goto(0,0)
turtle.showturtle
turtle.pendown()
turtle.left(36*4)
turtle.forward(Length)
turtle.right(36*4)
turtle.forward(Length)
turtle.right(36*4)
turtle.forward(Length)
turtle.right(36*4)
turtle.forward(Length)
turtle.right(36*4)
turtle.forward(Length)
试试这个
import turtle
import math
theta = 18 * math.pi / 180 # convert degrees to radians
Length = eval(input("enter the length you want for your star: "))
x = math.sin(theta) * Length
y = math.cos(theta)* Length / 2
turtle.penup()
turtle.goto(0,200)
turtle.pendown()
turtle.goto(0,-200)
turtle.penup()
turtle.goto(200,0)
turtle.pendown()
turtle.goto(-200,0)
turtle.penup()
#turtle.goto(0,0)
turtle.goto(x,-y)
turtle.showturtle
turtle.pendown()
turtle.left(36*4)
turtle.forward(Length)
turtle.right(36*4)
turtle.forward(Length)
turtle.right(36*4)
turtle.forward(Length)
turtle.right(36*4)
turtle.forward(Length)
turtle.right(36*4)
turtle.forward(Length)
turtle.hideturtle()
input("Press Enter to exit")
只要算出你画的星星中心的坐标,然后用那个向量平移起始位置,把中心移到原点就行了。
编辑:如果你回到原来的画,在y轴的左边,你会看到两条线段,呈倒v形。如果我们把这两个线段的交点与x轴相连,我们就得到了一个等腰三角形,它的中心是星星的中心。这就是我们要找的点。现在,恒星的每个角是36度,一半是18度。这就是18的由来。要找到圆心,我们需要用到一些三角函数,我猜你们还没学过。函数sin和cos是三角学中的正弦和余弦函数。这些函数的参数通常不是以度数给出的,而是以另一种称为弧度的系统给出的。碰巧1800度和弧度是一样的,所以就是一个18度的角,用弧度来表示。
"为什么是18度,"我听到你问?记住,我们要求的是等腰三角形的中心,它的两条边的长度等于,斜边的长度等于。所以,我在底边画一条垂线,把它切成两个直角三角形,一个锐角是18度(另一个是72度)这就是正弦和余弦的用武之地。在一个有斜边长度的直角三角形中,锐角的对边长度为sin(theta)*Length
,邻边长度为cos(theta)*Length
。
这是一个冗长的解释,但我不知道如何在这种格式下缩短它。你可以在这里找到图片解释