如何基于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中DJANGO简单测试实例
May 11 Python
Python中几个比较常见的名词解释
Jul 04 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
Python实现合并两个列表的方法分析
May 28 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
Django获取该数据的上一条和下一条方法
Aug 12 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
python GUI库图形界面开发之PyQt5表单布局控件QFormLayout详细使用方法与实例
Mar 06 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
基于opencv的selenium滑动验证码的实现
Jul 24 Python
教你怎么用Python实现GIF动图的提取及合成
Jun 15 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
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
2016/12/07 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
php通过各种函数判断0和空
2020/07/04 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
PHP获取当前时间不准确问题解决方案
2020/08/14 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
php array_map()函数实例用法
2021/03/03 PHP
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
Vue组件开发技巧总结
2018/03/04 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
JavaScript制作3D旋转相册
2020/08/02 Javascript
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
在Python中COM口的调用方法
2019/07/03 Python
使用Python的Turtle库绘制森林的实例
2019/12/18 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Python json格式化打印实现过程解析
2020/07/21 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
2014年防汛工作总结
2014/12/08 职场文书
给上级领导的感谢信
2015/01/22 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技