Simple version:(最简单的方程了)
绘制空间曲线:
[X,Y,Z]=sphere(50);
mesh(8*X,8*Y,8*Z)
hold on;
ezmesh('0-y',[-8,8])
axis equal
view(135,0)
figure
[x,y,z]=meshgrid(linspace(-8,8));
contourslice(x,y,z,y+z,8*X,8*Y,8*Z,[0 0])%画交线
axis equal
view(135,20)
figure
[X Y Z]=sphere(50);
mesh(2*X,2*Y,2*Z);
hold on;
[x y z]=cylinder(1,100);%圆柱
x=x+1;y=y;z=4*z-2;
mesh(x,y,z);
axis equal
view(135,20)
figure
[x,y,z]=meshgrid(linspace(-2,2));
contourslice(x,y,z,(x-1).^2+y.^2-1,2*X,2*Y,2*Z,[0 0])%画交线
axis equal
view(135,20)
但是,上面的方法求解的是交线,显然不是符合题意的,于是我百度了下,找到了一种方法:
问题是求解:xx+yy+zz=rr和xx+yy=r*x的交面
r=2;
t=linspace(0,2);
q=linspace(-2,2);
[x,y,z]=meshgrid(t,q/2,q);
c=cat(4,x.^2+y.^2+z.^2-r^2,x.^2+y.^2-r*x);
v=max(c,[],4);
isosurface(x,y,z,v,0);
axis equal;grid on;view(135,20);
C = cat(dim, A1, A2, A3, A4, ...)
沿数组维度 dim 串联所有输入数组(A1、A2、A3、A4 等等)。
fv = isosurface(X,Y,Z,V,isovalue)
基于 isovalue 中指定的等值面值处的体数据 V 计算等值面数据。即等值面连接具有指定值的点,与等高线连接仰角相同的点的方式大致相同。