MATLAB | 七夕节用MATLAB画个玫瑰花束叭

Hey又是一年七夕节要到了,每年一次直男审美MATLAB绘图大赛开始hiahiahia,真的这些代码越写越不知道咋写,又不想每年把之前的代码翻出来再发一遍,于是今年又对我之前写的老代码进行了点优化组合,整了个花球变花束:

在此祝各位成双成对和形单影只的都七夕节快乐叭!!!

先稍微说一下原理,再去给完整代码哈。


玫瑰花

玫瑰花咋画以及怎么旋转到合适的位置可以参见这篇推送:

  • https://slandarer.blog.csdn.net/article/details/117048623

我当时还是写的非常详细的,可以看的时候顺手点个赞hiahiahia。


周围小花

是把以下这段很简单的代码进行了微调改了改颜色啥的:

rb=0:.01:1;
tb=linspace(0,2,151);
Wb=rb'*((abs((1-mod(tb*5,2))))/2+.3);
Xb=Wb.*cospi(tb);
Yb=Wb.*sinpi(tb); 
zb=@(a)(-cospi(Wb*a)+1).^.2;
Zb=zb(1.2);
g=@(i)i(:,1:30:151)/2;
plot3(g(Xb),g(Yb),g(zb(1)*2.3),'k');
surface(Xb,Yb,Zb,'EdgeColor','none');


花杆和颜色

花杆就直接用贝塞尔曲线插了一下值,让其比较顺滑且扭转了起来,颜色的话把代码中的colorList换一下的话可以自行调整,这里给点颜色数值以供参考哈:

c1=[0.5600    0.2200    0.03000.6700    0.2900    0.05000.8300    0.4900    0.09000.8500    0.6200    0.13000.8800    0.7600    0.13000.9100    0.8300    0.20001.0000    0.9200    0.3100];
c2=[0.1800    0.0900    0.18000.3100    0.0800    0.24000.5100    0.0800    0.34000.6500    0.1200    0.35000.8600    0.3200    0.4500];
c3=[0.1100    0.3100    0.75000.3400    0.2900    0.68000.5100    0.2700    0.64000.5900    0.2700    0.62000.7600    0.2500    0.5700];
c4=[0.1400    0.1400    0.14000.2200    0.2200    0.22000.4100    0.4100    0.41000.6000    0.6000    0.60000.7500    0.7500    0.75000.8900    0.8900    0.8900];
c5=[0.3300    0.3300    0.69000.5300    0.4000    0.68000.6800    0.4200    0.63000.7800    0.4200    0.57000.9100    0.4900    0.47000.9600    0.7300    0.4400];
c6=[0.5300    0.8300    0.81000.5200    0.7500    0.82000.4900    0.6200    0.84000.4900    0.5600    0.84000.4700    0.4900    0.85000.4500    0.3500    0.87000.9500    0.9500    0.9500];

hiahiahia奇怪的颜色增加了:


完整代码

感觉要运行的话至少需要R17b版本(17b也不算新了最新版都是更了十几代了),要把代码改的适应更之前的版本老麻烦了。。。建议大家用点比较新的版本!!不然平白无故多写老多代码新版本还不一定用的了。

function roseBouquet
figure('Units','normalized','Position',[.2,.1,.6,.7])
%曲面数据计算 ==============================================================
% 玫瑰部分 -----------------------------------------------------------------
[xr,tr]=meshgrid((0:24)./24,(0:0.5:575)./575.*20.*pi+4*pi);
pr=(pi/2)*exp(-tr./(8*pi));
cr=sin(15*tr)/150;
ur=1-(1-mod(3.6*tr,2*pi)./pi).^4./2+cr;
yr=2*(xr.^2-xr).^2.*sin(pr);
rr=ur.*(xr.*sin(pr)+yr.*cos(pr));
hr=ur.*(xr.*cos(pr)-yr.*sin(pr));
% 百合花部分 ---------------------------------------------------------------
rb=0:.01:1;
tb=linspace(0,2,151);
wb=rb'*((abs((1-mod(tb*5,2))))/2+.3);
xb=wb.*cospi(tb);
yb=wb.*sinpi(tb); 
zb=@(a)(-cospi(wb*a)+1).^.2;
Zb=zb(1.2);
g=@(i)i(:,1:30:151)/2;
%颜色映射表 ================================================================
colorList=[0.3300    0.3300    0.69000.5300    0.4000    0.68000.6800    0.4200    0.63000.7800    0.4200    0.57000.9100    0.4900    0.47000.9600    0.7300    0.4400];
% colorList=[0.9176    0.7490    0.3765
%     0.9294    0.7725    0.4902
%     0.9333    0.7451    0.5961
%     0.8902    0.6980    0.5294
%     0.8784    0.6941    0.6235
%     0.9216    0.7412    0.7529
%     0.8588    0.6039    0.7686
%     0.8510    0.4706    0.6392
%     0.7608    0.2118    0.3569];
colorMapr=setColorByH(hr,colorList);
colorMapb=setColorByH(Zb,colorList.*.4+.6);function cMap=setColorByH(H,cList)X=(H-min(min(H)))./(max(max(H))-min(min(H)));xx=(0:size(cList,1)-1)./(size(cList,1)-1);y1=cList(:,1);y2=cList(:,2);y3=cList(:,3);cMap(:,:,1)=interp1(xx,y1,X,'linear');cMap(:,:,2)=interp1(xx,y2,X,'linear');cMap(:,:,3)=interp1(xx,y3,X,'linear');end
% 旋转函数预定义 ===========================================================
yaw_z=72*pi/180;
roll_x_1=pi/8;
roll_x_2=pi/9;
R_z_2=[cos(yaw_z)  , -sin(yaw_z)  , 0; sin(yaw_z)  , cos(yaw_z)  , 0; 0, 0, 1];
R_z_1=[cos(yaw_z/2), -sin(yaw_z/2), 0; sin(yaw_z/2), cos(yaw_z/2), 0; 0, 0, 1];
R_z_3=[cos(yaw_z/3), -sin(yaw_z/3), 0; sin(yaw_z/3), cos(yaw_z/3), 0; 0, 0, 1];
R_x_1=[1, 0, 0; 0, cos(roll_x_1), -sin(roll_x_1); 0, sin(roll_x_1), cos(roll_x_1)];
R_x_2=[1, 0, 0; 0, cos(roll_x_2), -sin(roll_x_2); 0, sin(roll_x_2), cos(roll_x_2)];function [nX,nY,nZ]=rotateXYZ(X,Y,Z,R)nX=zeros(size(X)); nY=zeros(size(Y)); nZ=zeros(size(Z));for i=1:size(X,1)for j=1:size(X,2)v=[X(i,j);Y(i,j);Z(i,j)];nv=R*v; nX(i,j)=nv(1); nY(i,j)=nv(2); nZ(i,j)=nv(3);endendend
% 绘制花杆函数预定义 ========================================================function drawStraw(X,Y,Z)[m,n]=find(Z==min(min(Z)));m=m(1);n=n(1);x1=X(m,n);y1=Y(m,n);z1=Z(m,n)+.03;xx=[x1,0,(x1.*cos(pi/3)-y1.*sin(pi/3))./3].';yy=[y1,0,(y1.*cos(pi/3)+x1.*sin(pi/3))./3].';zz=[z1,-.7,-1.5].';strawPnts=bezierCurve([xx,yy,zz],50);plot3(strawPnts(:,1),strawPnts(:,2),strawPnts(:,3),'Color',[88,130,126]./255,'LineWidth',2)end
% 贝塞尔函数 ---------------------------------------------------------------function pnts=bezierCurve(pnts,N)t=linspace(0,1,N);p=size(pnts,1)-1;coe1=factorial(p)./factorial(0:p)./factorial(p:-1:0);coe2=((t).^((0:p)')).*((1-t).^((p:-1:0)'));pnts=(pnts'*(coe1'.*coe2))';end
%曲面旋转及绘制 ============================================================
hold on
surface(rr.*cos(tr),rr.*sin(tr),hr+0.35,'EdgeAlpha',0.05,...'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMapr,'Tag','slandarer')
[nXr,nYr,nZr]=rotateXYZ(rr.*cos(tr),rr.*sin(tr),hr+0.35,R_x_1);
nYr=nYr-.4;
surface(nXr,nYr,nZr-.1,'EdgeAlpha',0.05,...
'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMapr)
drawStraw(nXr,nYr,nZr-.1)
for k=1:4[nXr,nYr,nZr]=rotateXYZ(nXr,nYr,nZr,R_z_2);surface(nXr,nYr,nZr-.1,'EdgeAlpha',0.05,...'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMapr)drawStraw(nXr,nYr,nZr-.1)
end   
% -------------------------------------------------------------------------
[nXb,nYb,nZb]=rotateXYZ(xb./2.5,yb./2.5,Zb./2.5+.32,R_x_2);
nYb=nYb-1.35;
for k=1:5[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_2);surface(nXb,nYb,nZb,'EdgeColor','none','FaceColor','interp','CData',colorMapb)drawStraw(nXb,nYb,nZb)
end  
[nXb,nYb,nZb]=rotateXYZ(xb./2.5,yb./2.5,Zb./2.5+.32,R_x_2);
nYb=nYb-1.15;
[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_1);
for k=1:5[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_2);surface(nXb,nYb,nZb,'EdgeColor','none','FaceColor','interp','CData',colorMapb)drawStraw(nXb,nYb,nZb)
end
[nXb,nYb,nZb]=rotateXYZ(xb./2.5,yb./2.5,Zb./2.5+.32,R_x_2);
nYb=nYb-1.25;
[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_3);
for k=1:5[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_2);surface(nXb,nYb,nZb,'EdgeColor','none','FaceColor','interp','CData',colorMapb)drawStraw(nXb,nYb,nZb)
end  
[nXb,nYb,nZb]=rotateXYZ(xb./2.5,yb./2.5,Zb./2.5+.32,R_x_2);
nYb=nYb-1.25;
[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_3);
[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_3);
for k=1:5[nXb,nYb,nZb]=rotateXYZ(nXb,nYb,nZb,R_z_2);surface(nXb,nYb,nZb,'EdgeColor','none','FaceColor','interp','CData',colorMapb)drawStraw(nXb,nYb,nZb)
end  
%axes属性调整 ==============================================================
ax=gca;
ax.Position=[0,0,1,1];
grid on
ax.GridLineStyle='--';
ax.LineWidth=1.2;
ax.XColor=[1,1,1].*0.4;
ax.YColor=[1,1,1].*0.4;
ax.ZColor=[1,1,1].*0.4;
ax.DataAspectRatio=[1,1,1];
ax.DataAspectRatioMode='manual';
view(-15,35);
end

再次祝各位成双成对和形单影只的都七夕节快乐叭!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/45502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能大模型加速数据库存储模型发展 行列混合存储下的破局

数据存储模型 ​专栏内容: postgresql内核源码分析手写数据库toadb并发编程toadb开源库 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 概述 在数据库的发展过程中,关…

MySQL5.7数据目录结构

以CentOS7为例,数据目录为/var/lib/mysql/,其内容如下: [rootscentos szc]# ll /var/lib/mysql/ total 122952 -rw-r----- 1 mysql mysql 56 Jan 15 16:02 auto.cnf -rw------- 1 mysql mysql 1680 Jan 15 16:02 ca-key.pem -rw-r…

系统架构设计专业技能 · 软件工程之需求工程

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

深入浅出Pytorch函数——torch.nn.Module.apply

分类目录:《深入浅出Pytorch函数》总目录 相关文章: 深入浅出Pytorch函数——torch.nn.Module 递归地将函数fn应用于每个子模块及self,子模块由.children()返回。典型的用法包括初始化模型的参数(可以参考torc.nn.init&#xff0…

Qt快速学习(一)--对象,信号和槽

目录 1.Qt概述 1.1 什么是Qt 2.2 手动创建 2.3 pro文件 2.4 一个最简单的Qt应用程序 3 第一个Qt小程序 3.1 按钮的创建 3.2 对象模型(对象树) 3.3 Qt窗口坐标体系 4 信号和槽机制 4.1 系统自带的信号和槽 4.2 自定义信号和槽 4.3信号槽的拓展 4…

Edge浏览器免费使用GPT3.5

搜索sider,安装Sidebar插件 注册账号即可每天免费使用30次。 Sider: ChatGPT侧边栏,GPT-4, 联网, 绘图

C++ 的关键字(保留字)完整介绍

1. asm asm (指令字符串):允许在 C 程序中嵌入汇编代码。 2. auto auto(自动,automatic)是存储类型标识符,表明变量"自动"具有本地范围,块范围的变量声明(如for循环体内的变量声明…

机器学习深度学习——NLP实战(情感分析模型——RNN实现)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——NLP实战(情感分析模型——数据集) 📚订阅专栏:机器学习&…

非科班如何丝滑转码

文章目录 1. 引言2. 如何规划才能实现转码2.1 确定目标和动机2.2 学习路径规划2.3 寻找学习资源2.4 制定学习计划 3. 计算机岗位发展前景3.1 编程岗位3.2 数据分析和人工智能岗位3.3 网络和系统管理岗位 4. 现阶段转码的建议4.1 学习编程基础4.2 选择合适的编程语言4.3 实践和项…

Python学习笔记第六十五天(Matplotlib 绘制多图)

Python学习笔记第六十五天 Matplotlib 绘制多图subplot()subplots() 后记 Matplotlib 绘制多图 我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。 subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用…

re学习(34)攻防世界-csaw2013reversing2(修改汇编顺序)

参考文章: re学习笔记(27)攻防世界-re-csaw2013reversing2_Forgo7ten的博客-CSDN博客攻防世界逆向入门题之csaw2013reversing2_沐一 林的博客-CSDN博客 三种做法 1、ida静态分析修改指令 main函数反编译的代码 由于运行之后的是乱码&…

[oneAPI] 手写数字识别-BiLSTM

[oneAPI] 手写数字识别-BiLSTM 手写数字识别参数与包加载数据模型训练过程结果 oneAPI 比赛:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Intel DevCloud for oneAPI:https://devcloud.intel.com/oneapi/get_started/aiAnalyticsToo…

Kafka如何解决消息丢失的问题

在 Kafka 的整个架构中可以总结出消息有三次传递的过程: Producer 端发送消息给 Broker 端Broker 将消息进行并持久化数据Consumer 端从 Broker 将消息拉取并进行消费 在以上这三步中每一步都可能会出现丢失数据的情况, 那么 Kafka 到底在什么情况下才…

python rtsp 硬件解码 二

上次使用了python的opencv模块 述说了使用PyNvCodec 模块,这个模块本身并没有rtsp的读写,那么读写rtsp是可以使用很多方法的,我们为了输出到pytorch直接使用AI程序,简化rtsp 输入,可以直接使用ffmpeg的子进程 方法一 …

STM8遇坑[EEPROM读取debug不正常release正常][ STVP下载成功单运行不成功][定时器消抖莫名其妙的跑不通流程]

EEPROM读取debug不正常release正常 这个超级无语,研究和半天,突然发现调到release就正常了,表现为写入看起来正常读取不正常,这个无语了,不想研究了 STVP下载不能够成功运行 本文摘录于:https://blog.csdn.net/qlexcel/article/details/71270780只是做学习备份之…

GEEMAP 中如何拉伸图像

图像拉伸是最基础的图像增强显示处理方法,主要用来改善图像显示的对比度,地物提取流程中往往首先要对图像进行拉伸处理。图像拉伸主要有三种方式:线性拉伸、直方图均衡化拉伸和直方图归一化拉伸。 GEE 中使用 .sldStyle() 的方法来进行图像的…

【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式

C#高级主题涉及到更复杂、更灵活的编程概念和技术,能够让开发者更好地应对现代软件开发中的挑战。其中,LINQ查询和表达式是C#高级主题中的一项关键内容,具有以下重要性和优势: 数据处理和操作: 在现代软件中&#xff…

8.5.tensorRT高级(3)封装系列-基于生产者消费者实现的yolov5封装

目录 前言1. yolov5封装总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-基于生产者消费者实现的yolov5封装…

postgresql中基础sql查询

postgresql中基础sql查询 创建表插入数据创建索引删除表postgresql命令速查简单查询计算查询结果 利用查询条件过滤数据模糊查询 创建表 -- 部门信息表 CREATE TABLE departments( department_id INTEGER NOT NULL -- 部门编号,主键, department_name CHARACTE…

迁移学习系列--半监督

目前追踪的代码库如下: Transfer-Learning-Library Semi-supervised-learning TorchSSL 包含算法: (2015 NeurIPS ) PiModel [1] (2017 NeurIPS ) MeanTeacher[2] (2013 ICML ) PseudoLabel [3] (2018TPAMI ) VAT (Virtual adversarial training)[4] (2019 NeurIPS) M…