如何基于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文档生成工具pydoc使用介绍
Jun 02 Python
Python 正则表达式入门(初级篇)
Dec 07 Python
彻底理解Python list切片原理
Oct 27 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
Python根据服务获取端口号的方法
Sep 25 Python
在pandas中遍历DataFrame行的实现方法
Oct 23 Python
python简单的三元一次方程求解实例
Apr 02 Python
Python使用sqlite3模块内置数据库
May 07 Python
python 写函数在一定条件下需要调用自身时的写法说明
Jun 01 Python
Django DRF路由与扩展功能的实现
Jun 03 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字符串截取函数用法分析
2014/11/25 PHP
PHP单链表的实现代码
2016/07/05 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
php经典趣味算法实例代码
2020/01/21 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
js函数调用的方式
2014/05/06 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
破解安装Pycharm的方法
2018/10/19 Python
Python中logger日志模块详解
2020/08/04 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
学校消防安全制度
2014/01/30 职场文书
金融学专科生自我鉴定
2014/02/21 职场文书
美术教学感言
2014/02/22 职场文书
工作失职检讨书500字
2014/10/17 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
仰望星空观后感
2015/06/10 职场文书
详解Golang如何优雅的终止一个服务
2022/03/21 Golang