用python绘制樱花树


Posted in Python onOctober 09, 2020

黑夜可能漫长,但总会迎来温暖的阳光,三月如期而至,武大的樱花又一次盛开。那么今天就一起来看看怎样在python中画一棵美丽的樱花树~

说到用python画画,那当然就是小乌龟Turtle库了,为啥是turtle呢,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

一、安装与引入

安装没有什么难度直接pip安装就可以

pip install turtle

可使用以下3种方法引入:

用python绘制樱花树

二、使用

turtle库使用起来也很简单,主要就是利用几个核心的控制代码

turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点,

turtle.fd(d):以当前方向,往前行进d像素。

turtle.bk(d):保持当前方向不变,往后退行d像素。

turtle.circle(r,angle):以r为半径圆的angle角度旋转。

turtle.penup():抬笔

turtle.pendown():落笔

urtle.left(angle):向左旋转angle度。

turtle.right(angle):向右旋转angle度。

比如绘制树干部分的代码可以这样写

def Tree(branch, t):
 time.sleep(0.0005)
 if branch > 3:
  if 6 <= branch <= 12: #
   if random.randint(0, 2) == 0: #随机绘制
    t.color('snow') #设置颜色
   else:
    t.color('lightcoral') # 树叶颜色
   t.pensize(branch / 3)
  elif branch < 6:
   if random.randint(0, 1) == 0:
    t.color('snow')
   else:
    t.color('lightcoral') #
   t.pensize(branch / 2)
  else:
   t.color('sienna') # 赭(zhě)色
   t.pensize(branch / 10) # 6
  t.forward(branch)
  a = 1.5 * random.random()
  t.right(20 * a)
  b = 1.5 * random.random()
  Tree(branch - 10 * b, t)
  t.left(40 * a)
  Tree(branch - 10 * b, t)
  t.right(20 * a)
  t.up()
  t.backward(branch)
  t.down()

而写字的部分就不用一笔一划的去绘制,直接使用turtle.write()就可以在指定位置写上你需要的文字。

write(arg,move=false,align='left',font=('arial',8,'normal'))

#arg--将写入Turtle绘画屏幕的文字。

#align(可选)--“左(left)”、“中(center)”或“右(right)”之一。

#font(可选)--(fontname、fontsize、fonttype)。

那么来看看最后效果吧!

用python绘制樱花树

完整源码:

import turtle as T
import random
import time

# 画樱花的躯干(60,t)
def Tree(branch, t):
  time.sleep(0.0005)
  if branch > 3:
    if 8 <= branch <= 12:
      if random.randint(0, 2) == 0:
        t.color('snow') # 白
      else:
        t.color('lightcoral') # 淡珊瑚色
      t.pensize(branch / 3)
    elif branch < 8:
      if random.randint(0, 1) == 0:
        t.color('snow')
      else:
        t.color('lightcoral') # 淡珊瑚色
      t.pensize(branch / 2)
    else:
      t.color('sienna') # 赭(zhě)色
      t.pensize(branch / 10) # 6
    t.forward(branch)
    a = 1.5 * random.random()
    t.right(20 * a)
    b = 1.5 * random.random()
    Tree(branch - 10 * b, t)
    t.left(40 * a)
    Tree(branch - 10 * b, t)
    t.right(20 * a)
    t.up()
    t.backward(branch)
    t.down()

# 掉落的花瓣
def Petal(m, t):
  for i in range(m):
    a = 200 - 400 * random.random()
    b = 10 - 20 * random.random()
    t.up()
    t.forward(b)
    t.left(90)
    t.forward(a)
    t.down()
    t.color('lightcoral') # 淡珊瑚色
    t.circle(1)
    t.up()
    t.backward(a)
    t.right(90)
    t.backward(b)

# 绘图区域
t = T.Turtle()
# 画布大小
w = T.Screen()
t.hideturtle() # 隐藏画笔
t.getscreen().tracer(5, 0)
w.screensize(bg='wheat') # wheat小麦
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')

# 画樱花的躯干
Tree(60, t)
# 掉落的花瓣
Petal(200, t)
w.exitonclick()

以上就是用python绘制樱花树的详细内容,更多关于python绘图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python小技巧之批量抓取美女图片
Jun 06 Python
python学习必备知识汇总
Sep 08 Python
Python 2.x如何设置命令执行的超时时间实例
Oct 19 Python
python selenium爬取斗鱼所有直播房间信息过程详解
Aug 09 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
python将图片转base64,实现前端显示
Jan 09 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
Python中读取文件名中的数字的实例详解
Dec 25 Python
Pytest中skip skipif跳过用例详解
Jun 30 Python
Python logging日志库空间不足问题解决
Sep 14 #Python
Python grpc超时机制代码示例
Sep 14 #Python
python/golang 删除链表中的元素
Sep 14 #Python
Python基于pillow库实现生成图片水印
Sep 14 #Python
python/golang实现循环链表的示例代码
Sep 14 #Python
python实现canny边缘检测
Sep 14 #Python
Python gevent协程切换实现详解
Sep 14 #Python
You might like
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
php的ajax框架xajax入门与试用介绍
2010/12/19 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
vue中v-model动态生成的实例详解
2017/10/27 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
Python configparser模块操作代码实例
2020/06/08 Python
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
经典而简洁的婚礼主持词
2014/03/13 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
大学课外活动总结
2014/07/09 职场文书
党员个人对照检查材料
2014/10/01 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
本科毕业论文致谢怎么写
2015/05/14 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python