如何基于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之wxPython应用实例
Sep 28 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
python如何读写csv数据
Mar 21 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
python 读取二进制 显示图片案例
Apr 24 Python
Django中使用Json返回数据的实现方法
Jun 03 Python
python学习将数据写入文件并保存方法
Jun 07 Python
python中对二维列表中一维列表的调用方法
Jun 07 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
python七种方法判断字符串是否包含子串
Aug 18 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下使用无限生命期Session的方法
2007/03/16 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
jquery each()源代码
2011/02/14 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
python 获取list特定元素下标的实例讲解
2018/04/09 Python
Python转换时间的图文方法
2019/07/01 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
python 一维二维插值实例
2020/04/22 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
python实现邮件循环自动发件功能
2020/09/11 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
2015年药店工作总结
2015/04/20 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
python 调用js的四种方式
2021/04/11 Python
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫
html解决浏览器记住密码输入框的问题
2023/05/07 HTML / CSS