如何基于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抓取百度查询结果的方法
Jul 08 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
Python处理CSV与List的转换方法
Apr 19 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
python中时间、日期、时间戳的转换的实现方法
Jul 06 Python
手动安装python3.6的操作过程详解
Jan 13 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
python脚本框架webpy模板控制结构
Nov 20 Python
Python四款GUI图形界面库介绍
Jun 05 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
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
laravel学习教程之存取器
2016/07/30 PHP
php封装的验证码类分享
2017/02/26 PHP
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
js中new一个对象的过程
2017/02/20 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
Python re模块介绍
2014/11/30 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
python内置模块collections知识点总结
2019/12/19 Python
如何基于python操作json文件获取内容
2019/12/24 Python
Python日期格式和字符串格式相互转换的方法
2020/02/18 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
物流经理自我评价
2013/09/23 职场文书
学生思想表现的评语
2014/01/30 职场文书
销售顾问岗位职责
2014/02/25 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
赔偿协议书
2015/01/27 职场文书
百万英镑观后感
2015/06/09 职场文书
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android