毕业论文 - 基于随机模型的海水运动过程的仿真_第1页
毕业论文 - 基于随机模型的海水运动过程的仿真_第2页
毕业论文 - 基于随机模型的海水运动过程的仿真_第3页
毕业论文 - 基于随机模型的海水运动过程的仿真_第4页
毕业论文 - 基于随机模型的海水运动过程的仿真_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上海第二工业大学本科毕业设计(论文)上海第二工业大学本科毕业设计(论文)本科毕业论文题目:基于随机模型的海水运动过程的仿真学生:专业:电子信息工程年级:指导教师:日期:

基于随机模型的海水运动过程的仿真摘要:数字图像处理技术是20世纪60年代发展起来的一门新兴学科,海水仿真在虚拟训练系统、3D游戏中有着广泛的应用,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个仿真领域得到了广泛应用,并显示出广阔的应用前景。Matlab系统提出的海水运动过程的仿真,建立在随机模型的基础上,用户只需要对海水运动过程的特性有一般性了解,就可以调整该系统的参数,同时该系统的模拟效果较为逼真,是一种非迭代算法,实时性较好。本课题分析了海水仿真在虚拟现实技术中的地位,针对现有海水仿真技术的不足将风噪声模型应用于虚拟现实海水仿真技术中,可以用改变参数的方式来选择影响海水动态性能的两个重要因素风强和海水类型,用Matlab能表现出海水运动的基本特性。本课题对目前电影、动画、虚拟现实等动态三维设计将起到一定的推动作用。关键词:三维海水;Matlab系统;虚拟仿真;噪声;动态图像;ThesimulationofseawatermotionbasedAbstract:Digitalimageprocessingtechnologyisanewsubjectdevelopedinthe20thcentury,60years,Withtheimageprocessingtheoryandmethodstofurtherimprove,makingthedigitalimageprocessingtechnologyinvariousfieldshasbeenwidelyappliedAndshowabroadapplicationprospects.Thesimulationofwatermovementprocessproposedbymatlabsystem,builtonthebasisofrandommodel,theuserneedonlytohavegeneralunderstandingofthecharacteristicsofthemovementprocess,canadjusttheparametersofthesystem,atthesametimethesystemsimulationresultsaremorerealistic,andit'sakindofiterativealgorithm,betterinrealtime.Thisresearchhasanalysisedthestatusofseawatersimulationinvirtualrealistictechnologyfield,andithasdirectedtowardsthedeficiencyofseawatersimulation,takingthewindyandnosiymodelintovirtualrealisticseawatersimulationtechnology.aimingatinfluencethetwoimportantelementswhichiswindandseawaterbythewayofchangingtheparameters.ItalsocanusetheMatlabtodisplaythebasicpropertyofseawatermovinginthewind.Thefocuswillhaveaneffectondynamic3Ddesignsuchascurrentmovie,cartoon,virtualreality.Keywords:3Dseawater;Matlabsystem;windnoise;virtualreality;simulation目录TOC\o"1-3"\h\u190981绪论 1108911.1课题背景 1165861.1.1海水运动形式 111031.1.2虚拟仿真技术的主要内容 3280741.2仿真的应用及过程 44581.2.1仿真的应用 4207401.2.2仿真的过程 530571.3课题的主要研究内容 7161351.3.1海水运动曲线的模拟 784781.3.2海水三维曲面的建立 736801.3.3海水运动过程的仿真 727922三维海水仿真模型 8256602.1风噪声的应用 8137382.2MATLAB函数 827062.2.1直接绘图函数 8194412.2.2网格法绘制三维曲面 10134402.3海水三维模型的建立与调试 11281582.3.1点到二维曲线 12154762.3.2二维曲线到三维曲面 1789433动态海水的模拟 26291423.1海水运动过程的算法 26220893.2海水动态仿真的实现与调试 27278824总结 29304094.1本课题中所完成的工作 29253064.2遇到的问题及解决 29268234.3本课题的研究结论 29784致谢 3120660参考文献 3228734附录 32PAGE11绪论1.1课题背景海水波浪的运动十分复杂,虽然流体力学对其研究比较深入,可以用数学模型对流体运动变化进行比较精确的描述,但对海浪的真实渲染不但要考虑计算机生成的真实感,还要考虑运算量的大小。模型过于复杂,会使运算量过于庞大,无法实现仿真,而模型过于简单,又会影响计算机生成图像的真实感。波浪是自然界最为常见的现象,虽然很难准确的描述其形状,却为人们所熟悉。虽然在流体力学上有描述流体运动的方程,但由于该方程主要用于科学计算,并不适用于计算机场景仿真建模,因此要用其他的建模方法对海水进行建模。同时这样的建模方法所得到的结果必须符合人们对海浪的一般认识,因此,使用计算机生成令人信服的实时性较高且较强真实感的波浪的图像比较困难。目前海水仿真模型主要分为两类:一类是基于几何的模型,几何模型计算量比较小,容易实现对海水的实时动态模拟绘制;二是基于物理的模型,它从流体力学的基本方程出发,根据其近似模拟计算出海水。海水仿真属于虚拟现实技术领域。1.1.1海水运动形式●波浪:海水受海风的作用和气压变化等影响,促使它离开原来的平衡位置,而发生向上、向下、向前和向后方向运动。这就形成了海上的波浪。波浪是一种有规律的周期性的起伏运动。当波浪涌上岸边时,由于海水深度愈来愈浅,下层水的上下运动受到了阻碍,受物体惯性的作用,海水的波浪一浪叠一浪,越涌越多,一浪高过一浪。与此同时,随着水深的变浅,下层水的运动,所受阻力越来越大,以至于到最后,它的运动速度慢于上层的运动速度,受惯性作用,波浪最高处向前倾倒,摔到海滩上,成为飞溅的浪花.●潮汐:由于日、月引潮力的作用,使地球的岩石圈、水圈和大气圈中分别产生的周期性的运动和变化的总称。固体地球在日、月引潮力作用下引起的弹性—塑性形变,称固体潮汐,简称固体潮或地潮;海水在日、月引潮力作用下引起的海面周期性的升降、涨落与进退,称海洋潮汐,简称海潮;大气各要素(如气压场、大气风场、地球磁场等)受引潮力的作用而产生的周期性变化(如8、12、24小时)称大气潮汐,简称气潮。其中由太阳引起的大气潮汐称太阳潮,由月球引起的称太阴潮。因月球距地球比太阳近,月球与太阳引潮力之比为11:5,对海洋而言,太阴潮比太阳潮显著。地潮、海潮和气潮的原动力都是日、月对地球各处引力不同而引起的,三者之间互有影响。大洋底部地壳的弹性—塑性潮汐形变,会引起相应的海潮,即对海潮来说,存在着地潮效应的影响;而海潮引起的海水质量的迁移,改变着地壳所承受的负载,使地壳发生可复的变曲。气潮在海潮之上,它作用于海面上引起其附加的振动,使海潮的变化更趋复杂。作为完整的潮汐科学,其研究对象应将地潮、海潮和气潮作为一个统一的整体,但由于海潮现象十分明显,且与人们的生活、经济活动、交通运输等关系密切,因而习惯上将潮汐(tide)一词狭义理解为海洋潮汐。●洋流:洋流又称海流,海洋中除了由引潮力引起的潮汐运动外,海水沿一定途径的大规模流动。引起海流运动的因素可以是风,也可以是热盐效应造成的海水密度分布的不均匀性。前者表现为作用于海面的风应力,后者表现为海水中的水平压强梯度力。加上地转偏向力的作用,便造成海水既有水平流动,又有铅直流动。由于海岸和海底的阻挡和摩擦作用,海流在近海岸和接近海底处的表现,和在开阔海洋上有很大的差别。大洋中深度小于二三百米的表层为风漂流层,行星风系作用在海面的风应力和水平湍流应力的合力,与地转偏向力平衡后,便生成风漂流。行星风系风力的大小和方向,都随纬度变化,导致海面海水的辐合和辐散。一方面,它使海水密度重新分布而出现水平压强梯度力,当它和地转偏向力平衡时,在相当厚的水平层中形成水平方向的地转流;另一方面,在赤道地区的风漂流层底部,海水从次表层水中向上流动,或下降而流入次表层水中,形成了赤道地区的升降流。大洋上的结冰、融冰、降水和蒸发等热盐效应,造成海水密度在大范围海面分布不均匀,可使极地和高纬度某些海域表层生成高密度的海水,而下沉到深层和底层。在水平压强梯度力的作用下,作水平方向的流动,并可通过中层水底部向上再流到表层,这就是大洋的热盐环流。大洋表层生成的风漂流,构成大洋表层的风生环流。其中,位于低纬度和中纬度处的北赤道流和南赤道流,在大洋的西边界处受海岸的阻挡,其主流便分别转而向北和向南流动,由于科里奥利参量随纬度的变化(β-效应)和水平湍流摩擦力的作用,形成流辐变窄、流速加大的大洋西向强化流。每年由赤道地区传输到地球的高纬地带的热量中,有一半是大洋西边界西向强化流传输的。进入大洋上层的热盐环流,在北半球由于和大洋西向强化流的方向相同,使流速增大;但在南半球则因方向相反,流速减缓,故大洋环流西向强化现象不太显著。大洋西向强化流在北半球向北(南半球向南)流动,而后折向东流,至某特定地区时,流动开始不稳定,流轴在其平均位置附近便发生波状的弯曲,出现海流弯曲(或蛇行)现象,最后形成环状流而脱离母体,生成了中央分别为来自大陆架的冷水的冷流环和来自海洋内部的暖水的暖流环。这是一类具有中等尺度的中尺度涡。此外,在大洋的其他部分,由于海流的不稳定,也能形成其他种类的中尺度涡。这些中尺度涡集中了海洋中很大一部分能量,形成了叠加在大洋气候式平均环流场之上的各种天气式涡旋,使大洋环流更加复杂。海流按其水温低于或高于所流经的海域的水温,可分为寒流和暖流两种,前者来自水温低处,后者来自水温高处。表层海流的水平流速从几厘米/秒到300厘米/秒,深处的水平流速则在10厘米/秒以下。垂直流速很小,从几厘米/天到几十厘米/时。海流以流去的方向作为流向,恰和风向的定义相反。海流对海洋中多种物理过程、化学过程、生物过程和地质过程,以及海洋上空的气候和天气的形成及变化,都有影响和制约的作用,故了解和掌握海流的规律、大尺度海-气相互作用和长时期的气候变化,对渔业、航运、排污和军事等都有重要意义.1.1.2虚拟仿真技术的主要内容人们对仿真技术的期望也越来越高,过去,人们只用仿真技术来模拟某个物理现象、设备或简单系统;今天,人们要求能用仿真技术来描述复杂系统,甚至由众多不同系统组成的系统体系。这就要求仿真技术需要进一步发展,并吸纳、融合其他相关技术。虚拟现实(VirtualReality,简称VR,又译作灵境、幻真)是近年来出现的高新技术,也称灵境技术或人工环境。虚拟现实是利用电脑模拟产生一个三维空间的虚拟世界,提供使用者关于视觉、听觉、触觉等感官的模拟,让使用者如同身历其境一般,可以及时、没有限制地观察三度空间内的事物。VR是一项综合集成技术,涉及计算机图形学、人机交互技术、传感技术、人工智能等领域,它用计算机生成逼真的三维视、听、嗅觉等感觉,使人作为参与者通过适当装置,自然地对虚拟世界进行体验和交互作用。使用者进行位置移动时,电脑可以立即进行复杂的运算,将精确的3D世界影像传回产生临场感。虚拟现实技术是利用计算机生成的虚拟环境逼真地模拟人在自然环境中的视觉、听觉、运动等行为的人机界面的新技术。利用虚拟现实技术沉浸感、与计算机的交互功能和实时表现功能,建立相关的地质、水文地质模型和专业模型,进而实现对含水层结构、地下水流、地下水质和环境地质问题的虚拟表达。具体实现步骤包括建立虚拟现实数据库、三维地质模型、地下水水流模型、专业模型和实时预测模型。虚拟仿真技术,则是在多媒体技术、虚拟现实技术与网络通信技术等信息科技迅猛发展的基础上,将仿真技术与虚拟现实技术相结合的产物,是一种更高级的仿真技术。虚拟仿真技术以构建全系统统一的完整的虚拟环境为典型特征,并通过虚拟环境集成与控制为数众多的实体。实体可以是模拟器,也可以是其他的虚拟仿真系统,也可用一些简单的数学模型表示。实体在虚拟环境中相互作用,或与虚拟环境作用,以表现客观世界的真实特征。虚拟仿真技术的这种集成化、虚拟化与网络化的特征,充分满足了现代仿真技术的发展需求。1.2仿真的应用及过程1.2.1仿真的应用仿真技术得以发展的主要原因,是它所带来的巨大社会经济效益。50年代和60年代仿真主要应用于航空、航天、电力、化工以及其他工业过程控制等工程技术领域。在航空工业方面,采用仿真技术使大型客机的设计和研制周期缩短20%。利用飞行仿真器在地面训练飞行员,不仅节省大量燃料和经费(其经费仅为空中飞行训练的十分之一),而且不受气象条件和场地的限制。此外,在飞行仿真器上可以设置一些在空中训练时无法设置的故障,培养飞行员应付故障的能力。训练仿真器所特有的安全性也是仿真技术的一个重要优点。在航天工业方面,采用仿真实验代替实弹试验可使实弹试验的次数减少80%。在电力工业方面采用仿真系统对核电站进行调试、维护和排除故障,一年即可收回建造仿真系统的成本。现代仿真技术不仅应用于传统的工程领域,而且日益广泛地应用于社会、经济、生物等领域,如交通控制、城市规划、资源利用、环境污染防治、生产管理、市场预测、世界经济的分析和预测、人口控制等。对于社会经济等系统,很难在真实的系统上进行实验。1.2.2仿真的过程仿真是对现实系统的某一层次抽象属性的模仿。人们利用这样的模型进行试验,从中得到所需的信息,然后帮助人们对现实世界的某一层次的问题做出决策。仿真是一个相对概念,任何逼真的仿真都只能是对真实系统某些属性的逼近。仿真是有层次的,既要针对所欲处理的客观系统的问题,又要针对提出处理者的需求层次,否则很难评价一个仿真系统的优劣。传统的仿真方法是一个迭代过程,即针对实际系统某一层次的特性(过程),抽象出一个模型,然后假设态势(输入),进行试验,由试验者判读输出结果和验证模型,根据判断的情况来修改模型和有关的参数。如此迭代地进行,直到认为这个模型已满足试验者对客观系统的某一层次的仿真目的为止。可以从不同的角度对仿真加以分类。比较典型的分类方法是:根据仿真系统的结构和实现手段分类;根据仿真所采用的计算机类型分类;根据仿真时钟与实时时钟的比例关系分类;根据系统模型的特性分类。仿真有三个基本的活动,即系统建模(一次建模)、仿真建模(二次建模)和仿真试验,联系这三个活动的是计算机仿真的三要素,即系统、模型、计算(包括硬件和软件)。系统系统计算机模型系统建模仿真试验仿真建模图1-1仿真的基本活动传统上,“系统建模”这一活动属于系统辨识技术范畴,仿真技术则侧重于“仿真建模”,即针对不同形式的系统模型研究其求解算法,使其在计算机上得以实现。至于“仿真试验”这一活动,也往往只注重“仿真程序”的校核,至于如何将仿真试验的结果与实际系统的行为进行比较这一根本性的问题-验证缺乏从方法学的高度进行研究。实际系统实际系统系统建模仿真建模程序设计模型运行修改系统模型修改仿真模型修改程序合理程序问题仿真模型数字模型仿真试验仿真结果处理图1-2仿真过程1.3课题的主要研究内容1.3.1海水运动曲线的模拟在计算机图形学中有着很多的建模方法,在本课题研究中主要利用风噪声理论,利用正弦函数以及一些数学表达式,研究和分析不同的取点,对曲线变化的影响。根据函数的趋势进行合理的取点,使得取的点和曲线相位形成对应关系,模拟出一条符合海水运动特性且平滑的曲线。1.3.2海水三维曲面的建立海水的三维模型以风噪声模型为基础,把风噪声模型模拟出的曲线作为海水三维模型的一个动态参数,即作为模拟海水函数的子函数,产生三维曲面,并不断地加以改进,使曲面更随机更柔和。通过加入光照模型,为增加图形的真实感,模拟出满意的海水形状。1.3.3海水运动过程的仿真动态效果目的在于模拟不同时间海水的运动模型。由于风力,海水会随着风向的运动产生不同的模型,通过调试程序,将静态曲面转为动态海水,并通过仿真,生成便于查看效果的avi动画。并通过不断调试,使动态效果更为逼真明显。2三维海水仿真模型2.1风噪声的应用风噪声理论应用领域较为广泛,如物理、生物、社会、医学、天文、地理等系统中。风噪声理论用于仿真自然界无规律的自然现象,有人将其用于树木在风中摇动的过程,有人将其用于布料,羽毛等仿真,由于海水运动的随机性质,在风中不规则的运动与他们有着相似的特点,在本课题中,用风噪声理论建立海水的三维模型,将其应用于海水运动仿真的研究之中。本课题研究中风噪声理论主要涉及与Perlin两种噪声。噪声是一个连续函数,根据β而产生的不同形式的波形。Perlin噪声是一个随即函数,用于产生不断变化的频率与振幅的正弦函数。这两种噪声函数可应用于仿真自然界物体随机运动过程。2.2MATLAB函数为了显示三维图形,MATLAB提供了各种各样的函数。有一些函数可在三维空间中画线,而另一些可以画曲面与线格框架。另外,颜色可以用来代表第四维。当颜色以这种方式使用时,由于它不再象照片中那样显示信息的自然属性色彩,而且也不是基本数据的内在属性,所以它称作伪彩色。2.2.1直接绘图函数•fplotfplot命令的调用格式主要有:(1)fplot(fun,lims,str,tol):直接绘制函数y=fun(x)的图形。其中,lims为一个向量,若lims只包含两个元素则表示x轴的范围:[xmin,xmax]。若lims包含四个元素则前两个元素表示x轴的范围:[xmin,xmax],后两个元素表示y轴的范围:[ymin,ymax]。str可以指定图形的线型和颜色。tol的值小于1,代表相对误差,默认值为0.002,即0.2%。>>fplot(@humps,[-1,5])

%在[-1,5]范围内绘制函数humps上述命令中,@humps表示以函数句柄的形式引用函数。(2)fplot(fun,lims,n):用最少n+1个点来绘制函数fun的图形,其中n大于等于1。>>fplot('x^2',[-11])

%在[-1,1]范围内绘制函数y=x^2

图2-1fpolt绘制图(例)•ezplot,ezplot3

ezplot命令是绘制符号表达式的自变量和对应各函数值的二维曲线,ezplot3命令用于绘制三维曲线。

(1)曲线绘图

语法:

ezplot(F,[xmin,xmax],fig)

%画符号表达式F的图形

说明:F是将要画的符号函数;[xmin,xmax]是绘图的自变量范围,省略时默认值为[-2л,2л];fig是指定的图形窗口,省略时默认为当前图形窗口。

例:

>>y=sym('-1/3*x^3+1/3*x^4')

y=

-1/3*x^3+1/3*x^4

>>ezplot(y)

%绘制符号函数y在[-2л,2л]中的图形

>>ezplot(y,[0,100])

%绘制符号函数y在[0,100]中的图形

又例

>>x=sym('sin(t)');

>>y=sym('cos(t)');

>>z=sym('t');

>>ezplot3(x,y,z,[0,10*pi],'animate')

%绘制t在[0,10*pi]范围的三维曲线

(2)曲面绘制

如>>ezmesh('sin(x)*exp(-t)','cos(x)*exp(-t)','x',[0,2*pi]);

ezmesh意为Easytouse3-Dmeshplotter,所以其调用格式简单,绘图方便。

图2-2ezmesh绘制图(例)

(3)其它绘图命令

MATLAB还提供了如下表所示的较常用绘图命令。这些命令的举例都是对字符串函数进行绘图,同样也可用于符号表达式绘图。

ezcontour画等高线ezcontour('x*sin(t)',[-4,4])

ezcontourf画带填充颜色等高线ezcontourf('x*sin(t)',[-4,4])

ezmesh画三维网线图ezmesh('sin(x)*exp(-t)','cos(x)*exp(-t)','x',[0,2*pi])

ezmeshc画带等高线的三维网线图ezmeshc('sin(x)*t',[-pi,pi])

ezpolar画极坐标图

ezpolar('sin(t)',[0,pi/2])

ezsurf画三维曲面图ezsurf('x*sin(t)','x*cos(t)','t',[0,10*pi])

ezsurfc画带等高线的三维曲面图ezsurfc('x*sin(t)','x*cos(t)','t',[0,pi,0,2*pi])2.2.2网格法绘制三维曲面⑴产生三维数据在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为:x=a:d1:b;y=c:d2:d;[X,Y]=meshgrid(x,y);语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。⑵绘制三维曲面的函数surf函数和mesh函数的调用格式为:mesh(x,y,z,c)surf(x,y,z,c)一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。例:用曲面图表现函数y=x^2+y^2。clf,x=-4:4;y=x;[X,Y]=meshgrid(x,y);Z=X.^2+Y.^2;surf(X,Y,Z);%或mesh(X,Y,Z)

图2-4三维曲面绘制图(例)2.3海水三维模型的建立与调试海水三维模型的构建是本课题的重点之一,在通过学习与研究之后,深知海水运动特性的了解是基础,计算机图形学和面向对象的编程技术是工具,三者有效地结合是本课题得以顺利完成的关键。在本课题中,对海水运动特性进行分析,要得到海水运动的3D效果,这就要求较适当地设置二、三维仿真的参数,最后才能实现较好的仿真效果。由于海水运动时随机的,还具有不对称性、不规则性,因此,可采用曲面造型的方法来定义海水的三维模型。三维模型从一系列点开始,理清了各关键点的坐标以及各点之间的连接关系之后,先构成柔和曲线,然后由这些曲线构成曲面,最后形成一个三维模型。在此基础上,只需对三维模型进行一些纹理以及光照的修饰,就能得到整块海水在计算机中的三维仿真显示情况。建模步骤流程:取点二维曲线三维曲面图2-5建模步骤流程图2.3.1点到二维曲线曲线是动点运动时,方向连续变化所成的线。在平面直角坐标系内,如果一条曲线上的点都能满足符合某种条件,而满足该条件的点又均位于这条曲线上,那么我们就可以把这种对应关系写成一个确定的函数式:y=f(x)这个函数式就称为曲线的方程;同样,该曲线即为这个方程的曲线。绘制曲线使用的是matlab软件中的plot函数。plot是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot函数之前,必须首先定义好曲线上每一点的x及y坐标,常用格式为:

(1)plot(x)当x为一向量时,以x元素的值为纵坐标,x的序号为横坐标值绘制曲线。

(2)plot(x,y)以x元素为横坐标值,y元素为纵坐标值绘制曲线。

(3)plot(x,y1,x,y2,…)以公共的x元素为横坐标值,以y1,y2,…元素为纵坐标值绘制多条曲线。Plot是最常用的绘图函数,用于绘制线性二维图。有多条曲线时,循环使用由坐标轴颜色顺序属性定义的颜色,以区别不同的曲线;之后再循环使用由坐标轴线型顺序属性定义的线型,以区别不同的曲线。要生成理想的曲线,就要采用合适的算法和公式来得到。如果不按照正确的算法来取点,则无法得到符合预期效果的曲线。以下两幅图片均是随机取点得到的错误曲线图:图2-6错误曲线图(一)图2-7错误曲线图(二)本课题要得到正确的曲线,需要采用风噪声算法。这种算法主要是利用三角函数的幅度变化,以及对曲线的分段来进行构图,然后根据取点来编写出函数,完成所需要的曲线,并观察效果。风噪声函数的基本公式如下:(2-3)公式2-3为风噪声函数的基本公式,即为一个正弦函数,其中A表示该点的振幅。表示该点的相位。显然Y是取决于该点的相位的。*Nπ且R为整数(2-4)公式2-4为相位的算法。其中代表取点的范围(即曲线分割的段数)。代表的是范围中第R个点的X坐标的值。表示的是终点的X坐标的值。而的取值范围就是[0,Nπ]。为了表示曲线的随机性,我们需要用到以下几个公式:(2-5)(2-6)(2-7)在公式2-5中,K表示两相邻点的所在直线的斜率。利用求出的斜率K,并根据公式2-6可以求出相邻两点所在直线的截距常数b。最后通过公式2-7,可以表达出每段曲线中各个幅度之间的相位关系。根据风噪声函数来进行取点,根据幅度的变化来决定各个点的坐标值。我的取点坐标值详细情况如下表2-1所示:表2-1正确曲线(一)各点坐标X的坐标值对应的相位(°)y的坐标值y的坐标值减中线值(y-11)X0400-60Y0110X1480-24Y14534X256012Y27-4X364048Y3-25-36X472084Y4-36-47X5800120Y5-27-38X6880156Y6-7-18X7960192Y72918X81040228Y85847X91120264Y93726X101200300Y105-6X111280336Y113524X121360372Y126150X131440408Y134029X141520444Y14-12-23X151600480Y15-45-56由表中的各点关系分析得,曲线的初始相位为-1/3π。曲线的X坐标从400到1600,两端点之间的距离是1200;Y坐标随着角度的变化而变化着,其变化量就由自己在取点时控制,Y的中线值为11(即Y所有取值的平均值)。首先计算第一条曲线中第一段的A值,利用所取各点坐标值,以及函数的特性,同时,通过一些数学函数的计算与前后关键点之间关系的分析,得到关系式A=x*k+b,并进一步深入地分析与探究,找到了简单合适的算法,避免了一系列繁琐的过程,减少了复杂的计算。曲线中第一二段的计算过程如下:从表中可以看出第一段X从X0=400到X1=480,X的变化范围为[400,1600],所在的相位范围是(0到3*pi),则公式2-4中=480,=1600,=400,可得第一段相位φ=π/5,再将Y=34带入公式2-3中,可得A=57.845,根据Y=A*sin(3*pi*(X-400)/1200-pi/3)就能画出第一段曲线。运用公式A2=y2/sin(3*pi*(x2-400)/1200-pi/3)可得第二段的振幅A2,然后用公式(2-5),即k=(A2-A1)/80,来得出第二段起始点和终点所在直线的斜率K,根据这个斜率K,通过公式(2-6)b=A1-k*x1来的到这条直线的截距b,最后通过公式(2-7)A=k*X+b,就能得到第二段曲线X坐标值和振幅A值变化之间的线性关系。曲线共由15段组成,下面程序是其中的第一二段,完整的曲线程序见附录。clearclcaa(1)=400;A1=57.845;x1=480;x2=560;X1=[aa(1):aa(1)+79];X2=X1+80;y1=34;y2=-4;A2=y2/sin(3*pi*(x2-400)/1200-pi/3);k2=(A2-A1)/80;b2=A1-k2*x1;a1=A1*sin(3*pi*(X1-400)/1200-pi/3);plot(X1,a1,'-');holdon;A=k2*X2+b2;a2=A.*sin(3*pi*(X2-400)/1200-pi/3);plot(X2,a2,'-');holdon;运用MATLAB运行后结果如图2-8所示:图2-8正确曲线图(一)在掌握了曲线的生成方法之后,运用同样方法确定了另外一条减少了取点个数的曲线,如下:表2-2正确曲线(二)各点坐标X的坐标值对应的相位(°)y的坐标值y的坐标值减中线值(y-12)X0400-60Y0120X150030Y14937X2600120Y27-5X3700210Y32614X4800300Y44836X5900390Y5-25-37X61000480Y6-33-45编写程序,运用MATLAB软件运行之后显示结果如图2-9:图2-9正确曲线图(二)2.3.2二维曲线到三维曲面顺利生成了二维曲线之后,接着就是要建立三维曲面。主要的思路是在二维曲线的基础上增加一个Z坐标,使得平面坐标系变成空间坐标系,从而得到了二维到三维的效果。在绘制曲面过程中主要用到以下几个命令:•Meshgird命令:Meshgird命令的意义是在两个坐标轴上的点在平面上画格。它用于从数组a和b产生网格。生成的网格矩阵A和B大小是相同的。它也可以是更高维的。生成size(b)Xsize(a)大小的矩阵A和B。它相当于a从一行重复增加到size(b)行,把b转置成一列再重复增加到size(a)列。因此命令等效于:A=ones(size(b))*a;(2-8)B=b'*ones(size(a))(2-9)ones(size(b))是指产生一个和矩阵b的位数相同的全1矩阵。•Surf命令:Surf命令是绘制着色表面图;surf(X,Y,Z):X,Y利用分格函数[X,Y]=meshgrid(x,y)其中x和y是向量,通过meshgrid函数就可将x和y指定的区域转换成为矩阵X和Y。这样在绘图时就可以先用meshgrid函数产生在x-y平面上的二维的网格数据,再以一组z轴的数据对应到这个二维的网格,即可画出三维的曲面。•Light命令:Light命令式用来生成一个光照对象。该对象除了具有其他对象也具有的通用属性外,还具有三个非常重要属性:Color:光线的颜色。Style:shezhi值为infinite(无穷远)或为local(附近)。Position:光源所处的位置,参数形式为[a,b,c],单位使用当前坐标单位。如果光源设为附近,该参数表示光源位置;如果光源被设置成为无穷远,该参数表示光源方向。用light函数创建光源对象,调用格式:Light(‘propertyName’,‘propertyValue,…),在当前坐标轴对象中创建光源对象,‘propetyName’主要包括color、position和style等属性,color的值用colorspec确定,默认为白色;position由[x,y]坐标确定,默认值为[101];style的值为infinite(无限远处的平行光源)或local(点光源),默认值为infinite.曲面主程序主要由这三个函数组成,下面是将二维曲线转为三维曲面的主程序及程序说明:clear%清除变量clc%清屏X=400:1599%确定画图时横坐标变化范围Y=400:1599%确定画图时纵坐标变化范围[X,Y]=meshgrid(X,Y)%生成网格化,把参数X,Y由向量变成矩阵[XX,YY]=meshgrid(zhenfu1(X),zhenfu1(Y))%程序调用Z=0.3*XX.*exp(-0.2*X)+0.8*YY%生成三维模型surfl(X,Y,Z)%显示三维曲面模型light('Position',[-30-2010])%确定光源的位置color=[0.3,0.5,0.6]%确定投射光的颜色colormap(color)%颜色的映射shadinginterp%对图形进行阴影处理主程序中调用了一个子函数,也就是我们的振幅函数。振幅函数决定了相位的变化以及X,Y的取值范围。振幅函数和画曲线程序取的数据是一致的,程序大体的框架结构也相似。下面是我的振幅函数的大致程序:functiona=zhenfu(aa)%定义函数A1=57.845;%定义第一个点振幅aa(1)=400;x1=400;%定义第一段曲线起点的横坐标x1x2=480;%定义第二段曲线终点的横坐标x2X1=[aa(1):aa(1)+79];%定义第一段曲线横坐标的变化范围和步长X2=X1+80;%定义第二段曲线横坐标的变化范围和步长y1=34;%定义第一段曲线起点的纵坐标y1y2=-8;%定义第二段曲线起点的纵坐标y2A2=y2/sin(3*pi*(x2-400)/1200-pi/3);%定义振幅计算公式k2=(A2-A1)/80;b2=A1-k2*x1;a1=A1*sin(3*pi*(X1-400)/1200-pi/3);%得出第一段振幅A=k2*X2+b2;a2=A.*sin(3*pi*(X2-400)/1200-pi/3);%得出第二段振幅x2=560;x3=640;X3=X2+80;y2=-4;y3=-36;A3=y3/sin(3*pi*(x3-400)/1200-pi/3);k3=(A3-A2)/80;b3=A2-k3*x2;A=k3*X3+b3;a3=A.*sin(3*pi*(X3-400)/1200-pi/3);x14=1520;x15=1600;X15=X14+80;y14=-23;y15=-56;A15=y15/sin(3*pi*(x15-400)/1200-pi/3);k15=(A15-A14)/80;b15=A14-k15*x14;A=k15*X15+b15;a15=A.*sin(3*pi*(X15-400)/1200-pi/3);a=[a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15];%把12段的振幅拼接起来得出最终的振幅End为了能够便于计算,我们把第一段的振幅(x0到x1这段)看做一个点,并计算出那个点的振幅(计算方法在上一节中已经介绍过),视作实际意义上第一段(x0点到x1点这段)的振幅。有了第一段A的值,就可以通过套用计算公式来计算后段程序的数据。振幅函数完成以后,主函数通过函数调用,就可以生成三维曲面了。在函数调用的时侯需要注意的是,由于主程序里涉及到矩阵的运算,即:[X,Y]=meshgrid(X,Y)[XX,YY]=meshgrid(zhenfu1(X),zhenfu1(Y))Z=0.3*XX.*exp(-0.2*X)+0.8*YY根据上面的式子,我们知道Z的表达式中包含了矩阵的运算,则在取X、Y变化范围时必须保证X与Y包含的点数要相同,若所取范围内元素个数不相等,振幅函数将不能正常运行。这里所说的点数相同,指的不是两者的范围要完全一样,可以取X=400:1599,Y=400:1599,很显然,X与Y之间的数据相等;也可以取X=400:1599,Y=400:.5:999.5,X与Y之间包含的数据都是1200个。所以,在定义X与Y的变化范围时,只要保证二者的元素个数相同就可以了。在完成了振幅函数的编写后,就可以开始调试主程序了。主程序里调用振幅函数的语句,即[XX,YY]=meshgrid(zhenfu1(X),zhenfu1(Y)),可以使用相同的振幅函数,也可以使用不相同的。主程序调试,主要是不断改变生成的Z模型来达到想要的效果。当使用Z=0.3*XX.*exp(-0.2*X)+0.8*YY*sin(X)模型时,通过运用MATLAB软件运行之后显示结果如图2-10:图2-10错误曲面图(一)当使用Z=0.3*XX.*exp(-0.2*X)*sin(X)+cos(YY)模型时,通过运用MATLAB软件运行之后显示结果如图2-11:图2-11错误曲面图(二)很明显,上面两个模型生成的曲面都不平滑,且都不符合海水特性。当使用Z=0.3*XX.*exp(-0.2*X)+0.8*YY模型,通过运用MATLAB软件运行之后显示结果如图2-12:图2-12曲面调试图(一)这个模型生成的曲面比之前的曲面平滑了许多,也有接近海水的形态了,但是在Z方向上的线条太过生硬,且不够随机。还需要在这个基础上进行调试。当使用Z=XX.*sin(-X./500-Y./300)-YY.*exp(-Y)模型,通过运用MATLAB软件运行之后显示结果如图2-13:图2-13曲面调试图(二)这个模型生成的曲面看起来基本具备海水的特征了。由于之前曲线的取点为1200个,考虑到点数过多容易使画面看起来较凌乱,于是我改为在图2-9曲线的基础上生成曲面,在主程序中X=400:1:999,Y=400:.5:699.5,这样取点只为原来的一半600个。并用了两个不同的振幅函数,并在其前面加了系数,使[XX,YY]=meshgrid(2*zhenfu1(X^2),3*zhenfuy(Y)),将上个Z表达式中的系数进行修改调试,发现只要改变sin(-X./50-Y./50)的系数,就能得到不同波浪个数的曲面,下面两图为Z=XX.*sin(-X./50-Y./50)-YY.*exp(-Y)(图2-14)和Z=XX.*sin(-X./150-Y./150)-YY.*exp(-Y)(图2-15)时,得到的不同波浪个数的曲面:图2-14曲面调试图(三)图2-15曲面调试图(四)又经过不断的调试,当使Z的表达式为Z=XX.*sin(-X./400-Y./180)-YY.*exp(-Y)时,得到了较为满意的曲面,如图2-16所示:图2-16曲面调试图(五)上面提到过,生成矩阵时所用的振幅函数可以不相同,为了使生成的曲面更加随机,我使用了两个不同的振幅函数。在生成矩阵时我将两个振幅函数的位置调换了一下,即使[XX,YY]=meshgrid(2*zhenfuy(X^2),3*zhenfu1(Y)),通过MATLAB软件运行后得到如图2-17的曲面图:图2-17曲面调试图(六)通过观察可以知道,与图2-16的曲面相比,就是在y方向的波浪个数不相同,曲面还是比较平滑,符合海水特性。3动态海水的模拟3.1海水运动过程的算法海水模型是通过对于真实自然界海水的观察,利用凤噪声理论进行建模。简单的海水动力学模型可以用正弦波来表示海水的运动,运动方程如下: (3-1)波浪中的顶点向量是x,y,time,period的函数 (3-2)(3-3)=1海水在自然环境的影响下,其运动形式在不断变化。为了模拟海水的运动需要对海水运动的规律进行总结。在海浪的统计模型中,浪高h(x,t)是随着给定的位置和时间而随机变化的,它把浪的高度域分成一组具有不同振幅和相位的凹波。假定知道这些波的振幅和相位,这样就可以用快速傅立叶变换法估计其高度值:(3-4)其中是我们估计点的水平高度,K=2/,(K,t)是复数,表示波在时刻的振幅和相位。由于我们使用的是离散傅立叶变换,因此只有有限个波长和位置。假定是高度,是网格分辨率(对FFT而言必须为2的n次方,n为整数),那么就可以把波长记为:(3-5)其中n,m:一r/2≤n+≤r/2,r必须为2的倍数.同时为了绘制波浪.必须计算高度域方向的梯度值来获得向量。比较传统的方法是通过计算差值,这可以通过相邻的网格点来近似得到,但对于那些小波长的倾斜波来讲这可能非常糟糕由于现在计算机的计算能力惊人,所以可用下面的公式来估计其总和:(3-6)到现在为止已经知道可以用波的振幅和相位的复数域得到高度域。这样只要得到振幅和相位本身,就可以绘制海浪的动画效果。3.2海水动态仿真的实现与调试离散模型动态化分为以下几个步骤:(1)确定动画的帧数nframes(2)画出图形(3)为nframes帧幅图形分配足够内存空间 (4)用getframe生成动画的数据矩阵(5)以每秒n幅的速度播放动画将静态曲面转为动态化的主程序如下:clearclcs=1;x1=0;%确定起始点横坐标x1及其增量nframes=8;%确定动画总帧数aviobj=avifile('donghua.avi','fps',1);%初始化建立AVI文件;fork=1:nframesx1=x1+s;%确定画图时横坐标终止值x1X=400+x1:999+x1Y=400+x1:.5:699.5+x1[X,Y]=meshgrid(X,Y)[XX,YY]=meshgrid(2*zhenfu1(X^2),3*zhenfuy(Y))%程序调用Z=0.2*XX.*sin(-X./400-Y./180)-YY.*exp(-Y);surfl(X,Y,Z)light('Position',[-30-2010])color=[0.3,0.5,0.6]colormap(color)shadinginterp%定义坐标轴范围M(k)=getframe;%将当前图形存入矩阵M(k)Movie=getframe(gcf);%保存动画aviobj=addframe(aviobj,Movie);%保存动画endaviobj=close(aviobj);%关闭文件,结束数值仿真模拟过程在仿真动态海水时,由于取点较多,数据量大,所以需要将其运动过程转为动画avi模式保存起来,在查看仿真效果时改善其不流畅的问题,便于查看仿真效果。在初始的调试过程中,结果生成的动画海水的动态效果并不明显。通过对参数的调试,我发现当增量s改变时,海水的动态效果也会跟着发生变化。当s=1时,海水的运动幅度很小,并不明显;当s=15时,海水运动的幅度变大,易于观察。我们可以将增量s不同的情况下生成的海水运动看成不同风速下海水产生的形态,由于风速随机的,那么s的取值也要随机。在这里,我使用了随机函数rand。我令s=10*rand+10*rand,rand产生的是0到1之间的随机数,则我取的s的随机值的范围就是[0,20],每运行一次,就可以得到不同的s,则每次生成的动态海水都有不同的形态,这样,海水运动就更具随机性了。4总结4.1本课题中所完成的工作①熟悉MATLAB的操作界面。②了解风噪声函数,掌握基本的风噪声函数公式推导。③通过分析与研究海水的三维形状,并运用风噪声理论通过计算合理取点确定二维曲线。④从海水的二维曲线入手,建立三维模型,不断调试,得到较理想的海水曲面。⑤分析海水的运动特征,用数学模型表示海水的动态运动过程,形成海水动态运动的效果。⑥将海水运动过程保存为avi格式的动画,便于观察海水动态效果。⑦结合理论知识、建模方法与步骤以及本课题的研究思路,编写程序,运用MATLAB软件进行程序调试,获得最佳仿真效果。4.2遇到的问题及解决①最初在没有透彻理解曲线取点的计算方法是随机取点,导致无法生成期望的曲线,后来经过研究学习,了解了正确的取点方法,得到了正确的曲线。②二维曲线到三维曲面的转化时,未注意主函数内矩阵元素的个数要保持一致,导致振幅程序无法正确运行,经过老师的指导,更正了取点范围。③得到的三维曲面不够平滑,效果不佳。经过模型的不断更改,得到了较为理想的海水曲面。④生成的动态效果不明显,不易观察。不断调试主程序中的参数,加大运动幅度,改善动态效果。4.3本课题的研究结论随着现代科学技术快速发展,对真实感图形技术提出了越来越高的要求,三维动态模型的模拟需要许多技术的综合,在很多方面都有很大的研究意义。通过本课题的研究使得我对三维海水的特性知识了解更加透彻。同时,对于有关风噪声的相关理论知识也有了更进一步的学习与掌握。在本课题的研究中,运用了风噪声函数进行建模绘制曲线;将二维平面曲线转为三维空间曲面;接着将静态海水曲面动态化,得到个具有真实感的三维动画模型。这样就完成了海水运动仿真过程。由于时间比较紧迫,很多方面没有进行深入的研究,如怎样减少运算的复杂度等。由于海水仿真技术还在一个相对发展的过程中,所以还是存在一定的不足之处,诸如海水波浪拍击所成浪花之类的现象的仿真,这将是我们下一步研究的重点。致谢光阴荏苒,大学的生涯即将结束,四年的学习生活使我受益匪浅。经历几个月的磨砺,毕业设计终于完成。整个设计过程从课题的了解,资料的收集,程序的调试到最后论文的完成,我得到了许多帮助。在此我要向他们表达最诚挚的谢意。我要感谢悉心指导我完成毕业设计的李蓓蓓老师。李老师是一名有丰富教学经验的优秀教师。她培养了我的坚韧的意志,自主创新能力及努力追求严谨的工作态度。从拿到毕设时的无从下手到论文的最终完成,李老师给了我非常大的帮助,在我遇到难题时为我耐心讲解,帮助我开拓研究思路。同时,我还要感谢我的辅导员董巧新老师,感谢董老师几年来在学习、生活、思想上给予我的关心、帮助和支持,给了我很大的信心。也要感谢我的班导师陈力平老师,对我严格要求,培养了我发现问题和解决问提的能力。他细心的教导跟严谨的思路带给我无限的启迪。感谢在大学校园中教过我的每一位老师几年来对我的谆谆教诲。因为有了他们严格、无私、高质量的教导,我才能在学习过程中迅速提升能力。因为有了他们,我才可以顺利的完成所有学习任务。感谢四年来一直与我互勉互励的同学们,在大家的共同努力下,我们始终拥有良好的学习环境,也正因为有他们,我的学习生活增添了许多温馨与乐趣。我很荣幸能在这样一个集体中度过大学四年。感谢我的家人,在生活和学习中给予我的支持与理解。感谢参与我论文答辩的众位老师,他们给了我审视四年学习成果的机会。在论文即将完成之际,我在这里再次向所有给予我无言帮助的师长、同学、朋友致以深深的谢意!参考文献[1]赵书兰.MATLABR2008图像与动画编程实例[M].北京:化学工业出版社,2009;[2]龚声蓉,刘纯平,王强等.数字图像处理与分析[M].北京:清华大学出版社,2006;[3]徐金明,张孟喜,丁涛.MATLAB实用教程[M].北京:清华大学出版社,2005;[4]梅志红,杨万铨.MATLAB程序设计基础及其应用[M].北京:清华大学出版社,2005;[5]张汗灵.MATLAB在图像处理中的应用[M].清华大学出版社2005[6]冈萨雷斯.数字图像处理(MATLAB版)[M].电子工业出版社2005-09-01[7]殷铭张兴华戴先中.基于的遗传算法实现[J].电子应用技术2000年第一期[8]陈桂明等.MATLAB数理统计(6.x)[M].北京:科学出版社2002年[9]RichardAJohnson,DeanWWhichern.AppliedMultivariateStatisticalAnalysis[M].北京:清华大学出版社2008年[10]BierEA,SloanKR.Two—parttexturemappings[J].IEEEComputerGraphicsandApplication,1986,6(9):40~53.[11]BreenDavidE,HouseDonaldH,andWoznyMichaelJ.“Predictingthedrapeofwovenclothusinginteractingparticles”[J],In:ProcofSIGGRAPH94,Computergraphicsproceedings,annualconferenceseries,ACMPress/ACMSIGGRAPH,pp.365-372,1994.[12]MichelCarignan,YingYang,NadiaMagnenat-Thalmann,andDanielThal-mann,“Dressinganimatedsyntheticactorswithcomplexdeformableclothes”[J].ComputGraph(ProcACMSIGGRAPH92),ACMPress,pp.99-104,1992.[13]R.F.Sarraga.ComputermodelingofsurfaceswitharbitraryShapes.IEEEComputerGraphicsandApplications(1990),67-77.附录1、二维曲线生成程序曲线一:clearclcaa(1)=400;A1=57.845;x1=480;x2=560;X1=[aa(1):aa(1)+79];X2=X1+80;y1=34;y2=-4;A2=y2/sin(3*pi*(x2-400)/1200-pi/3);k2=(A2-A1)/80;b2=A1-k2*x1;a1=A1*sin(3*pi*(X1-400)/1200-pi/3);plot(X1,a1,'-');holdon;A=k2*X2+b2;a2=A.*sin(3*pi*(X2-400)/1200-pi/3);plot(X2,a2,'-');holdon;x2=560;x3=640;X3=X2+80;y2=-4;y3=-36;A3=y3/sin(3*pi*(x3-400)/1200-pi/3);k3=(A3-A2)/80;b3=A2-k3*x2;A=k3*X3+b3;a3=A.*sin(3*pi*(X3-400)/1200-pi/3);plot(X3,a3,'-');holdon;x3=640;x4=720;X4=X3+80;y3=-36;y4=-47;A4=y4/sin(3*pi*(x4-400)/1200-pi/3);k4=(A4-A3)/80;b4=A3-k4*x3;A=k4*X4+b4;a4=A.*sin(3*pi*(X4-400)/1200-pi/3);plot(X4,a4,'-');holdon;x4=720;x5=800;X5=X4+80;y4=-47;y5=-38;A5=y5/sin(3*pi*(x5-400)/1200-pi/3);k5=(A5-A4)/80;b5=A4-k5*x4;A=k5*X5+b5;a5=A.*sin(3*pi*(X5-400)/1200-pi/3);plot(X5,a5,'-');holdon;x5=800;x6=880;X6=X5+80;y5=-38;y6=-18;A6=y6/sin(3*pi*(x6-400)/1200-pi/3);k6=(A6-A5)/80;b6=A5-k6*x5;A=k6*X6+b6;a6=A.*sin(3*pi*(X6-400)/1200-pi/3);plot(X6,a6,'-');holdon;x6=880;x7=960;X7=X6+80;y6=-18;y7=18;A7=y7/sin(3*pi*(x7-400)/1200-pi/3);k7=(A7-A6)/80;b7=A6-k7*x6;A=k7*X7+b7;a7=A.*sin(3*pi*(X7-400)/1200-pi/3);plot(X7,a7,'-');holdon;x7=960;x8=1040;X8=X7+80;y7=18;y8=47;A8=y8/sin(3*pi*(x8-400)/1200-pi/3);k8=(A8-A7)/80;b8=A7-k8*x7;A=k8*X8+b8;a8=A.*sin(3*pi*(X8-400)/1200-pi/3);plot(X8,a8,'-');holdon;x8=1040;x9=1120;X9=X8+80y8=47;y9=26;A9=y8/sin(3*pi*(x9-400)/1200-pi/3);k9=(A9-A8)/80;b9=A8-k9*x8;A=k9*X9+b9;a9=A.*sin(3*pi*(X9-400)/1200-pi/3);plot(X9,a9,'-');holdon;x9=1120;x10=1200;X10=X9+80y9=26;y10=-6;A10=y9/sin(3*pi*(x10-400)/1200-pi/3);k10=(A10-A9)/80;b10=A9-k10*x9;A=k10*X10+b10;a10=A.*sin(3*pi*(X10-400)/1200-pi/3);plot(X10,a10,'-');holdon;x10=1200;x11=1280;X11=X10+80;y10=-6;y11=24;A11=y10/sin(3*pi*(x11-400)/1200-pi/3);k11=(A11-A10)/80;b11=A10-k11*x10;A=k11*X11+b11;a11=A.*sin(3*pi*(X11-400)/1200-pi/3);plot(X11,a11,'-');holdon;x11=1280;x12=1360;X12=X11+80;y11=24;y12=50;A12=y11/sin(3*pi*(x12-400)/1200-pi/3);k12=(A12-A11)/80;b12=A11-k12*x11;A=k12*X12+b12;a12=A.*sin(3*pi*(X12-400)/1200-pi/3);plot(X12,a12,'-');holdon;x12=1360;x13=1440;X13=X12+80;y12=50;y13=29;A13=y13/sin(3*pi*(x13-400)/1200-pi/3);k13=(A13-A12)/80;b13=A12-k13*x12;A=k13*X13+b13;a13=A.*sin(3*pi*(X13-400)/1200-pi/3);plot(X13,a13,'-');holdon;x13=1440;x14=1520;X14=X13+80;y13=29;y14=-23;A14=y14/sin(3*pi*(x14-400)/1200-pi/3);k14=(A14-A13)/80;b14=A13-k14*x13;A=k14*X14+b14;a14=A.*sin(3*pi*(X14-400)/1200-pi/3);plot(X14,a14,'-');holdon;x14=1520;x15=1600;X15=X14+80;y14=-23;y15=-56;A15=y15/sin(3*pi*(x15-400)/1200-pi/3);k15=(A15-A14)/80;b15=A14-k15*x14;A=k15*X15+b15;a15=A.*sin(3*pi*(X15-400)/1200-pi/3);plot(X15,a15,'-');holdon;曲线二:aa(1)=400;A1=37;x1=500;x2=600;X1=[aa(1):aa(1)+99];X2=X1+100;y1=37;y2=-5;A2=y2/sin(3*pi*(x2-400)/600-pi/3);k2=(A2-A1)/100;b2=A1-k2*x1;a1=A1*sin(3*pi*(X1-400)/600-pi/3);plot(X1,a1,'-');holdon;A=k2*X2+b2;a2=A.*sin(3*pi*(X2-400)/600-pi/3);plot(X2,a2,'-');holdon;x2=600;x3=700;X3=X2+100;y2=-5;y3=14;A3=y3/sin(3*pi*(x3-400)/600-pi/3);k3=(A3-A2)/100;b3=A2-k3*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论