Python&Matlab实现樱花的绘制


Posted in Python onApril 07, 2022

1.锦短情长

为什么选择这个标题,借鉴了一封情书里面的情长纸短,还吻你万千

Python&Matlab实现樱花的绘制

锦短情长

都只谓人走茶凉,怎感觉锦短情长?

一提起眼泪汪汪,是明月人心所向?

2. 一场樱花雨(Matlab)

Python&Matlab实现樱花的绘制

function pingba
hold on,axis equal
axis(0.5+[-10,50,0,50])
set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w')
set(gca,'color',[0.5020    0.5020    0.5020])
 
length_trunk=6;
width_trunk=4;
k1=0.9;
k2=0.8;
number_branch=15;
alp=pi/10;
length_branch=k1*length_trunk;
width_branch=k2*width_trunk;
trunk=[12,0;12,length_trunk];
plot(trunk(:,1),trunk(:,2),'color',[0 0 0],'Linewidth',width_trunk)
begins=[trunk(2,:),pi/2,1];
grow=begins;
plotdata=[0 0 0 0 0 0 0 0];
plotdata(1,:)=[];
for i=1:number_branch
    control=randi(25,[length(grow(:,1)),1])>=10;
    ag=grow(:,3);
    l=length(ag);
    parta=[length_branch.*k1.^grow(:,4).*cos(ag+ones(l,1)*alp),length_branch.*k1.^grow(:,4).*sin(ag+ones(l,1)*alp),ones(l,1)*alp,ones(l,1)];
    partb=[length_branch.*k1.^grow(:,4).*cos(ag-ones(l,1)*alp),length_branch.*k1.^grow(:,4).*sin(ag-ones(l,1)*alp),-ones(l,1)*alp,ones(l,1)];
    parta2=[0.8.*length_branch.*k1.^grow(:,4).*cos(ag),0.8.*length_branch.*k1.^grow(:,4).*sin(ag),zeros(l,1),ones(l,1)];
    partb2=[0.8.*length_branch.*k1.^grow(:,4).*cos(ag),0.8.*length_branch.*k1.^grow(:,4).*sin(ag),zeros(l,1),ones(l,1)];
    parta=control.*parta+(1-control).*parta2;
    partb=control.*partb+(1-control).*partb2;
    parta=parta+grow;
    partb=partb+grow;
    congress=[parta;partb];
    grow=[grow;grow];
    judge=[grow,congress];
    judge=unique(judge,'rows');
    grow=judge(:,5:end);
    plotdata=[plotdata;judge];
end
for i=1:number_branch
    temp_w=width_branch*0.8^i;
    temp_branch=plotdata(plotdata(:,4)==i,:);
    plx=[temp_branch(:,1),temp_branch(:,5)];
    ply=[temp_branch(:,2),temp_branch(:,6)];
    plx=plx';ply=ply';
    plot(plx,ply,'color',[0 0 0]+i*[0.3020 0.3020 0.3020]./number_branch,'Linewidth',temp_w)
end
 
bloom_pos=plotdata(plotdata(:,8)==number_branch+1,[5,6]);
scatter(bloom_pos(:,1),bloom_pos(:,2),10,'CData',[0.8549    0.6824    0.6824])
bloom_pos=plotdata(plotdata(:,8)==number_branch,[5,6]);
scatter(bloom_pos(:,1),bloom_pos(:,2),8,'CData',[0.7451    0.5961    0.5961].*0.97)
end

3.樱花树(Python)

Python&Matlab实现樱花的绘制

import turtle as T
import random
import time
 
#=======画樱花的躯干(60,t)===============
T.title('凋落的樱花')
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&Matlab实现樱花的绘制的文章就介绍到这了,更多相关Python Matlab樱花内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
详解python中asyncio模块
Mar 03 Python
解决python Markdown模块乱码的问题
Feb 14 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
python pillow模块使用方法详解
Aug 30 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
Python 项目转化为so文件实例
Dec 23 Python
基于python+selenium的二次封装的实现
Jan 06 Python
构建高效的python requests长连接池详解
May 02 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
matplotlib自定义鼠标光标坐标格式的实现
Jan 08 Python
python 实现的车牌识别项目
Jan 25 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 Python
Python OpenCV形态学运算示例详解
4种方法python批量修改替换列表中元素
Apr 07 #Python
Python+OpenCV实现图片中的圆形检测
Python中文分词库jieba(结巴分词)详细使用介绍
基于Python实现对比Exce的工具
Apr 07 #Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Python OpenCV之常用滤波器使用详解
You might like
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
php 远程关机操作的代码
2008/12/05 PHP
PHP 防恶意刷新实现代码
2010/05/16 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
PHP模板解析类实例
2015/07/09 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
详解Python的三种可变参数
2019/05/08 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
工商管理实习生自我鉴定范文
2013/12/18 职场文书
保安队长职务说明书
2014/02/23 职场文书
村居抓节水倡议书
2014/05/19 职场文书
详解Java实现数据结构之并查集
2021/06/23 Java/Android
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis