资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实验名称:旋转曲面图形绘制-谢煜 200820501024一、 问题阐述:二、 问题分析:该问题应归于三维可视化的范畴,问题中的函数形式已给出,通过计算函数在分段点的函数值和一阶导数值,我们可以知道,该函数曲线是光滑的。如果按照“经典”的绘图方法,我们应该找到对应平面的对应点函数值(正如一幅数码图片那样对应平面上点的函数值),然后使用MATLAB中命令surf或mesh来绘出我们的图形。但是我们注意到,对于特定的操作(旋转),也许这样并不是一个很好的方法。我们知道,一个旋转曲面的两个要素是截面曲线和旋转轴。我们可以通过这两个步骤得到一个特定的旋转曲面。1. 指定截面曲线;2. 指定旋转轴。我们同时可以将旋转曲面的形成过程看作是某个具有特定形状的截面曲线对一个圆柱体进行“变形”。基于这样的思想,我们可以用一下两个步骤得到一个特定的旋转曲面:1. 生成一个单位高度单位半径的圆柱体;2. 将截面曲线的形状应用到该矩形截面上;3. 对旋转曲面的高度进行缩放。三、实验内容(包含程序及其注释,实验输出及其分析)接下来第一步我们还是先用一个简单的程序看看截面曲线的样子,绘出如图1所示的曲线,有点像给出的飞机机翼截面的上半部分,也有点像鲸的头部。图1 截面曲线接下来我们按照要求,先计算对应的y和z,得到如下表1中所列数据,表1 对应三轴数据然后,按照我们的思路,应该先生成一个单位高度圆柱体,然后应用截面,再伸缩长度,在MATLAB里面,有一个命令cylinder可以直接生成圆柱体,并且还可以指定截面函数,这样三步就完成前两步,我们只需要将X轴的数据进行放大即图形上的伸缩即可。唯一需要说明的是,由于问题中X轴是横的,而cylinder命令默认旋转轴是Z轴,我们可以将返回的数值顺序调换一下,将X的数据放在Z轴数据的位置。如下命令:最后,我们用以下命令绘出图形,图形如图2所示。这个旋转曲面形状像一个陨石在大气层中燃烧产生的焰火,当然,我觉得也像一个望着大家的眼球。图2 旋转曲面图形至此,本实验所包含的基本问题就得到解决。下面我们来生成一个有趣的图形。展示了一个“逃出”的情景。如图3,所用程序一并给出。图3 多个旋转曲面组成的图形四、 实验结论通过这个实验我们解决了给出的基本问题,并发展出一种更方便的绘制旋转曲面的方法。这种方法也说明我们采取的解决方法和我们看待事物的角度有密切联系。有意识的突破自己思维的局限性,学习、生活和工作中会充满更多的乐趣。用matlab怎么绘制一条曲线绕z轴旋转生成的曲面?已知数据如下:x z y-398.10815554637100 391.8559758318630 690.066133543041 -381.07955594867500 424.8310441553090 658.180381257343 -360.31045913580800 454.9810420379280 624.438172164358 -340.77979331967200 480.0490258857480 589.871036254153 -320.70280893650000 501.0456858777910 554.852570812195 -299.82431813457700 518.2155766324390 519.823513346336 -279.71207016838500 531.7446721639860 484.240629766611 -259.24117791020500 541.8367285151120 449.014948124588 -239.00970860829800 548.6904840829760 413.976780343287 -218.96623482661700 552.4832393130960 379.260454228704 -199.13368646014500 553.3595194667750 344.899655271289 -179.49937951068700 551.4224547392160 310.901650657030 -160.05853897239600 546.7258057477280 277.229604984912 -140.73497483322400 539.2644101927670 243.852173648710 -121.15977918590600 528.9596832738090 210.871041265296 -101.65161274937100 515.6373668302500 177.947981974895 -84.00653665377710 498.9885863466380 143.830455838681 -64.35915615835300 478.4857769773050 110.443195592555 -44.23457579408930 453.3382051141650 76.621451887220 -25.81056754057310 422.9803472875990 41.709372091224 -6.74982846277030 390.5455060023060 12.023208187747 这些数据可以生成空间三维曲线,我想要这个曲线绕z轴旋转一周得到的曲面,怎么弄,要程序,多谢了。data = -398.10815554637100 391.8559758318630 690.066133543041 -381.07955594867500 424.8310441553090 658.180381257343 -360.31045913580800 454.9810420379280 624.438172164358 -340.77979331967200 480.0490258857480 589.871036254153 -320.70280893650000 501.0456858777910 554.852570812195 -299.82431813457700 518.2155766324390 519.823513346336 -279.71207016838500 531.7446721639860 484.240629766611 -259.24117791020500 541.8367285151120 449.014948124588 -239.00970860829800 548.6904840829760 413.976780343287 -218.96623482661700 552.4832393130960 379.260454228704 -199.13368646014500 553.3595194667750 344.899655271289 -179.49937951068700 551.4224547392160 310.901650657030 -160.05853897239600 546.7258057477280 277.229604984912 -140.73497483322400 539.2644101927670 243.852173648710 -121.15977918590600 528.9596832738090 210.871041265296 -101.65161274937100 515.6373668302500 177.947981974895 -84.00653665377710 498.9885863466380 143.830455838681 -64.35915615835300 478.4857769773050 110.443195592555 -44.23457579408930 453.3382051141650 76.621451887220 -25.81056754057310 422.9803472875990 41.709372091224 -6.74982846277030 390.5455060023060 12.023208187747 ;x = data(:,1);y = data(:,3);z = data(:,2);r = sqrt(x.2+y.2); % 绕z轴旋转,求各点到z轴的距离r,即旋转半径n = length(z);alpha = linspace(-pi,pi,n);xx = r * cos(alpha); % 前面的x,y,z是列向量,r就是列向量,列向量*行向量生成n阶矩阵yy = r * sin(alpha);zz = z * ones(1,n);mesh(xx,yy,zz) % 之后可以用hidden off来关闭透视效果。%或者这里用surf(xx,yy,zz)来画也可以。matlab曲线绕轴生成曲面的问题,急!用动画演示曲线x=1-y2 绕 x 轴旋转产生旋转曲面的过程!跪求高手解决!急!t=-2:0.01:1;r=sqrt(1-t);y,z,x=cylinder(r,30);h=mesh(x,y,z);colormap(jet)axis onn=12;mmm=moviein(n);for i=1:n rotate(h,1 0 0,25) mmm(i)=getframe;endmovie(mmm,10,10)我是刚学matlab,请多多指教。k=100;r=linspace(0,1);t=linspace(0,2*pi,k);r,t=meshgrid(r,t);x=1-r.2;y=r.*sin(t);z=r.*cos(t);for n=2:kmesh(x(1:n,:),y(1:n,:),z(1:n,:);axis(0 1 -1 1 -1 1 -1 1);drawnowendMATLAB中如何设置坐标轴的显示长度1. 绘制二维曲线的最基本函数plot 2.双纵坐标函数plotyy 3. 坐标控制 函数的调用格式为: axis(xmin xmax ymin ymax zmin zmax) axis函数功能丰富,常用的用法还有: axis equal 纵、横坐标轴采用等长刻度 axis square 产生正方形坐标系(缺省为矩形) axis auto 使用缺省设置 axis off 取消坐标轴 axis on 显示坐标轴 grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。 box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。 4.图形窗口的分割 su
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号