如何基于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学习手册中的python多态示例代码
Jan 21 Python
python实现的jpg格式图片修复代码
Apr 21 Python
python制作websocket服务器实例分享
Nov 20 Python
Python更新数据库脚本两种方法及对比介绍
Jul 27 Python
Python实现中一次读取多个值的方法
Apr 22 Python
python与caffe改变通道顺序的方法
Aug 04 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
python爬虫-模拟微博登录功能
Sep 12 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
python爬虫把url链接编码成gbk2312格式过程解析
Jun 08 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获取文件后缀名的三个函数
2012/10/15 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
PHP对象相关知识总结
2017/04/09 PHP
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
jquery ajax 局部刷新小案例
2014/02/08 Javascript
JQuery基础语法小结
2015/02/27 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
Python中使用动态变量名的方法
2014/05/06 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
警校毕业生自我评价
2014/04/06 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书