三角形/几何彩虹螺旋

时间:2019-03-01 00:53:33

标签: python python-3.x turtle-graphics spiral

我一直在尝试找出如何使用Python制作彩虹三角形螺旋。我可以制作一个方形螺旋线,但不会导入颜色。而且它不使用三角形。

输出应该是什么样的

enter image description here

我取得的成就:

enter image description here

我的代码:

    import turtle 
    import colorsys

    p = turtle.Pen()
    p.reset()
    p.down()
    p.speed(22)


    for i in range(100):
        p.forward(i)
        p.left(22222)

    dog = 0

    for i in range(100):
        color = colorsys.hsv_to_rgb(dog,1,1)
        turtle.pencolor(color)
        dog += 0.01

1 个答案:

答案 0 :(得分:1)

让我们查看您的代码:

p = turtle.Pen()
p.reset()

reset()的作用是什么?什么都没有设置,那么为什么重置呢?不要添加无法实现目标的代码。再次在这里:

p.down()

笔开始向下移动,因此无需进行更改。在此命令中:

p.speed(22)

22来自哪里? speed()的文档说它的参数是1(“最低”)到10(“快速”),0表示“最快”。它将22转换为其他值-如果您不知道什么,那就不要使用它!为了清楚起见,您应该使用“ slow”之类的符号替代。

    p.left(22222)

22222来自哪里?您为什么不惊讶没有三角形?对于一个完美的等边三角形,我们将使用120度,但是我们不想要一个理想的三角形,我们想要一个螺旋线,因此我们将为该值增加一个或两个角度。为什么使用此变量名:

dog = 0

变量名称应该阐明我们在做什么,而不是使它晦涩难懂。该变量将在“ HSV”颜色值的“ H”部分中循环,其中“ H”代表“色相”。因此,让我们使用它。

最后,我们需要一个循环,而不是两个循环,以便同时进行绘画和颜色更改:

from turtle import Screen, Pen
import colorsys

screen = Screen()
screen.title("Rainbow Spiral")

pen = Pen()
pen.speed('fastest')

hue = 0.0  # range is 0.0 to 1.0

for i in range(200):
    color = colorsys.hsv_to_rgb(hue, 1, 1)  # pen wants RGB
    pen.pencolor(color)
    pen.forward(i * 2)  # double size
    pen.right(121)  # 120 degrees is an equilateral triangle
    hue += 0.005  # increment by 1/200

pen.hideturtle()

screen.exitonclick()

请注意,我将left()更改为right()以匹配您的示例螺旋。

输出

enter image description here

程序讲述一个故事。仔细选择您的角色名称(变量),并避免在故事中包含不影响其结果的元素(代码)。