用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使用xlrd模块操作Excel数据导入的方法
May 26 Python
Python中__init__.py文件的作用详解
Sep 18 Python
win与linux系统中python requests 安装
Dec 04 Python
TensorFLow用Saver保存和恢复变量
Mar 10 Python
使用Python做定时任务及时了解互联网动态
May 15 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
Python笔记之工厂模式
Nov 20 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 Python
python requests库的使用
Jan 06 Python
Python集合set()使用的方法详解
Mar 18 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采集相关教程之一 CURL函数库
2010/02/15 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
微信红包随机生成算法php版
2016/07/21 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
PHP中OpenSSL加密问题整理
2017/12/14 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
JS常见算法详解
2017/02/28 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
python实现网页链接提取的方法分享
2014/02/25 Python
python获取图片颜色信息的方法
2015/03/18 Python
Python通过select实现异步IO的方法
2015/06/04 Python
Python求出0~100以内的所有素数
2018/01/23 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
python实现微信防撤回神器
2019/04/29 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
python datetime中strptime用法详解
2019/08/29 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
高校学生干部的自我评价分享
2013/11/04 职场文书
小学语文国培感言
2014/03/04 职场文书
地理教师岗位职责
2014/03/16 职场文书
大学新学期计划书
2014/04/28 职场文书
七年级地理教学计划
2015/01/22 职场文书
大学生就业指导课心得体会
2016/01/15 职场文书