python图形绘制星空图_用Python标准库turtle画一头金牛,祝您新年牛气冲天!(附源码)...

本文主要是介绍python图形绘制星空图_用Python标准库turtle画一头金牛,祝您新年牛气冲天!(附源码)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

d5e4e8e5a367e5b052e9393115436fe2.png

今年是牛年,祝大家新年牛气冲天!嗨皮牛Year!

前几天在百度图片里下载了一张金牛的图片,就是封面的这张。想着用Python标准库turtle肯定可以画出这张图,所以说干就干,花两天时间实现了。

画图虽然不是Python的主要功能,但绘制这头金牛还是展示了Python无所不能的强大属性。接下来介绍实现的过程。

图片分析

初看图片,深红色的背景下,一头金光闪闪的金牛。简单分析,图形主要分为两大部分,外面的圆环和内部的金牛。

圆环由同心圆和折线形的圆盘构成,同心圆直接画圆就可以,折线形的圆盘是旋转对称的,每一个部分由圆弧和半径方向的线组成,一共有26个相同的部分,计算出每个部分的弧形比例即可依次绘制。

金牛图形是不规则的,里面有很多不同弧度和不同长度的不规则曲线,控制画笔边前进边旋转,每次前进不同的距离和旋转不同的角度,可以绘制出这些曲线。里面的图案,如五瓣花就是用这种方式完成。

对图形有了基本的了解,就看turtle中有哪些方法可以用于实现这些操作了。

用到的Turtle方法介绍

turtle是Python的标准库,直接导入即可使用。

from turtle import *

1. 画布设置

setup(width, height, x, y): 设置窗口大小和窗口左上角在屏幕中的位置。

title(): 设置窗口的标题。

screensize(width, height, color): 设置画布大小,背景颜色。

done(): 绘图结束后,不自动关闭窗口。

2. 画笔设置

pencolor(color): 设置画笔颜色。

penup(): 提起画笔,提起后移动画笔不会留下痕迹。

pendown(): 落下画笔,开始绘图前先将画笔落下。

speed(int): 设置画笔的速度,传入1~10的数字,1最慢,10最快。传入其他值会更快,但是没有鼠标移动的动画效果。

setx(value): 设置画笔的x轴坐标。

sety(value): 设置画笔的y轴坐标。

towards(x, y): 设置画笔指向的点。

setheading(): 设置画笔的方向。与towards()配合可以设置画笔指向某个点,如setheading(towards(0, 0))可以设置画笔指向原点。

3. 画笔操作

circle(radius[, extent=arc]): 画一个圆,传入圆的半径,根据画笔的方向控制圆心的位置,圆心与画笔的方向垂直。传入弧度值可以画出指定弧度的圆弧。

left(angle): 画笔左转,传入任意一个目标角度。

right(angle): 画笔右转。

forward(distance): 画笔前进一段距离。

backward(distance): 画笔后退一段距离。

goto(x, y): 移动画笔到指定坐标。

4. 颜色填充

begin_fill(): 开始填充。

fillcolor(color): 设置图形中填充的颜色。

end_fill(): 结束填充。

有了这些方法,就可以实现金牛图中的各种图案了。如画五瓣花轮廓的代码如下:

def draw_flower(a, color):

pencolor('red')

begin_fill()

for j in range(5):

for i in range(40):

if 0 <= i < 20:

a = a - 0.08

else:

a = a + 0.08

forward(a)

left(6)

right(168)

fillcolor(color)

end_fill()

实现举例

我的绘图顺序是从外到内,这样较小的图形会置于较大的图形之上,填充的颜色不会被遮挡。

最开始绘制的是外围的同心圆。先penup()提起画笔,sety()将画笔从圆心向下移动半径的距离,然后调整画笔方向,pendown()落下画笔,circle()画圆。

9ce6a640e55a0ecf860199088779d9c6.gif

整个过程分了很多张截图,为了避免篇幅过长,就不全部放了。再放一张最后画眼睛的动图,可以参照上面同心圆的方式拆分步骤。

67517575e5280615e0656d4542a4ca0d.gif

其他的图案,如果会相互覆盖,要先画大的图形,再画小的图形。如果不会相互覆盖,顺序可以随意调整。

总结

972f0227d813a0c56d1b44209695ded6.png

对比原图和turtle绘制的图形,整体上还是很像的,但部分细节并没有完全还原。因为没有原图的任何参数,绘制过程中全靠目测(像素尺子),很难避免误差,再花一些时间调试应该可以更像。

附代码:

https://github.com/bigtigeryo/gold-cow

这篇关于python图形绘制星空图_用Python标准库turtle画一头金牛,祝您新年牛气冲天!(附源码)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/224413

相关文章

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一