教你学画画02

您所在的位置:网站首页 turtlecircle函数画正方形 教你学画画02

教你学画画02

2023-07-30 02:55| 来源: 网络整理| 查看: 265

教你学画画02---如何用 Python Turtle 绘制画螺旋线_迭代 在上一篇文章中,我们学习了如何使用 Python Turtle绘制实心星星。在本文中,让我们做一个螺旋。

圆圈

我们可以使用turtle.circle轻松绘制一个圆,但我们将以不同的方式绘制它

import turtle as t t.tracer(10,1) for i in range(360): t.forward(1) t.right(1) t.update()

在上面的代码中,使用了tracer和update命令来提高绘图速度。如果我们愿意,我们可以删除它们。

教你学画画02---如何用 Python Turtle 绘制画螺旋线_迭代_02 乌龟向前移动一步,然后右转1度。当循环完成时,乌龟已经旋转了360度,所以完成了一个完整的旋转,我们得到了一个圆

增大半径和转弯速率

如果Turtle在每次迭代中移动更多,而不是以固定的距离移动会发生什么

for i in range(360): t.forward(i) t.right(1)

i替换 one作为参数forward

教你学画画02---如何用 Python Turtle 绘制画螺旋线_迭代_03

我们会得到一些快速移过屏幕的东西。看看我们能不能让它转得更快

for i in range(360): t.forward(i) t.right(20)

20替换1为参数right教你学画画02---如何用 Python Turtle 绘制画螺旋线_函数调用_04 这是我们的螺旋。但请注意曲线并不平滑

使曲线更平滑

让我们看看如何使螺旋曲线更平滑。但首先尝试以下代码

# Quadrant 1 t1 = t.Turtle() t1.penup() t1.goto(125, 125) t1.pendown() t1.circle(100) # Quadrant 2 t2 = t.Turtle() t2.penup() t2.goto(-125, 125) t2.pendown() t2.circle(100, 270) # Quadrant 3 t2 = t.Turtle() t2.penup() t2.goto(-125, -125) t2.pendown() t2.circle(100, 180) # Quadrant 4 t3 = t.Turtle() t3.penup() t3.goto(125, -125) t3.pendown() t3.circle(100, 90)

代码在 4 个象限中打印 4 个圆形部分教你学画画02---如何用 Python Turtle 绘制画螺旋线_迭代_05 我们可以使用turtle的circle函数来绘制圆的一部分。我们可以使用此功能使我们的Turtle沿着螺旋线以更平滑的方式移动

import turtle as t t.tracer(10,1) for i in range(360): t.circle(i,20) t.update()

forward和right函数调用被替换为circle

circle上面的函数使Turtle向前移动,但也旋转一定的角度。这是我们得到的教你学画画02---如何用 Python Turtle 绘制画螺旋线_函数调用_06 我们现在有一个平滑的螺旋!

添加更多武器

但是如果我们想要一些看起来有点不同的东西——比如螺旋星系或银河系呢?我们首先需要添加更多的武器。

为此,我们将创建多个Turtle

import turtle as t t.tracer(10,1) t1=t.Turtle() t2=t.Turtle() t1.setheading(0) # Looks to the right t2.setheading(180) # Looks to the right for x in range(360): radius = x angle = 1 t1.circle(radius,angle) t2.circle(radius,angle) t.update()

在上面的代码中,t1和t2是最初使用setheading命令分别设置为向右和向左看的两只Turtle教你学画画02---如何用 Python Turtle 绘制画螺旋线_函数调用_07 两只乌龟现在都开始朝着自己的方向发展。现在让我们看看如何使其更具可配置性

import turtle as t t.tracer(10,1) N = 10 angle = 1 turtles = [] for position in range(N): look_at = 360/N*position new = t.Turtle() new.setheading(look_at) turtles.append(new) for radius in range(360): for my in turtles: my.circle(radius, angle) t.update()

我们只是更改了代码,这样可以通过更改创建任意数量的Turtle N,并且它们都以对称的方式看向不同的方向。

教你学画画02---如何用 Python Turtle 绘制画螺旋线_函数调用_08 有趣的是,旋臂似乎相交。我们可以通过进行一些调整来防止这种情况发生

import turtle as t t.tracer(10,1) N = 10 angle = 30 turtles = [] for position in range(N): look_at = 360/N*position new = t.Turtle() new.setheading(look_at) turtles.append(new) for radius in range(360): for my in turtles: my.circle(radius*radius, angle) t.update()

我们设置angle为30并平方radius 通过使每次迭代的转弯角度更大并增加螺旋增加的速率(通过平方半径 - radius*radius),我们可以防止螺旋相交。(请注意,这是我无意中发现的)教你学画画02---如何用 Python Turtle 绘制画螺旋线_mysql_09 耶!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3