特别感谢
B站作者@基山督的 视频及源代码
相关推荐
三维心心代码
hn=figure('name','心心心','color','k'); %创建一个界面,名字是心心心,界面背景是黑色
[x,y,z]=meshgrid(linspace(-3,3)); %做出网格,linspace生成-3到3之间的数值,默认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函数
- 函数调用:
-
- lightangle(az,el): 在由方位角和仰角确定的位置放置光源
-
- light_handle= lightangle(az,el) :创建一个光源位置并在light_handle中返回light的句柄
-
- lightangle(light_handle,az,el) :设置由light_handle确定的光源位置
-
- [az,el] = lightangle(light_handle) :返回由light_handle确定的光源位置的方位角和仰角
3.lighting照明函数
- lighting flat :在对象的每个面上产生均匀的灯光。选择此方法可查看镶嵌面对象。
- lighting gouraud :计算顶点法线并沿面进行线性插值。选择此方法可查看曲面。
- lighting phong :在每个面上插值顶点法线并计算每个像素处的反射率。选择此选项可查看曲面。Phong lighting通常比Gouraud lighting产生更好的效果,但渲染需要更长的时间
- lighting none :关闭照明
四:均分计算指令
- 调用函数:
-
- logspace(a, b, n):生成一个数组,数据的第一个元素值为a,最后一个元素为b,n是总采样点数。需要注意的是,此时产生的数组元素在10a到10b上并不是均匀分布的,而形成一个对数曲线。
-
- logspace(x1,x2):用于产生x1,x2之间的N点行线性的矢量。