Python 如何使用海龟制作一个三角形大小不同的六边形星星?这就是我得到的,不确定,有人能帮我吗?
按照标题的要求,问题是:如何使用海龟制作一个三角形大小不同的六边形星星?我看到的问题是,您正在用海龟在一个顶点绘制第一个三角形。画这个三角形很简单,但是你不知道从哪里开始画下一个三角形。在这种情况下,我会改变我的设计,画一个以海龟为中心的三角形。然后,绘制第二个三角形只需在稍微旋转海龟后重新开始:Python 如何使用海龟制作一个三角形大小不同的六边形星星?这就是我得到的,不确定,有人能帮我吗?,python,turtle-graphics,Python,Turtle Graphics,按照标题的要求,问题是:如何使用海龟制作一个三角形大小不同的六边形星星?我看到的问题是,您正在用海龟在一个顶点绘制第一个三角形。画这个三角形很简单,但是你不知道从哪里开始画下一个三角形。在这种情况下,我会改变我的设计,画一个以海龟为中心的三角形。然后,绘制第二个三角形只需在稍微旋转海龟后重新开始: import turtle wn = turtle.Screen() tess = turtle.Turtle() tess.speed(30) def triangle(sz): fo
import turtle
wn = turtle.Screen()
tess = turtle.Turtle()
tess.speed(30)
def triangle(sz):
for i in range(3):
tess.fd(sz)
tess.lt(120)
def sixPtdStar(sz):
triangle(sz)
tess.lt(90)
tess.pu()
tess.fd(80)
tess.rt(90)
tess.fd(120)
tess.pd()
tess.rt(180)
triangle(sz)
每当我试图画一个居中的图形时,我都会使用tess.dot()
作为调试辅助工具,以了解该中心的位置,从而可以直观地检查我是否做对了:
另一种方法,仍然将海龟放在图形的中心,就是将定心工作推入三角形()
,并保持sixtdstar()
简单。一种方法是使用turtle自己的circle()
函数绘制三角形:
from turtle import Screen, Turtle
def triangle(side):
tess.pendown()
for _ in range(3):
tess.forward(side)
tess.left(120)
tess.penup()
def sixPtdStar(side):
height = side * 3**0.5 / 2 # equilateral triangle
for _ in range(2):
tess.right(30)
tess.forward(2 * height / 3)
tess.left(90 + 60)
triangle(side)
tess.right(90 + 60)
tess.backward(2 * height / 3)
tess.right(30)
tess = Turtle()
tess.penup()
tess.dot() # mark the center of our star
sixPtdStar(100)
screen = Screen()
screen.exitonclick()
如果我们专注于使用circle()
绘制三角形,而不关心将其置于海龟当前位置的中心,我们可以简单地执行以下操作:
def triangle(side):
height = side * 3**0.5 / 2 # equilateral triangle
radius = 2 * height / 3
# center the circle on tess' position
tess.right(90)
tess.forward(radius)
tess.left(90)
tess.pendown()
tess.circle(radius, steps=3)
tess.penup()
# return tess to where she started
tess.left(90)
tess.forward(radius)
tess.right(90)
def sixPtdStar(side):
triangle(side)
tess.right(60)
triangle(side)
保持与上面相同的triangle()
,我们将sixPtdStar()
从绘制两个重叠三角形更改为在一个圆中绘制六个三角形:
def triangle(radius):
tess.pendown()
tess.circle(radius, steps=3)
tess.penup()
def sixPtdStar(side):
radius = side * 3**0.5 / 3 # equilateral triangle
triangle(radius)
tess.circle(radius, extent=60)
triangle(radius)
或者,如果我们想要一颗特别优雅的星星,请将radius/3
更改为radius/2
以获得:
阅读。格式化你的代码。
def sixPtdStar(side):
radius = side * 3**0.5 / 3 # equilateral triangle
for _ in range(6):
triangle(radius / 3)
tess.circle(radius, extent=60)