《使用Matlab画出圆台圆锥圆柱.pdf》由会员分享,可在线阅读,更多相关《使用Matlab画出圆台圆锥圆柱.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、用 Matlab 画圆柱圆台圆锥 自己建一个 M 文件,命名任意,如 在命令窗口输入:tu%以下为文件 clc clear all%圆柱 X,Y,Z=cylinder,20);h=*Z;surf(X,Y,h);hold on%圆台 a=25/180*pi;%可修改 b=180*pi;%可修改 r=;%可修改 h1=r*sin(a+b)/sin(a-b)*sin(a);%h1=;X1=0 0;%底面中心坐标 X2=0 0+h1;%顶面中心坐标 L2=L2;n=20;cyl_color=b;closed=1;lines=1;cone,EndPlate1,EndPlate2=Cone(X1,X2,r
2、,n,cyl_color,closed,lines)%调用圆台的函数%圆锥 X2,Y2,Z2=cylinder(L2:0);h2=;%可修改 Z2=h2*Z2;Z2=Z2+ones(size(Z2)*+h1);surf(X2,Y2,Z2);grid on%r=0:;R=0:;%alpha=0:pi/20:2*pi;%角度0,2*pi%x=R*cos(alpha);%y=R*sin(alpha);%a=;b=;%h=+R.*tan(b)+r.*sin(a);%x,y=meshgrid(-4:4);%surf(h)新建一个 M 文件,如下命名为 function Cone,EndPlate1,En
3、dPlate2=Cone(X1,X2,R,n,cyl_color,closed,lines)%This function constructs a cylinder connecting two center points%Usage:%Cone,EndPlate1,EndPlate2=Cone(X1,X2,R,n,cyl_color,closed,lines)%Cone-Handle of the cone%EndPlate1-Handle of the Starting End plate%EndPlate2-Handle of the Ending End plate%X1 and X2
4、 are the 3x1 vectors of the two points%R is the radius of the cylinder/cone R(1)=start radius,R(2)=end radius%n is the no.of elements on the cylinder circumference(more-refined)%cyl_color is the color definition like r,b,%closed=1 for closed cylinder or 0 for hollow open cylinder%lines=1 for display
5、ing the line segments on the cylinder 0 for only%surface%Typical Inputs%X1=10 10 10;%X2=35 20 40;%r=1 5;%n=20;%cyl_color=b;%closed=1;%NOTE:There is a MATLAB function cylinder to revolve a curve about an%axis.This Cylinder provides more customization like direction and etc%圆台的函数,文件名为%Calculating the
6、length of the Cone length_cyl=norm(X2-X1);%Creating 2 circles in the YZ plane t=linspace(0,2*pi,n);xa2=R(1)*cos(t);xa3=R(1)*sin(t);xb2=R(2)*cos(t);xb3=R(2)*sin(t);%Creating the points in the X-Direction x1=0 length_cyl;%Creating(Extruding)the cylinder points in the X-Directions xx1=repmat(x1,length(
7、xa2),1);xx2=xa2 xb2;%xx2=repmat(x2,1,2);xx3=xa3 xb3;%xx3=repmat(x3,1,2);%Drawing two filled cirlces to close the cylinder if closed=1 hold on EndPlate1=fill3(xx1(:,1),xx2(:,1),xx3(:,1),r);EndPlate2=fill3(xx1(:,2),xx2(:,2),xx3(:,2),r);end%Plotting the cylinder along the X-Direction with required leng
8、th starting%from Origin Cone=mesh(xx1,xx2,xx3);%Defining Unit vector along the X-direction unit_Vx=1 0 0;%Calulating the angle between the x direction and the required direction%of Cone through dot product angle_X1X2=acos(dot(unit_Vx,(X2-X1)/(norm(unit_Vx)*norm(X2-X1)*180/pi;%Finding the axis of rot
9、ation(single rotation)to roate the Cone in%X-direction to the required arbitrary direction through cross product axis_rot=cross(1 0 0,(X2-X1);%Rotating the plotted Cone and the end plate circles to the required%angles if angle_X1X2=0%Rotation is not needed if required direction is along X rotate(Con
10、e,axis_rot,angle_X1X2,0 0 0)if closed=1 rotate(EndPlate1,axis_rot,angle_X1X2,0 0 0)rotate(EndPlate2,axis_rot,angle_X1X2,0 0 0)end end%Till now Cone has only been aligned with the required direction,but%position starts from the origin.so it will now be shifted to the right%position if closed=1 set(En
11、dPlate1,XData,get(EndPlate1,XData)+X1(1)set(EndPlate1,YData,get(EndPlate1,YData)+X1(2)set(EndPlate1,ZData,get(EndPlate1,ZData)+X1(3)set(EndPlate2,XData,get(EndPlate2,XData)+X1(1)set(EndPlate2,YData,get(EndPlate2,YData)+X1(2)set(EndPlate2,ZData,get(EndPlate2,ZData)+X1(3)end set(Cone,XData,get(Cone,XD
12、ata)+X1(1)set(Cone,YData,get(Cone,YData)+X1(2)set(Cone,ZData,get(Cone,ZData)+X1(3)%Setting the color to the Cone and the end plates set(Cone,AmbientStrength,1,FaceColor,cyl_color,FaceLighting,gouraud);%,EdgeColor,none)if closed=1 set(EndPlate1 EndPlate2,AmbientStrength,1,FaceColor,cyl_color,FaceLigh
13、ting,gouraud);%,EdgeColor,none)else EndPlate1=;EndPlate2=;end%If lines are not needed making it disapear if lines=0 set(Cone,EdgeAlpha,0)end%shading faceted%faceted flat interp;%camlight;%light;%lighting gouraud;%flat gouraud phong none material shiny;%shiny dull metal%colormap(bone)%camlight headlight;%light(Style,local,Position,720 0 500);%light(Style,local,Position,0 480 500);参考文献: