如何基于python实现画不同品种的樱花树


Posted in Python onJanuary 03, 2020

这篇文章主要介绍了如何基于python实现画不同品种的樱花树,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

 动态生成樱花

效果图(这个是动态的):

如何基于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实现画不同品种的樱花树

实现代码:

from turtle import *
from random import *
from math import *

def tree(n,l):
  pd()#下笔
  #阴影效果
  t = cos(radians(heading()+45))/8+0.25
  pencolor(t,t,t)
  pensize(n/3)
  forward(l)#画树枝

  if n>0:
    b = random()*15+10 #右分支偏转角度
    c = random()*15+10 #左分支偏转角度
    d = l*(random()*0.25+0.7) #下一个分支的长度
    #右转一定角度,画右分支
    right(b)
    tree(n-1,d)
    #左转一定角度,画左分支
    left(b+c)
    tree(n-1,d)
    #转回来
    right(c)
  else:
    #画叶子
    right(90)
    n=cos(radians(heading()-45))/4+0.5
    pencolor(n,n*0.8,n*0.8)
    circle(3)
    left(90)
    #添加0.3倍的飘落叶子
    if(random()>0.7):
      pu()
      #飘落
      t = heading()
      an = -40 +random()*40
      setheading(an)
      dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
      forward(dis)
      setheading(t)
      #画叶子
      pd()
      right(90)
      n = cos(radians(heading()-45))/4+0.5
      pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)
      circle(2)
      left(90)
      pu()
      #返回
      t=heading()
      setheading(an)
      backward(dis)
      setheading(t)
  pu()
  backward(l)#退回

bgcolor(0.5,0.5,0.5)#背景色
ht()#隐藏turtle
speed(0)#速度 1-10渐进,0 最快
tracer(0,0)
pu()#抬笔
backward(100)
left(90)#左转90度
pu()#抬笔
backward(300)#后退300
tree(12,100)#递归7层
done()

暗色效果

效果:

如何基于python实现画不同品种的樱花树

实现代码:

from turtle import *
from random import *
from math import *

def tree(n, l):
  pd()
  t = cos(radians(heading() + 45)) / 8 + 0.25
  pencolor(t, t, t)
  pensize(n / 4)
  forward(l)
  if n > 0:
    b = random() * 15 + 10
    c = random() * 15 + 10
    d = l * (random() * 0.35 + 0.6)
    right(b)
    tree(n - 1, d)
    left(b + c)
    tree(n - 1, d)
    right(c)
  else:
    right(90)
    n = cos(radians(heading() - 45)) / 4 + 0.5
    pencolor(n, n, n)
    circle(2)
    left(90)
  pu()
  backward(l)
bgcolor(0.5, 0.5, 0.5)
ht()
speed(0)
tracer(0, 0)
left(90)
pu()
backward(300)
tree(13, 100)
done()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现linux下使用xcopy的方法
Jun 28 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
Python图像处理之识别图像中的文字(实例讲解)
May 10 Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
python3.7简单的爬虫实例详解
Jul 08 Python
Python实现计算对象的内存大小示例
Jul 10 Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 Python
python 矢量数据转栅格数据代码实例
Sep 30 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
python代码实现猜拳小游戏
Nov 30 Python
Python基础之变量基本用法与进阶详解
Jan 03 #Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 #Python
Python实现银行账户资金交易管理系统
Jan 03 #Python
Pytorch提取模型特征向量保存至csv的例子
Jan 03 #Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
Jan 03 #Python
python实现上传文件到linux指定目录的方法
Jan 03 #Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 #Python
You might like
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
javascript折半查找详解
2015/01/26 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
python使用xmlrpc实例讲解
2013/12/17 Python
python字典get()方法用法分析
2015/04/17 Python
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
django 自定义过滤器的实现
2019/02/26 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
Python self用法详解
2020/11/28 Python
python 爬虫请求模块requests详解
2020/12/04 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
大学生职业生涯设计书
2014/01/02 职场文书
贺卡寄语大全
2014/04/11 职场文书
快餐公司创业计划书
2014/04/29 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
《妈妈别哭,有我在》读后感3篇
2020/01/13 职场文书
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS