Python turtle绘制图形

Python turtle绘制图形

本程序旨在通过调整不同的参数,绘制出优美的数学图形。程序调用了python的turtle库函数以及特定的规则来实现图形的绘制。
禁转载

效果

100-2
100-3
100-4
200-34
200-55
200-65
200-66

实现思路

一、先绘制圆点
在这里插入图片描述
二、绘制直线
每个点都有一个标号index
假设权值value输入的是2.0,dot_number=20
那么绘图程序将从0开始,每轮循环都让笔绘制直线一直移动到下标为当前index的value倍的圆点处。由于 0 * 2 = 0,笔不移动,0暂时不与其他点相连。每个点的下标计算公式为index*value。现假设value=2

★index=1:结果为1 * 2=2,所以将index=1和index=2的点相连;
此时for循环会执行index+=1,即index加1
★index=2:执行2 * 2=4,此时将2和4相连 index+=1
★index=3:执行3 * 2=6,此时将3和6相连 index+=1
★index=4:执行2 * 4=8,此时将4和8相连
index+=1 ……
以此类推

在这里插入图片描述
三、绘制完成
经过dot_number次循环后绘制完成。
可以发现每一个点的与下标为index * value的点相连。其中有个特殊情况,即10与0相连,此时0对应20。
只需要 i * value % dot_number就能保证下标不越界。
“%”为取余数符号
……
若value=2,3,4,5…n,下标为index的点始终与下标为index*value的点相连,要在这两个点之间画直线。

在这里插入图片描述

代码

import turtle as tt

dot_number = int(input("Please input the total number of dots: "))  # 提示用户输入总共需要画出的点的数目,需为非负整数
value = float(input("Please input the weight of the formula: "))  # 提示用户输入权值,应为浮点数或者整数
angle = 360 / dot_number  # 将圆形分为 dot_number 个部分

dot_position = []  # 存入每个点的坐标
# 因为下面一行要将笔移动到坐标(0,-200)的地方,而且没有将笔提起来的动作的话,程序默认笔为放下的状态。此时若不将笔提起来,则移动笔的过程中会绘制直线
tt.penup()
tt.goto(0, -200)  # 将笔移动到坐标为(0,-200)的地方
tt.pendown()  # 将笔放下,准备绘制点
tt.pencolor('pink')  # 设置当前笔的颜色为粉色,下面绘制点的时候,会用粉色绘制
for i in range(0, dot_number):  # 绘制点的for循环,一共循环dot_number次
    tt.dot(5)  # 点的大小
    tt.penup()  # 提笔
    tt.circle(200, -angle)  # 半径为200,角度为angle,加负号是顺时针旋转,将笔顺时针旋转angle的角度
    dot_position.append(tt.pos())  # 存入当前点的坐标,方便后面的直线绘制

tt.pensize(1)  # 设置绘制直线的宽度为 1
tt.pencolor("lightblue")  # 设置笔的颜色为 浅蓝色
tt.speed(10)  # 绘制速度为 10
for i, v in enumerate(dot_position):  # 循环绘制直线,有多少个点就循环多少次
    tt.penup()
    tt.goto(v)  # 首先去到坐标为 v的地方
    tt.pendown()  # 放笔,以便画直线
    tt.goto(dot_position[int(i * value % dot_number)])  # 画直线一直到下标为 index * value的点

tt.hideturtle()  # 隐藏笔,使图形完整地显示出来
tt.done()  # 绘制完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值