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版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数