matlab实例——三维心心图

特别感谢

B站作者@基山督的 视频及源代码

相关推荐

二维动态心见往期

三维心心代码

hn=figure('name','心心心','color','k');		%创建一个界面,名字是心心心,界面背景是黑色
[x,y,z]=meshgrid(linspace(-3,3)); 			%做出网格,linspace生成-33之间的数值,默认100个。
F=((-(x.^2) .* (z.^3) -(9/80).*(y.^2).*(z.^3)) + ((x.^2) + (9/4).* (y.^2) + (z.^2)-1).^3);     %笛卡尔座标系下的心型函数,隐函数。高数书附录里有
isosurface(F,0);							%基于指定的0处的体数据 V 计算等值面数据
lighting phong								%光照模式。
axis equal   								%等比座标轴
axis off     								%去除座标轴
%brighten(0); 								%增加亮度
a=[1 1 1];
colormap(a); 								%设置心心的颜色和a代表的rgb颜色相同
view([0 1800]); 							%代表打开时的视角

在这里插入图片描述

练习三维球

T1=figure('name','xiazuo','color','w');        %设置一个名为“正方体”的窗口,背景颜色为黑色
[x,y,z]=meshgrid(linspace(-3,3));
F=(x.^2+y.^2+z.^2+x+y+z);
isosurface(F,0);        %隐函数绘图
lighting phong%不要加“;”
axis equal%不要加“;”
axis off%不要加“;”
A=[0 1 1];
colormap(A);
view([30,90]);

在这里插入图片描述

一、isosurface

isosurface函数可以画隐函数的等值曲线或曲面

二、meshgrid

于生成网格采样点的函数。在使用MATLAB进行3D图形绘制方面有着广泛的应用。

三、光源位置及照明模式

在绘制带光照的三维图像时,可以利用light命令与lightangle命令来确定光源位置。

1.light函数

  • 函数调用:light(‘color’, s1, ‘style’, s2, ‘position’, s3)
  • 含义:其中color、style与position的位置可以互换,s1,s2,s3为相应的可选值。例如light(‘position’,[1 0 0])表示光源从无穷远处沿x轴向原点照射过来。

2.lightangle函数

  • 函数调用:
    1. lightangle(az,el): 在由方位角和仰角确定的位置放置光源
    1. light_handle= lightangle(az,el) :创建一个光源位置并在light_handle中返回light的句柄
    1. lightangle(light_handle,az,el) :设置由light_handle确定的光源位置
    1. [az,el] = lightangle(light_handle) :返回由light_handle确定的光源位置的方位角和仰角

3.lighting照明函数

  • lighting flat :在对象的每个面上产生均匀的灯光。选择此方法可查看镶嵌面对象。
  • lighting gouraud :计算顶点法线并沿面进行线性插值。选择此方法可查看曲面。
  • lighting phong :在每个面上插值顶点法线并计算每个像素处的反射率。选择此选项可查看曲面。Phong lighting通常比Gouraud lighting产生更好的效果,但渲染需要更长的时间
  • lighting none :关闭照明

四:均分计算指令

  • 调用函数:
    1. logspace(a, b, n):生成一个数组,数据的第一个元素值为a,最后一个元素为b,n是总采样点数。需要注意的是,此时产生的数组元素在10a到10b上并不是均匀分布的,而形成一个对数曲线。
    1. logspace(x1,x2):用于产生x1,x2之间的N点行线性的矢量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章