如何基于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语言编写电脑时间自动同步小工具
Mar 08 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
Jan 20 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
python 获取url中的参数列表实例
Dec 18 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
Python PIL图片添加字体的例子
Aug 22 Python
Django实现分页显示效果
Oct 31 Python
在django admin详情表单显示中添加自定义控件的实现
Mar 11 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
python如何利用Mitmproxy抓包
Oct 10 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 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
PHP4之真OO
2006/10/09 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
关于jQuery object and DOM element
2013/04/15 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
小程序自定义组件实现城市选择功能
2018/07/18 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
python中星号变量的几种特殊用法
2016/09/07 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
C语言笔试题
2014/09/04 面试题
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
岗位职责的定义
2013/11/10 职场文书
药学专业大专生的自我评价
2013/12/12 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
上级检查欢迎词
2014/01/18 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
小学入学感言
2015/08/01 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android