七夕节快到了,教你用MATLAB绘制blingbling的大钻石

1效果

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

2程序说明

其实非常简单,只需要计算出各个顶点位置,并用fill3绘制一个个面出来即可,为了钻石的色彩更加丰富,我们用light函数设置了光照并为fill3创建出的PATCH对象设置了以下属性。

  • FaceAlpha 面透明度
  • EdgeAlpha 边透明度
  • FaceLighting 面照亮方式(是整个面相同颜色还是通过插值不同位置不同颜色)
  • EdgeLighting 边照亮方式(与面照亮方式类似)
  • SpecularStrength 镜面反射的强度
  • DiffuseStrength 散射光的强度
  • AmbientStrength 环境光的强度

其中:
若将PATCH属性由:

faceColor=[0 71 177];
facePara={faceColor./255,'FaceAlpha',0.6,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.3,...'FaceLighting','gouraud','EdgeLighting','gouraud',...'SpecularStrength',0.9,'DiffuseStrength',0.7,'AmbientStrength',0.7};  % 面参数

改为:

faceColor=[237 64 153];
facePara={faceColor./255,'FaceAlpha',0.4,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.2,...'FaceLighting','gouraud','EdgeLighting','gouraud',...'SpecularStrength',0.9,'DiffuseStrength',0.7,'AmbientStrength',0.6}; % 面参数

则钻石变成这个样子:
在这里插入图片描述
另:
大家可以猜猜下面这个钻石是咋画的:
在这里插入图片描述
在这里插入图片描述

3完整代码

function diamond
hold on
ax=gca;
axis equal
grid on
ax.GridLineStyle='--';
ax.LineWidth=1.2;
ax.XLim=[-2,2];
ax.YLim=[-2,2];
ax.ZLim=[-1.8,1.5];
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=[-67.6287 -204.5276   82.7879];light('Position',[5,6,5])thetaSet8=linspace(0,2*pi-pi/4,8)';
thetaSet16=linspace(0,2*pi-pi/8,16)';faceColor=[0 71 177];
facePara={faceColor./255,'FaceAlpha',0.6,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.3,...'FaceLighting','gouraud','EdgeLighting','gouraud',...'SpecularStrength',0.9,'DiffuseStrength',0.7,'AmbientStrength',0.7};  % 面参数% faceColor=[237 64 153];
% facePara={faceColor./255,'FaceAlpha',0.4,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.2,...
%       'FaceLighting','gouraud','EdgeLighting','gouraud',...
%       'SpecularStrength',0.9,'DiffuseStrength',0.7,'AmbientStrength',0.6}; % 面参数% 绘制最上方八边形
pntSet1=[cos(thetaSet8),sin(thetaSet8),ones(8,1)];
fill3(pntSet1(:,1),pntSet1(:,2),pntSet1(:,3),facePara{:})% 一圈8个三角形
pntSet2=[cos(thetaSet8+pi/8).*1.3,sin(thetaSet8+pi/8).*1.3,ones(8,1).*0.7];
for i=1:8p1=i;p2=mod(i,8)+1;p3=i;fill3([pntSet1([p1,p2],1);pntSet2(p3,1)],...[pntSet1([p1,p2],2);pntSet2(p3,2)],...[pntSet1([p1,p2],3);pntSet2(p3,3)],facePara{:})
end% 一圈8个四边形
pntSet3=[cos(thetaSet8).*1.7,sin(thetaSet8).*1.7,ones(8,1).*0.3];
for i=1:8p1=mod(i,8)+1;p2=i;p3=p1;p4=p1;fill3([pntSet1(p1,1);pntSet2(p2,1);pntSet3(p3,1);pntSet2(p4,1)],...[pntSet1(p1,2);pntSet2(p2,2);pntSet3(p3,2);pntSet2(p4,2)],...[pntSet1(p1,3);pntSet2(p2,3);pntSet3(p3,3);pntSet2(p4,3)],facePara{:})
end% 一圈16个三角形
pntSet4=[cos(thetaSet16).*1.7,sin(thetaSet16).*1.7,ones(16,1).*0.3];
for i=1:8p1=i;p2=2*i-1;p3=2*i;fill3([pntSet2(p1,1);pntSet4([p2,p3],1)],...[pntSet2(p1,2);pntSet4([p2,p3],2)],...[pntSet2(p1,3);pntSet4([p2,p3],3)],facePara{:})p2=2*i;p3=mod(2*i,16)+1;fill3([pntSet2(p1,1);pntSet4([p2,p3],1)],...[pntSet2(p1,2);pntSet4([p2,p3],2)],...[pntSet2(p1,3);pntSet4([p2,p3],3)],facePara{:})
end% 一圈16个四边角形
pntSet5=[cos(thetaSet16).*1.7,sin(thetaSet16).*1.7,ones(16,1).*0.15];
for i=1:16p1=i;p2=mod(i,16)+1;p3=mod(i,16)+1;p4=i;fill3([pntSet4(p1,1);pntSet4(p2,1);pntSet5(p3,1);pntSet5(p4,1)],...[pntSet4(p1,2);pntSet4(p2,2);pntSet5(p3,2);pntSet5(p4,2)],...[pntSet4(p1,3);pntSet4(p2,3);pntSet5(p3,3);pntSet5(p4,3)],facePara{:})
end
pntSet6=[cos(thetaSet8+pi/8).*0.4,sin(thetaSet8+pi/8).*0.4,ones(8,1).*(-1.15)];% 一圈16个长三角形
for i=1:8p1=i;p2=2*i-1;p3=2*i;fill3([pntSet6(p1,1);pntSet5([p2,p3],1)],...[pntSet6(p1,2);pntSet5([p2,p3],2)],...[pntSet6(p1,3);pntSet5([p2,p3],3)],facePara{:})p2=2*i;p3=mod(2*i,16)+1;fill3([pntSet6(p1,1);pntSet5([p2,p3],1)],...[pntSet6(p1,2);pntSet5([p2,p3],2)],...[pntSet6(p1,3);pntSet5([p2,p3],3)],facePara{:})
end% 一圈8个长四边形
pntSet7=[cos(thetaSet8).*1.7,sin(thetaSet8).*1.7,ones(8,1).*0.15];
for i=1:8p1=mod(i,8)+1;p2=i;p4=mod(i,8)+1;fill3([pntSet7(p1,1);pntSet6(p2,1);0;pntSet6(p4,1)],...[pntSet7(p1,2);pntSet6(p2,2);0;pntSet6(p4,2)],...[pntSet7(p1,3);pntSet6(p2,3);-1.5;pntSet6(p4,3)],facePara{:})end
end

4其他过节可能会用到的程序

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
!!!!点击图片跳转连接!!!!
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

4.1玫瑰花球

4.2樱花树

4.3立体爱心九宫格

4.4立体玫瑰花

4.5水晶爱心

4.6两款相册

-1紫色钻石

抱歉大家我确实不记得具体的参数了,不过下面这份代码大家可以试一下:
这份代码的效果:
在这里插入图片描述
在这里插入图片描述

需要注意的是,很多角度下并不会产生中间色,只会显示原本的粉色或紫色,只有一部分角度会有很绚丽的颜色,
另:该份代码中对光源的设置设置了两遍:

light('Position',[5,6,5])

这样确实会使钻石某些反射面亮度更高更绚丽。
以下是绘制两遍钻石的代码,大家可以对各个部分数据进行调整以获得更绚丽的效果:

function diamondx2
hold on
ax=gca;
axis equal
grid on
ax.GridLineStyle='--';
ax.LineWidth=1.2;
ax.XLim=[-2,2];
ax.YLim=[-2,2];
ax.ZLim=[-1.8,1.5];
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=[-67.6287 -204.5276   82.7879];light('Position',[5,6,5])
light('Position',[5,6,5])faceColor=[0 71 177];
facePara={faceColor./255,'FaceAlpha',0.4,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.2,...'FaceLighting','gouraud','EdgeLighting','gouraud',...'SpecularStrength',0.9,'DiffuseStrength',0.8,'AmbientStrength',0.7}; % 面参数 
drawDiamond(facePara)faceColor=[237 64 153];
facePara={faceColor./255,'FaceAlpha',0.4,'EdgeColor',faceColor./255.*0.8,'EdgeAlpha',0.2,...'FaceLighting','gouraud','EdgeLighting','gouraud',...'SpecularStrength',0.9,'DiffuseStrength',0.8,'AmbientStrength',0.7}; % 面参数 
drawDiamond(facePara) function drawDiamond(facePara)thetaSet8=linspace(0,2*pi-pi/4,8)';thetaSet16=linspace(0,2*pi-pi/8,16)';% 绘制最上方八边形pntSet1=[cos(thetaSet8),sin(thetaSet8),ones(8,1)];fill3(pntSet1(:,1),pntSet1(:,2),pntSet1(:,3),facePara{:})% 一圈8个三角形pntSet2=[cos(thetaSet8+pi/8).*1.3,sin(thetaSet8+pi/8).*1.3,ones(8,1).*0.7];for i=1:8p1=i;p2=mod(i,8)+1;p3=i;fill3([pntSet1([p1,p2],1);pntSet2(p3,1)],...[pntSet1([p1,p2],2);pntSet2(p3,2)],...[pntSet1([p1,p2],3);pntSet2(p3,3)],facePara{:})end% 一圈8个四边形pntSet3=[cos(thetaSet8).*1.7,sin(thetaSet8).*1.7,ones(8,1).*0.3];for i=1:8p1=mod(i,8)+1;p2=i;p3=p1;p4=p1;fill3([pntSet1(p1,1);pntSet2(p2,1);pntSet3(p3,1);pntSet2(p4,1)],...[pntSet1(p1,2);pntSet2(p2,2);pntSet3(p3,2);pntSet2(p4,2)],...[pntSet1(p1,3);pntSet2(p2,3);pntSet3(p3,3);pntSet2(p4,3)],facePara{:})end% 一圈16个三角形pntSet4=[cos(thetaSet16).*1.7,sin(thetaSet16).*1.7,ones(16,1).*0.3];for i=1:8p1=i;p2=2*i-1;p3=2*i;fill3([pntSet2(p1,1);pntSet4([p2,p3],1)],...[pntSet2(p1,2);pntSet4([p2,p3],2)],...[pntSet2(p1,3);pntSet4([p2,p3],3)],facePara{:})p2=2*i;p3=mod(2*i,16)+1;fill3([pntSet2(p1,1);pntSet4([p2,p3],1)],...[pntSet2(p1,2);pntSet4([p2,p3],2)],...[pntSet2(p1,3);pntSet4([p2,p3],3)],facePara{:})end% 一圈16个四边角形pntSet5=[cos(thetaSet16).*1.7,sin(thetaSet16).*1.7,ones(16,1).*0.15];for i=1:16p1=i;p2=mod(i,16)+1;p3=mod(i,16)+1;p4=i;fill3([pntSet4(p1,1);pntSet4(p2,1);pntSet5(p3,1);pntSet5(p4,1)],...[pntSet4(p1,2);pntSet4(p2,2);pntSet5(p3,2);pntSet5(p4,2)],...[pntSet4(p1,3);pntSet4(p2,3);pntSet5(p3,3);pntSet5(p4,3)],facePara{:})endpntSet6=[cos(thetaSet8+pi/8).*0.4,sin(thetaSet8+pi/8).*0.4,ones(8,1).*(-1.15)];% 一圈16个长三角形for i=1:8p1=i;p2=2*i-1;p3=2*i;fill3([pntSet6(p1,1);pntSet5([p2,p3],1)],...[pntSet6(p1,2);pntSet5([p2,p3],2)],...[pntSet6(p1,3);pntSet5([p2,p3],3)],facePara{:})p2=2*i;p3=mod(2*i,16)+1;fill3([pntSet6(p1,1);pntSet5([p2,p3],1)],...[pntSet6(p1,2);pntSet5([p2,p3],2)],...[pntSet6(p1,3);pntSet5([p2,p3],3)],facePara{:})end% 一圈8个长四边形pntSet7=[cos(thetaSet8).*1.7,sin(thetaSet8).*1.7,ones(8,1).*0.15];for i=1:8p1=mod(i,8)+1;p2=i;p4=mod(i,8)+1;fill3([pntSet7(p1,1);pntSet6(p2,1);0;pntSet6(p4,1)],...[pntSet7(p1,2);pntSet6(p2,2);0;pntSet6(p4,2)],...[pntSet7(p1,3);pntSet6(p2,3);-1.5;pntSet6(p4,3)],facePara{:})endend
end

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

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

相关文章

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

效果如下: 原理 玫瑰绘制 要画花球我们要先会绘制一朵花: 如何画一朵花可以看看这篇:MATLAB 3D玫瑰花绘制 三维坐标变化 主要用下面的坐标变化方法: 正十二面体球 想像这里有一个正十二面体球,我们把每一面放上…

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…