前言
在学习三重积分时,我自己构想出对应的三维图像较为困难;如果多个三维图像相交,去研究其中的交线的特点,则更为困难。所以想试试三维图像可视化。
通过百度发现,三维图像可视化一般有Matlab
和python
两种工具可用。这里以matlab
为例,python
的方案需要在开发环境的基础上安装许多包,比较复杂且耗时。
例子
这里我想知道(V)
的区域的具体情况,可以借助matlab
实现可视化
代码细节
创建柱面
[x,y,z1] = cylinder(1, 100); % 圆半径为1,用100个边逼近它
h=5;
z1=[z1(1,:);z1(2,:)+h-1]; % 圆柱高增高,变为高h
mesh(x+1,y,z1) % 圆柱底面圆心为(1,0)
保持上一个图形不消失
hold on; % 保持图形
创建锥面
[x,y] = meshgrid(-2:0.1:2, -2:0.1:2); % -2<=x<=2且步进值为0.1
z2 = sqrt(x.^2+y.^2);
mesh(x,y,z2);
标出坐标轴
xlabel('x'),ylabel('y'),zlabel('z')
效果
窗口工具介绍
平移(红框)
在三维视角不变的情况下,左右上下移动三维图像
三维旋转(绿框)
转动三维视角,可以查看三维图像的各个角度的细节
数据游标(蓝框)
点击后,再在三维图中点击某点,即可显示坐标。
显示坐标后,可以用鼠标拖动数据点。
数据游标在三维坐标系中只能显示面上的点的坐标,而不能显示空间中任意一点的坐标。
注意
matlab
用特定的函数画函数图像会受到限制,比如,sqrt
会限制根号下的函数值只能为非负数,所以,如果要表示
z
=
4
−
x
2
−
y
2
z=\sqrt{4-x^2-y^2}
z=4−x2−y2,需要提前对
x
x
x和
y
y
y进行限制,使根号下的式子永远不为0。
例子
代码细节
创建马鞍面
[x,y] = meshgrid(-2:0.1:2, -2:0.1:2); % -2<=x<=2且步进值为0.1
z1 = x.*y;
mesh(x,y,z1);
hold on;
通过极坐标创建椭圆柱面
theta=0:0.1:2.0*pi+0.1; % 0≤φ<2π
a=1;
b=2;
x=a*cos(theta);
y=b*sin(theta);
z=-5:0.5:5;
X=ones(length(z),1)*x; % length(z)行1列矩阵
Y=ones(length(z),1)*y;
Z=z'*ones(1,length(x)); % z将矩阵转置
surf(X,Y,Z);