如何基于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实现类的静态变量用法实例
May 08 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
在Django中创建第一个静态视图
Jul 15 Python
Python中如何获取类属性的列表
Dec 26 Python
Python 实现随机数详解及实例代码
Apr 15 Python
Python学习教程之常用的内置函数大全
Jul 14 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
Django 登陆验证码和中间件的实现
Aug 17 Python
python协程之动态添加任务的方法
Feb 19 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
python实现手势识别的示例(入门)
Apr 15 Python
python之基数排序的实现
Jul 26 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的安全策略
2006/10/09 PHP
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
js获取css的各种样式并且设置他们的方法
2017/08/22 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
vue checkbox 全选 数据的绑定及获取和计算方法
2018/02/09 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
js实现弹窗猜数字游戏
2020/11/26 Javascript
Python中的字典遍历备忘
2015/01/17 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
如何使用repr调试python程序
2020/02/28 Python
世界上最好的帽子:Tilley
2016/11/27 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
linux面试题参考答案(10)
2013/11/04 面试题
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
会计专业自我评价
2014/02/12 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
小学运动会报道稿
2014/10/04 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
辩论赛新闻稿
2015/07/17 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
Golang连接并操作MySQL
2022/04/14 MySQL