python画椭圆turtle_用python-turtle优雅的画椭圆
python-turtle库关于画圆问题第一次写博客这是我第一次使用 CSDN 写博客,有问题请斧正。最近在做python课程开发,刚好利用python画圆作为讲解,在网上找到了一些画圆的代码,都是出自有图币的一个视频,没有解释原理,为了解决这个问题又重温了一下初中数学…记录一下挺有意思的。用自带命令画圆turtle库自带了画圆命令,下面就是一个最常见的画圆代码,不做解释。import turtl
python-turtle库关于画圆问题
第一次写博客
这是我第一次使用 CSDN 写博客,有问题请斧正。最近在做python课程开发,刚好利用python画圆作为讲解,在网上找到了一些画圆的代码,都是出自有图币的一个视频,没有解释原理,为了解决这个问题又重温了一下初中数学…记录一下挺有意思的。
用自带命令画圆
turtle库自带了画圆命令,下面就是一个最常见的画圆代码,不做解释。
import turtle as t
t.color("red")
turtle.circle(30)
turtlr.done()
利用圆的性质画圆
我们知道古人是非常聪明的,利用在圆内切正多边形求圆周率,那么我们也可以反向思维一下,干脆画一个正多边形,当边足够多,多到一个边只占有一个像素点的时候那么肉眼看起来就是一个圆了。思路如下:
每次前进时先向左转3度,然后向前走1像素点那么需要转120次就能画出一个正120边型(3度/360度=120次)这样就很像一个圆了。
import turtlr as t
pen = turtle.Turtle() #定义画笔实例
a = 1 #前进的长度
for i in range(120):
pen.lt(3) #向左转3度
pen.fd(a)#向前走a的步长
print(pen)
turtle.mainloop()
画正多边形
当你试图修改上述代码中的range()和pen.lt()中的数字时,你会发现你又get了新技能,用turtle画正n边形。n取决于range()的取值。只要确保range()是正整数且两数相乘等于360,就可以做出来正n边型。如下是画正方形的代码。(边数小的时候把a变大,会更明显)
import turtlr as t
pen = turtle.Turtle()
a = 100
for i in range(120):
pen.lt(3)
pen.fd(a)
print(pen)
turtle.mainloop()
椭圆
接下来就是这篇文章的核心,也是我为什么写这篇博客的理由。要想画出椭圆,画笔在不同角度的时候前进的长度不一样,我们可以把椭圆拆分成四个部分如下图。画笔的路线是(D-A-B-C)通过观察我们不难发现,从D-A线的弧度越来越大,从A-B线的弧度越来越小。从B-C弧度又开始越来越大,从C-D弧度越来越小。那么我们要是想画一个椭圆就要处理四个部分,是否也意味着我们需要四段代码呢?不是,我们只要对刚才画圆的代码进行修改就行。
当D-A的时候每次前进的步长要不断增大,所以a变大;当A-B的时候每次前进的步长要不断减小,a变小;当B-C的时候每次前进的步长再次增大,当C-D的时候每次前进的步长再次不断减小。我们不难发现一个规律,大小大小。那么我们是否可以用循环加判断来解决呢?

import turtle
pen=turtle.Turtle() #定义画笔实例
a=1
for i in range(120):
if 0<=i<30 or 60<=i<90: #控制a的变化
a=a+0.2
pen.lt(3) #向左转3度
pen.fd(a) #向前走a的步长
else:
a=a-0.2
pen.lt(3)
pen.fd(a)
print(pen)
turtle.mainloop()
0<=i<=30和60<=i<=90时a的长度增加,每一步前进的长度增加,30<=i<=60和90<=i<=120时a减小,实现画出椭圆。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)