MATLAB画三维图时如何画相交部分
(2014-08-31 00:38:48)
标签:
matlab画图三维相交交集 |
分类: matlab |
matlab算法及编程咨询,画图,解方程组,最优化:http://shop108557885.taobao.com
总结:1直接求出相交点:(1)两直线相交
画某范围内的三维区域,可以同样利用判断解决。
转自《工程计算可视化与MATLAB实现》尚涛等编著
(1)两直线相交
function
%
A1=Y1(1)-Y1(2);
C1=Y1(2)*X1(1)-Y1(1)*X1(2);
B2=X2(2)-X2(1);
C2=Y2(2)*X2(1)-Y2(1)*X2(2);
调用格式:
x1=[1
plot(x2,y2,\'b\');
(2)直线与多条直线相交
xi=[1
x1=[1
x2=xi([i
(3)直线与曲线相交
x=-8:0.1:8;
[X,Y]=meshgrid(x,y);
y=(y(2)-y(1))/(x(2)-x(1))*(x-x(1))+y(1);
X=c(:,1);
xx=r0.*X;
plot(xx(r0~=0),yy(r0~=0),\'r\')
(4)曲线与曲线相交
x=0:pi/400:2*pi;
y1=sin(pi*x);y2=cos(pi*x);plot(x,y1,x,y2);hold
yy=r0.*y1;xx=r0.*x;plot(xx(r0~=0),yy(r0~=0),\'r.\')
(5)直线与曲面相交
x=-8:0.3:8;y=x;[X,Y]=meshgrid(x,y);
x=[-10
(abs(Y-y(1)-(y(2)-y(1))/(z(2)-z(1))*(Z-z(1)))<=0.45);
plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),\'r*\');
(6)平面与曲面相交
x=-8:0.1:8;
y=x;
[X,Y]=meshgrid(x,y);
mesh(X,Y,Z2);
r0=(abs(Z1-Z2)<=.65);
zz=r0.*Z1;yy=r0.*Y;xx=r0.*X;
plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),\'k*\')
disp(\'观察曲面后,按任意键画交线\');
plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),\'k*\');
%曲面与多个截平面相交
[Z,Y]=meshgrid(z,y);
X1=0*ones(size(Z));
r3=(abs(X3-X)<0.05);
zz1=r1.*Z4;yy1=r1.*Y;xx1=r1.*X;
zz3=r3.*Z4;yy3=r1.*Y;xx3=r1.*X;
plot3(xx1(r1~=0),yy1(r1~=0),zz1(r1~=0),\'k*\');
clc;
disp(\'观察曲面后,按任意键画交线\');
(7)平面与曲面相交
y=-8:0.4:8;
z=y;
[Z,Y]=meshgrid(z,y);
X1=zeros(size(Z));
r1=(abs(X1-X)<0.05);
r2=(abs(Z3-Z2)<0.05);
r3=(abs(X1-X)<0.05)&(abs(Z-Z2)<=0.05);
plot3(xx1(r1~=0),yy1(r1~=0),zz1(r1~=0),\'k*\');
colormap(hsv);
(8)曲面与曲面求交
[x,y]=meshgrid(-2:.1:2);
mesh(x,y,z1);
hold
mesh(x,y,z2);
r0=(abs(z1-z2)<=.1);
zz=r0.*z1;yy=r0.*y;xx=r0.*x;
plot3(xx(r0~=0),yy(r0~=0),zz(r0~=0),\'k*\')