为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他门口的一道摆设。既然这么喜欢,咱就把它画出来,岂不玩得更高级。

闲话少说,言归正传。

要画的太极图,如下图所示:

图片发自简书App

有点编程经验的都知道,这个图形是对称图形,因此可以用一个函数实现画一半,调用两次函数即可完成整个图形的绘制。

绘制图形采用Python中的turtle库函数来实现。想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

图片发自简书App

分解这个图形,图片中有红、黄、绿、蓝四种颜色的曲线,每条曲线上的箭头代表乌龟移动的方向。首先从中心开始画一个半圆(如红线所示),然后以红线所示圆的直径作为半径画一个半圆(如黄线所示),再画一个和红线所示圆的半径一样的半圆(如绿线所示),最后画一个小圆,半径为红线所示圆半径的0.15倍(如蓝线所示),之所以选择0.15倍,是因为这样嵌入红圆内的小圆直径和红圆直径接近黄金分割,看起来比较舒服。

代码及注释如下:

#引入turtle函数库

from turtle import *

#定义画半个太极图的函数,第一个参数radius是大圆的半径,

#color1,color2分别是两种填充颜色,对应图形中的黑白填充

def draw(radius, color1,color2):

#设置画笔粗细

width(3)

#设置画笔颜色和填充颜色

color("black",color1)

#准备开始填充图形

begin_fill()

#首先画一个半径为radius/2,弧度为180的半圆,画的是红线所示半圆

circle(radius/2,180)

#画一个半径为radius,弧度为180的半圆,画的是黄线所示半圆

circle(radius,180)

#将画笔方向旋转180度

left(180)

#画一个半径为radius/2,弧度为180的半圆,此时半径值为负,

#圆心在画笔的右边,画的是绿线所示半圆

circle(-radius/2,180)

#结束填充

end_fill()

#画笔向左旋转90度,正好指向画板上方

left(90)

#抬起画笔,再运动时不会留下痕迹

up()

#向前移动radius*0.35,这样小圆边线距离大圆边线上下各radius*0.35,

#小圆的半径就为radius*0.15

forward(radius*0.35)

#画笔向右旋转90度,指向画板右侧

right(90)

#放下画笔

down()

color(color2,color2)

#开始画内嵌小圆,如蓝线所示

begin_fill()

circle(radius*0.15)

end_fill()

#旋转画笔90度,指向画板上方

left(90)

up()

#后退radius*0.35

backward(radius*0.35)

down()

#旋转画笔90度,指向画板左方

left(90)

#定义主函数

def main():

#设置窗口或者画板大小

setup(500,500)

#绘制黑色一半,白色内圆

draw(200,"black","white")

#绘制白色一半,黑色内圆

draw(200,"white","black")

#隐藏画笔

ht()

main()

python怎么画简单图-python中简单易学的绘图:用turtle画太极图相关推荐

  1. python用turtle画月亮_python中简单易学的绘图:用turtle画太极图

    为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...

  2. python怎么画简单图片-python中简单易学的绘图:用turtle画太极图

    为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...

  3. 怎么用python画简单的图-python中简单易学的绘图:用turtle画太极图

    为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...

  4. python画简便的图-python中简单易学的绘图:用turtle画太极图

    为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...

  5. python简单绘图代码-python中简单易学的绘图:用turtle画太极图

    为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...

  6. 用python画五角星、填充不了颜色_python的turtle画五角星内部不能填充的解决办法...

    1.网上画的五角星方法,本机发现内部五角星不能填充. 1.1代码如: from turtle import* #从turtle中导出所有模块 color("black"," ...

  7. python画简单图-python绘制简单彩虹图

    本文实例为大家分享了python绘制彩虹图的具体代码,供大家参考,具体内容如下 代码: from turtle import * #控制彩虹路径 def path(pen, r, g, b): pen ...

  8. python代码画简单图-python绘制简单彩虹图

    本文实例为大家分享了python绘制彩虹图的具体代码,供大家参考,具体内容如下 代码: from turtle import * #控制彩虹路径 def path(pen, r, g, b): pen ...

  9. python怎么画简单图-Python | 用matplotlib画些简单的图

    环境是python3.7,工具使用的是jupyter-notebook交互式笔记本 引入相关库 from pandas import DataFrame,Series import matplotli ...

最新文章

  1. 子组件获取父组件的值,将这个值作为状态值保存
  2. numpy学习笔记(莫烦python)
  3. js中关于array的slice和sort方法(转自JavaEye)
  4. _stat64获取错误_Log4j,Stat4j,SMTPAppender集成–汇总错误日志以发送过多电子邮件...
  5. leetcode459. 重复的子字符串
  6. python2处理耗时任务_RabbitMQ Go客户端教程2——任务队列/工作队列
  7. c#网页自动化脚本语言,c# – 创建用于创建网页的脚本语言
  8. 数据结构之排序算法:并归排序
  9. oracle 11g初始段大小,Oracle 11g配置调优,一般需要注意哪些方面呢?
  10. 由浅入深理解索引的实现(2)【转】
  11. NVIDIA DGX低至7.5折限时抢购,全球首款深度学习超级计算机组合
  12. 转载--#define 用法
  13. 钽电容、贴片铝电解电容、二极管等正负极判断
  14. 【Microsoft Azure 的1024种玩法】六十三.通过全局 VNet 对等互连实现同一区域不同网段的虚拟网络实时打通
  15. linux解压文件后重命名,tar 解压,重命名
  16. PDF图片怎么提取?看完这篇你就会了
  17. 成为CTO的关键技能是什么?
  18. LOG_PATH_IS_UNDEFINED 解决
  19. 计算机启动不能马上联网,电脑开机慢不能联网
  20. 运算库之numpy(数组的切片操作和数组shape的转换)

热门文章

  1. Qt总结之二十二:Qt控件QObject
  2. 随记(电脑硬件对比)
  3. springboot显示信息并且修改_Spring Boot小结-03--增.删.改.查
  4. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第五天(非原创)
  5. 洛谷——P1176 路径计数2
  6. ArcGIS API For JS 之Symbol
  7. Python学习-将Python3.3.4还原成Python2.6版本
  8. Teradata 和Greenplum 的讨论
  9. MSDN上的异步socket 服务端例子
  10. [转]Kali-linux安装之后的简单设置