520还在画玫瑰?教你用MATLAB画个玫瑰花球

效果如下:在这里插入图片描述
在这里插入图片描述

原理

玫瑰绘制

要画花球我们要先会绘制一朵花:
在这里插入图片描述
如何画一朵花可以看看这篇:MATLAB 3D玫瑰花绘制

三维坐标变化

主要用下面的坐标变化方法:

正十二面体球

想像这里有一个正十二面体球,我们把每一面放上一朵花,也就是说每两朵花之间夹角是pi-acos(-1/sqrt(5)),我们可以通过多次x轴旋转和多次z轴旋转将每朵花放到合适的角度
在这里插入图片描述

完整代码
function roseBall
clear;clc
%曲面数据计算
%==========================================================================
[x,t]=meshgrid((0:24)./24,(0:0.5:575)./575.*20.*pi+4*pi);
p=(pi/2)*exp(-t./(8*pi));
change=sin(15*t)/150;
u=1-(1-mod(3.6*t,2*pi)./pi).^4./2+change;
y=2*(x.^2-x).^2.*sin(p);r=u.*(x.*sin(p)+y.*cos(p));
h=u.*(x.*cos(p)-y.*sin(p));%颜色映射表
%==========================================================================
hMap=(h-min(min(h)))./(max(max(h))-min(min(h)));
col=size(hMap,2);
colorList=[0.0200    0.0400    0.39000    0.0900    0.58000    0.1300    0.64000.0200    0.0600    0.69000    0.0800    0.79000.0100    0.1800    0.85000    0.1300    0.96000.0100    0.2600    0.99000    0.3500    0.99000.0700    0.6200    1.00000.1700    0.6900    1.0000];
% colorList=[0.2100    0.0900    0.3800
%     0.2900    0.0700    0.4700
%     0.4000    0.1100    0.4900
%     0.5500    0.1600    0.5100
%     0.7500    0.2400    0.4700
%     0.8900    0.3200    0.4100
%     0.9700    0.4900    0.3700
%     1.0000    0.5600    0.4100
%     1.0000    0.6900    0.4900
%     1.0000    0.8200    0.5900
%     0.9900    0.9200    0.6700
%     0.9800    0.9500    0.7100];colorFunc=colorFuncFactory(colorList);
dataMap=colorFunc(hMap');
colorMap(:,:,1)=dataMap(:,1:col);
colorMap(:,:,2)=dataMap(:,col+1:2*col);
colorMap(:,:,3)=dataMap(:,2*col+1:3*col);function colorFunc=colorFuncFactory(colorList)xx=(0:size(colorList,1)-1)./(size(colorList,1)-1);y1=colorList(:,1);y2=colorList(:,2);y3=colorList(:,3);colorFunc=@(X)[interp1(xx,y1,X,'linear')',interp1(xx,y2,X,'linear')',interp1(xx,y3,X,'linear')'];end%曲面旋转及绘制
%==========================================================================
surface(r.*cos(t),r.*sin(t),h+0.35,'EdgeAlpha',0.05,...'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)hold onsurface(r.*cos(t),r.*sin(t),-h-0.35,'EdgeAlpha',0.05,...'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)
Xset=r.*cos(t);
Yset=r.*sin(t);
Zset=h+0.35;yaw_z=pi*72/180;
roll_x=pi-acos(-1/sqrt(5));
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_x_2=[1,0,0;0,cos(roll_x),-sin(roll_x);0,sin(roll_x),cos(roll_x)];[nX,nY,nZ]=rotateXYZ(Xset,Yset,Zset,R_x_2);
surface(nX,nY,nZ,'EdgeAlpha',0.05,...
'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)for k=1:4[nX,nY,nZ]=rotateXYZ(nX,nY,nZ,R_z_2);surface(nX,nY,nZ,'EdgeAlpha',0.05,...'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)
end   [nX,nY,nZ]=rotateXYZ(nX,nY,nZ,R_z_1);for k=1:5[nX,nY,nZ]=rotateXYZ(nX,nY,nZ,R_z_2);surface(nX,nY,-nZ,'EdgeAlpha',0.05,...'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)
end   %--------------------------------------------------------------------------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
%axes属性调整
%==========================================================================
ax=gca;
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';
ax.CameraPosition=[-6.5914  -24.1625   -0.0384];end

另:
补两张古早之前做的折纸花球:

在这里插入图片描述
在这里插入图片描述


我好像在诡异配色的道路上越走越远了。。。其实后面第二种配色还可以不是嘛 。。。
配色1:
在这里插入图片描述
配色2:
在这里插入图片描述
配色3:
在这里插入图片描述
配色4:
在这里插入图片描述
配色4的数据上下颠倒是这样的:
在这里插入图片描述

这几种颜色大家可以试试看,我真的尽力了。。。。
颜色数据:

colorList1=[0.2000    0.0800    0.43000.2000    0.1300    0.46000.2000    0.2100    0.50000.2000    0.2800    0.53000.2000    0.3700    0.58000.1900    0.4500    0.62000.2000    0.4800    0.64000.1900    0.5400    0.67000.1900    0.5700    0.69000.1900    0.7500    0.78000.1900    0.8000    0.8100
];
colorList2=[0.1300    0.1000    0.16000.2000    0.0900    0.20000.2800    0.0800    0.23000.4200    0.0800    0.30000.5100    0.0700    0.34000.6600    0.1200    0.35000.7900    0.2200    0.40000.8800    0.3500    0.47000.9000    0.4500    0.54000.8900    0.7800    0.7900
];
colorList3=[0.3200    0.3100    0.76000.3800    0.3400    0.76000.5300    0.4200    0.75000.6400    0.4900    0.73000.7200    0.5500    0.72000.7900    0.6100    0.71000.9100    0.7100    0.68000.9800    0.7600    0.6700
];
colorList4=[0.9500    0.2300    0.66000.7500    0.2100    0.60000.6200    0.2000    0.57000.4500    0.1800    0.52000.3200    0.2100    0.52000.2700    0.3100    0.60000.2500    0.3600    0.64000.1900    0.4800    0.7400
];

后注:两个面夹角为pi-acos(-1/sqrt(5)),同平面旋转为了五等分要转72度,因而yaw_z,和roll_x取值并不相同,代码和原文描述已经做出相应更改。

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

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

相关文章

Android应用开发-学生信息管理系统

设计目的 1、网上很少有关于SQLite简单综合项目的测试APP。 2、把自己所学的部分UI综合一下,希望能给新手一些帮助。 涉及知识点 1、包括SQLite的增删查找等功能。查找中加入了“模糊搜索”的功能。 2、RecyclerView展示 3、SharedPreference保存密码&#xff0c…

基于Android的班级管理APP的设计与实现

选题背景 在当代大学生的日常学习和生活中,手机已经成为必不可少的工具,这导致大学学习生活中的各种日常生活及学习事务需要通过手机作为媒介进行通知及处理。而目前市场上存在的各种社交软件(如QQ、微信等)并不是为大学生量身定…

团队博客————学生成绩管理系统

项目简介: 支持实现教师端的登录注册,增添、修改与删除学生信息,增添学生时学号自动生成;将学生成绩导入并按照总分排序,查询成绩并支持模糊匹配;可导出学生成绩到excel表格;可生成以分数段划分…

基于android的学生选课信息app

学生选课系统是一个学校不可缺少的部分,该系统可以快速方便的使学生完成课程的选修及选修课程的管理,让管理员方便的管理选修课和设置选修时间,教师也可以查看自己代的选修课和给学生录入成绩。 本软件是一个Android 客户端JSP Servlet服务端…

安卓学生管理系统

安卓学生管理系统是大三时的期末作业,这里附上github链接,给需要交作业的小朋友~ app截图如下:

Android 学生管理系统

Android学生管理系统 由android mysql实现 1.需求分析 功能需求和页面需求两天没有细想,想到啥功能写啥功能想到啥界面写啥界面 2.系统设计 总体界面结构参照了微信的设计结构,主要功能包括管理员的注册和登录,所有学生信息的查询、单个…

奏响风电数字化“协奏曲”,联想助力世优电气打造智能管理闭环

双碳目标之下,可再生能源行业的快速增长,以及能源电力企业降本增效的需求,使得智能化管理平台成为新能源企业数字化转型的关键选择。 这一点,湖南世优电气股份有限公司(以下简称“世优电气”)感触颇深。作为…

探访世优科技数字人虚拟直播产品体系 | 世优开放日再次成功举行

2023年5月30日,世优科技全栈技术产品体验活动(第二期)顺利落下帷幕。此次活动共邀请到30余位各行各业的嘉宾到场,在两个多小时的开放日活动中,世优科技全面展示数字人及虚拟直播领域的技术产品体系。来访嘉宾们全程体验…

斩获5项大奖,世优科技虚拟人驱动技术亮相2022亚洲VRAR博览会

2022第6届以“开放共建创造融合”为主题的亚洲VR&AR博览会于8月12日落下帷幕。在数字经济发展和5G时代的大浪潮下,VR/AR产业链正在迎来加速发展,这从博览会的现场盛况可见一斑,本届展会吸引了众多来自海内外的VR/AR领域专家、学者&#x…

世优科技虚拟数字人直播方案,助力企业品牌破局直播同质化难题

随着互联网的快速发展,短视频带货、直播带货行业呈现出井喷式发展,网络电商直播已经成长为一个巨大的产业。预计2026年,我国网络直播市场规模将超过2万亿元。直播的快速发展越来越深刻地影响人们的消费及生活方式。但火热的同时,也…

元宇宙世界杯来袭,虚拟数字人+虚拟场景开创世界杯观赛全新体验

距离万众期盼的2022卡塔尔世界杯开幕已不足一周,世界杯作为全球最负盛名的体育赛事,不仅是球迷的节日,更是属于全民的狂欢。在开赛之际,中国移动重磅发布世界杯“元宇宙”全新玩法,通过融合“虚拟技术融合创新”全量全…

iDWF互博会即将开幕,世优科技携虚拟人女娲及虚拟直播SaaS平台亮相

助力数字经济发展的新引擎,探索“元宇宙”的新窗口,链接政产学研用金的新平台,全景数字生活的超级体验馆。以“通向数字新世界”为主题,2022互联网技术与应用博览会(简称:iDWF互博会)即将于2022…

AI数字人产品“世优BOTA”发布会 ,世优科技上海发起人刘凯源演讲回顾

4月20日,世优(北京)科技有限公司正式发布了新一代AI数字人产品——“世优BOTA”。世优科技上海发起人刘凯源表示,“数字人是元宇宙重要生产力,世优BOTA是人机交互的里程碑式作品”。世优BOTA可以帮助企业快速实现自有数…

2022科大讯飞全球1024开发者节科技共创,AI创新正当时

数字经济已成为重组全球要素资源、重塑全球经济结构、改变全球竞争格局的关键力量。作为数字时代的核心引擎,人工智能正持续推动数万亿数字经济产业转型升级。 引领时代浪潮,科大讯飞全球1024开发者节,以AI开发者为受众群体,汇聚…

虚拟直播降低线上直播成本,虚拟直播如何助力企业抓住新风口?

近年来电商直播的渗透力在不断加强,但是直播形式单一,内容同质化等问题也逐渐显现,很多用户已经对电商直播产生了视觉疲劳。在这样的背景下,无论是平台还是品牌方,都想要寻求新技术、新模式,以实现直播新增…

山西文旅虚拟星推官“青鸟”亮相,世优科技提供虚拟人全栈技术支持

3月21日,由文化和旅游部资源开发司指导,山西省文化和旅游厅与太原市人民政府主办的2023数字文旅品牌创新大会在太原晋阳湖国际会议中心举行。 本次大会以“数字文旅美好生活”为主题,来自全国文旅业界的专家学者齐聚一堂,聚焦数字…

脑白金虚拟形象IP焕新升级,世优科技提供全栈式数字人制作支持

近日,脑白金虚拟形象迎来全新升级,在《球球大作战》7周年生日盛典之际,脑白金与球球大作战梦幻联动,推出了活力摇摆舞,重磅亮相央视六套。 世优科技通过实时虚拟数字人技术,将脑白金“老头、老太”和“球球…

咪咕视频卡塔尔世界杯XR虚拟直播,由世优科技提供虚拟技术支持

期待已久的2022卡塔尔世界杯,终于在北京时间11月21日0时拉开了帷幕。作为2022年卡塔尔世界杯足球赛的持权转播商,中国移动咪咕视频打造了国内首个“元宇宙”世界杯观赛空间,加上豪华解说天团,从科技、视觉、专业体育内容三条线路带…

世优科技助力京东手机双11虚拟直播,XR直播+九大虚拟场景

11月10日晚,京东通讯联合小米、三星、OPPO、华为、iQOO、vivo等品牌手机共创次元Phone狂城,以虚拟直播形式突破次元壁,为用户送上海量新机与好礼。在这次由京东、品牌、消费者合力共建的直播场,将发生对三方关系的一次全新构建&am…

世优科技斩获虎啸奖两项大奖,CEO纪智辉虎啸盛典发表主题演讲

6月1日至6月2日,2023虎啸盛典暨第十七届中国数字商业传播论坛、第十四届虎啸奖颁奖典礼在上海隆重举行,各方齐聚沪上,探讨2023年政策利好之下,行业向上生长,以数字技术推动中国经济增长的发展,从多维视角解…