在学习三重积分时,我自己构想出对应的三维图像较为困难;如果多个三维图像相交,去研究其中的交线的特点,则更为困难。所以想试试三维图像可视化。
通过百度发现,三维图像可视化一般有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);
知乎_十种常用二次曲面及其matlab绘制