




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
上海第二工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)(論文)上海第二工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)(論文)本科畢業(yè)論文題目:基于隨機(jī)模型的海水運(yùn)動過程的仿真學(xué)生:專業(yè):電子信息工程年級:指導(dǎo)教師:日期:
基于隨機(jī)模型的海水運(yùn)動過程的仿真摘要:數(shù)字圖像處理技術(shù)是20世紀(jì)60年代發(fā)展起來的一門新興學(xué)科,海水仿真在虛擬訓(xùn)練系統(tǒng)、3D游戲中有著廣泛的應(yīng)用,隨著圖像處理理論和方法的進(jìn)一步完善,使得數(shù)字圖像處理技術(shù)在各個仿真領(lǐng)域得到了廣泛應(yīng)用,并顯示出廣闊的應(yīng)用前景。Matlab系統(tǒng)提出的海水運(yùn)動過程的仿真,建立在隨機(jī)模型的基礎(chǔ)上,用戶只需要對海水運(yùn)動過程的特性有一般性了解,就可以調(diào)整該系統(tǒng)的參數(shù),同時(shí)該系統(tǒng)的模擬效果較為逼真,是一種非迭代算法,實(shí)時(shí)性較好。本課題分析了海水仿真在虛擬現(xiàn)實(shí)技術(shù)中的地位,針對現(xiàn)有海水仿真技術(shù)的不足將風(fēng)噪聲模型應(yīng)用于虛擬現(xiàn)實(shí)海水仿真技術(shù)中,可以用改變參數(shù)的方式來選擇影響海水動態(tài)性能的兩個重要因素風(fēng)強(qiáng)和海水類型,用Matlab能表現(xiàn)出海水運(yùn)動的基本特性。本課題對目前電影、動畫、虛擬現(xiàn)實(shí)等動態(tài)三維設(shè)計(jì)將起到一定的推動作用。關(guān)鍵詞:三維海水;Matlab系統(tǒng);虛擬仿真;噪聲;動態(tài)圖像;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海水運(yùn)動形式 111031.1.2虛擬仿真技術(shù)的主要內(nèi)容 3280741.2仿真的應(yīng)用及過程 44581.2.1仿真的應(yīng)用 4207401.2.2仿真的過程 530571.3課題的主要研究內(nèi)容 7161351.3.1海水運(yùn)動曲線的模擬 784781.3.2海水三維曲面的建立 736801.3.3海水運(yùn)動過程的仿真 727922三維海水仿真模型 8256602.1風(fēng)噪聲的應(yīng)用 8137382.2MATLAB函數(shù) 827062.2.1直接繪圖函數(shù) 8194412.2.2網(wǎng)格法繪制三維曲面 10134402.3海水三維模型的建立與調(diào)試 11281582.3.1點(diǎn)到二維曲線 12154762.3.2二維曲線到三維曲面 1789433動態(tài)海水的模擬 26291423.1海水運(yùn)動過程的算法 26220893.2海水動態(tài)仿真的實(shí)現(xiàn)與調(diào)試 27278824總結(jié) 29304094.1本課題中所完成的工作 29253064.2遇到的問題及解決 29268234.3本課題的研究結(jié)論 29784致謝 3120660參考文獻(xiàn) 3228734附錄 32PAGE11緒論1.1課題背景海水波浪的運(yùn)動十分復(fù)雜,雖然流體力學(xué)對其研究比較深入,可以用數(shù)學(xué)模型對流體運(yùn)動變化進(jìn)行比較精確的描述,但對海浪的真實(shí)渲染不但要考慮計(jì)算機(jī)生成的真實(shí)感,還要考慮運(yùn)算量的大小。模型過于復(fù)雜,會使運(yùn)算量過于龐大,無法實(shí)現(xiàn)仿真,而模型過于簡單,又會影響計(jì)算機(jī)生成圖像的真實(shí)感。波浪是自然界最為常見的現(xiàn)象,雖然很難準(zhǔn)確的描述其形狀,卻為人們所熟悉。雖然在流體力學(xué)上有描述流體運(yùn)動的方程,但由于該方程主要用于科學(xué)計(jì)算,并不適用于計(jì)算機(jī)場景仿真建模,因此要用其他的建模方法對海水進(jìn)行建模。同時(shí)這樣的建模方法所得到的結(jié)果必須符合人們對海浪的一般認(rèn)識,因此,使用計(jì)算機(jī)生成令人信服的實(shí)時(shí)性較高且較強(qiáng)真實(shí)感的波浪的圖像比較困難。目前海水仿真模型主要分為兩類:一類是基于幾何的模型,幾何模型計(jì)算量比較小,容易實(shí)現(xiàn)對海水的實(shí)時(shí)動態(tài)模擬繪制;二是基于物理的模型,它從流體力學(xué)的基本方程出發(fā),根據(jù)其近似模擬計(jì)算出海水。海水仿真屬于虛擬現(xiàn)實(shí)技術(shù)領(lǐng)域。1.1.1海水運(yùn)動形式●波浪:海水受海風(fēng)的作用和氣壓變化等影響,促使它離開原來的平衡位置,而發(fā)生向上、向下、向前和向后方向運(yùn)動。這就形成了海上的波浪。波浪是一種有規(guī)律的周期性的起伏運(yùn)動。當(dāng)波浪涌上岸邊時(shí),由于海水深度愈來愈淺,下層水的上下運(yùn)動受到了阻礙,受物體慣性的作用,海水的波浪一浪疊一浪,越涌越多,一浪高過一浪。與此同時(shí),隨著水深的變淺,下層水的運(yùn)動,所受阻力越來越大,以至于到最后,它的運(yùn)動速度慢于上層的運(yùn)動速度,受慣性作用,波浪最高處向前傾倒,摔到海灘上,成為飛濺的浪花.●潮汐:由于日、月引潮力的作用,使地球的巖石圈、水圈和大氣圈中分別產(chǎn)生的周期性的運(yùn)動和變化的總稱。固體地球在日、月引潮力作用下引起的彈性—塑性形變,稱固體潮汐,簡稱固體潮或地潮;海水在日、月引潮力作用下引起的海面周期性的升降、漲落與進(jìn)退,稱海洋潮汐,簡稱海潮;大氣各要素(如氣壓場、大氣風(fēng)場、地球磁場等)受引潮力的作用而產(chǎn)生的周期性變化(如8、12、24小時(shí))稱大氣潮汐,簡稱氣潮。其中由太陽引起的大氣潮汐稱太陽潮,由月球引起的稱太陰潮。因月球距地球比太陽近,月球與太陽引潮力之比為11:5,對海洋而言,太陰潮比太陽潮顯著。地潮、海潮和氣潮的原動力都是日、月對地球各處引力不同而引起的,三者之間互有影響。大洋底部地殼的彈性—塑性潮汐形變,會引起相應(yīng)的海潮,即對海潮來說,存在著地潮效應(yīng)的影響;而海潮引起的海水質(zhì)量的遷移,改變著地殼所承受的負(fù)載,使地殼發(fā)生可復(fù)的變曲。氣潮在海潮之上,它作用于海面上引起其附加的振動,使海潮的變化更趨復(fù)雜。作為完整的潮汐科學(xué),其研究對象應(yīng)將地潮、海潮和氣潮作為一個統(tǒng)一的整體,但由于海潮現(xiàn)象十分明顯,且與人們的生活、經(jīng)濟(jì)活動、交通運(yùn)輸?shù)汝P(guān)系密切,因而習(xí)慣上將潮汐(tide)一詞狹義理解為海洋潮汐。●洋流:洋流又稱海流,海洋中除了由引潮力引起的潮汐運(yùn)動外,海水沿一定途徑的大規(guī)模流動。引起海流運(yùn)動的因素可以是風(fēng),也可以是熱鹽效應(yīng)造成的海水密度分布的不均勻性。前者表現(xiàn)為作用于海面的風(fēng)應(yīng)力,后者表現(xiàn)為海水中的水平壓強(qiáng)梯度力。加上地轉(zhuǎn)偏向力的作用,便造成海水既有水平流動,又有鉛直流動。由于海岸和海底的阻擋和摩擦作用,海流在近海岸和接近海底處的表現(xiàn),和在開闊海洋上有很大的差別。大洋中深度小于二三百米的表層為風(fēng)漂流層,行星風(fēng)系作用在海面的風(fēng)應(yīng)力和水平湍流應(yīng)力的合力,與地轉(zhuǎn)偏向力平衡后,便生成風(fēng)漂流。行星風(fēng)系風(fēng)力的大小和方向,都隨緯度變化,導(dǎo)致海面海水的輻合和輻散。一方面,它使海水密度重新分布而出現(xiàn)水平壓強(qiáng)梯度力,當(dāng)它和地轉(zhuǎn)偏向力平衡時(shí),在相當(dāng)厚的水平層中形成水平方向的地轉(zhuǎn)流;另一方面,在赤道地區(qū)的風(fēng)漂流層底部,海水從次表層水中向上流動,或下降而流入次表層水中,形成了赤道地區(qū)的升降流。大洋上的結(jié)冰、融冰、降水和蒸發(fā)等熱鹽效應(yīng),造成海水密度在大范圍海面分布不均勻,可使極地和高緯度某些海域表層生成高密度的海水,而下沉到深層和底層。在水平壓強(qiáng)梯度力的作用下,作水平方向的流動,并可通過中層水底部向上再流到表層,這就是大洋的熱鹽環(huán)流。大洋表層生成的風(fēng)漂流,構(gòu)成大洋表層的風(fēng)生環(huán)流。其中,位于低緯度和中緯度處的北赤道流和南赤道流,在大洋的西邊界處受海岸的阻擋,其主流便分別轉(zhuǎn)而向北和向南流動,由于科里奧利參量隨緯度的變化(β-效應(yīng))和水平湍流摩擦力的作用,形成流輻變窄、流速加大的大洋西向強(qiáng)化流。每年由赤道地區(qū)傳輸?shù)降厍虻母呔暤貛У臒崃恐?,有一半是大洋西邊界西向?qiáng)化流傳輸?shù)摹_M(jìn)入大洋上層的熱鹽環(huán)流,在北半球由于和大洋西向強(qiáng)化流的方向相同,使流速增大;但在南半球則因方向相反,流速減緩,故大洋環(huán)流西向強(qiáng)化現(xiàn)象不太顯著。大洋西向強(qiáng)化流在北半球向北(南半球向南)流動,而后折向東流,至某特定地區(qū)時(shí),流動開始不穩(wěn)定,流軸在其平均位置附近便發(fā)生波狀的彎曲,出現(xiàn)海流彎曲(或蛇行)現(xiàn)象,最后形成環(huán)狀流而脫離母體,生成了中央分別為來自大陸架的冷水的冷流環(huán)和來自海洋內(nèi)部的暖水的暖流環(huán)。這是一類具有中等尺度的中尺度渦。此外,在大洋的其他部分,由于海流的不穩(wěn)定,也能形成其他種類的中尺度渦。這些中尺度渦集中了海洋中很大一部分能量,形成了疊加在大洋氣候式平均環(huán)流場之上的各種天氣式渦旋,使大洋環(huán)流更加復(fù)雜。海流按其水溫低于或高于所流經(jīng)的海域的水溫,可分為寒流和暖流兩種,前者來自水溫低處,后者來自水溫高處。表層海流的水平流速從幾厘米/秒到300厘米/秒,深處的水平流速則在10厘米/秒以下。垂直流速很小,從幾厘米/天到幾十厘米/時(shí)。海流以流去的方向作為流向,恰和風(fēng)向的定義相反。海流對海洋中多種物理過程、化學(xué)過程、生物過程和地質(zhì)過程,以及海洋上空的氣候和天氣的形成及變化,都有影響和制約的作用,故了解和掌握海流的規(guī)律、大尺度海-氣相互作用和長時(shí)期的氣候變化,對漁業(yè)、航運(yùn)、排污和軍事等都有重要意義.1.1.2虛擬仿真技術(shù)的主要內(nèi)容人們對仿真技術(shù)的期望也越來越高,過去,人們只用仿真技術(shù)來模擬某個物理現(xiàn)象、設(shè)備或簡單系統(tǒng);今天,人們要求能用仿真技術(shù)來描述復(fù)雜系統(tǒng),甚至由眾多不同系統(tǒng)組成的系統(tǒng)體系。這就要求仿真技術(shù)需要進(jìn)一步發(fā)展,并吸納、融合其他相關(guān)技術(shù)。虛擬現(xiàn)實(shí)(VirtualReality,簡稱VR,又譯作靈境、幻真)是近年來出現(xiàn)的高新技術(shù),也稱靈境技術(shù)或人工環(huán)境。虛擬現(xiàn)實(shí)是利用電腦模擬產(chǎn)生一個三維空間的虛擬世界,提供使用者關(guān)于視覺、聽覺、觸覺等感官的模擬,讓使用者如同身歷其境一般,可以及時(shí)、沒有限制地觀察三度空間內(nèi)的事物。VR是一項(xiàng)綜合集成技術(shù),涉及計(jì)算機(jī)圖形學(xué)、人機(jī)交互技術(shù)、傳感技術(shù)、人工智能等領(lǐng)域,它用計(jì)算機(jī)生成逼真的三維視、聽、嗅覺等感覺,使人作為參與者通過適當(dāng)裝置,自然地對虛擬世界進(jìn)行體驗(yàn)和交互作用。使用者進(jìn)行位置移動時(shí),電腦可以立即進(jìn)行復(fù)雜的運(yùn)算,將精確的3D世界影像傳回產(chǎn)生臨場感。虛擬現(xiàn)實(shí)技術(shù)是利用計(jì)算機(jī)生成的虛擬環(huán)境逼真地模擬人在自然環(huán)境中的視覺、聽覺、運(yùn)動等行為的人機(jī)界面的新技術(shù)。利用虛擬現(xiàn)實(shí)技術(shù)沉浸感、與計(jì)算機(jī)的交互功能和實(shí)時(shí)表現(xiàn)功能,建立相關(guān)的地質(zhì)、水文地質(zhì)模型和專業(yè)模型,進(jìn)而實(shí)現(xiàn)對含水層結(jié)構(gòu)、地下水流、地下水質(zhì)和環(huán)境地質(zhì)問題的虛擬表達(dá)。具體實(shí)現(xiàn)步驟包括建立虛擬現(xiàn)實(shí)數(shù)據(jù)庫、三維地質(zhì)模型、地下水水流模型、專業(yè)模型和實(shí)時(shí)預(yù)測模型。虛擬仿真技術(shù),則是在多媒體技術(shù)、虛擬現(xiàn)實(shí)技術(shù)與網(wǎng)絡(luò)通信技術(shù)等信息科技迅猛發(fā)展的基礎(chǔ)上,將仿真技術(shù)與虛擬現(xiàn)實(shí)技術(shù)相結(jié)合的產(chǎn)物,是一種更高級的仿真技術(shù)。虛擬仿真技術(shù)以構(gòu)建全系統(tǒng)統(tǒng)一的完整的虛擬環(huán)境為典型特征,并通過虛擬環(huán)境集成與控制為數(shù)眾多的實(shí)體。實(shí)體可以是模擬器,也可以是其他的虛擬仿真系統(tǒng),也可用一些簡單的數(shù)學(xué)模型表示。實(shí)體在虛擬環(huán)境中相互作用,或與虛擬環(huán)境作用,以表現(xiàn)客觀世界的真實(shí)特征。虛擬仿真技術(shù)的這種集成化、虛擬化與網(wǎng)絡(luò)化的特征,充分滿足了現(xiàn)代仿真技術(shù)的發(fā)展需求。1.2仿真的應(yīng)用及過程1.2.1仿真的應(yīng)用仿真技術(shù)得以發(fā)展的主要原因,是它所帶來的巨大社會經(jīng)濟(jì)效益。50年代和60年代仿真主要應(yīng)用于航空、航天、電力、化工以及其他工業(yè)過程控制等工程技術(shù)領(lǐng)域。在航空工業(yè)方面,采用仿真技術(shù)使大型客機(jī)的設(shè)計(jì)和研制周期縮短20%。利用飛行仿真器在地面訓(xùn)練飛行員,不僅節(jié)省大量燃料和經(jīng)費(fèi)(其經(jīng)費(fèi)僅為空中飛行訓(xùn)練的十分之一),而且不受氣象條件和場地的限制。此外,在飛行仿真器上可以設(shè)置一些在空中訓(xùn)練時(shí)無法設(shè)置的故障,培養(yǎng)飛行員應(yīng)付故障的能力。訓(xùn)練仿真器所特有的安全性也是仿真技術(shù)的一個重要優(yōu)點(diǎn)。在航天工業(yè)方面,采用仿真實(shí)驗(yàn)代替實(shí)彈試驗(yàn)可使實(shí)彈試驗(yàn)的次數(shù)減少80%。在電力工業(yè)方面采用仿真系統(tǒng)對核電站進(jìn)行調(diào)試、維護(hù)和排除故障,一年即可收回建造仿真系統(tǒng)的成本。現(xiàn)代仿真技術(shù)不僅應(yīng)用于傳統(tǒng)的工程領(lǐng)域,而且日益廣泛地應(yīng)用于社會、經(jīng)濟(jì)、生物等領(lǐng)域,如交通控制、城市規(guī)劃、資源利用、環(huán)境污染防治、生產(chǎn)管理、市場預(yù)測、世界經(jīng)濟(jì)的分析和預(yù)測、人口控制等。對于社會經(jīng)濟(jì)等系統(tǒng),很難在真實(shí)的系統(tǒng)上進(jìn)行實(shí)驗(yàn)。1.2.2仿真的過程仿真是對現(xiàn)實(shí)系統(tǒng)的某一層次抽象屬性的模仿。人們利用這樣的模型進(jìn)行試驗(yàn),從中得到所需的信息,然后幫助人們對現(xiàn)實(shí)世界的某一層次的問題做出決策。仿真是一個相對概念,任何逼真的仿真都只能是對真實(shí)系統(tǒng)某些屬性的逼近。仿真是有層次的,既要針對所欲處理的客觀系統(tǒng)的問題,又要針對提出處理者的需求層次,否則很難評價(jià)一個仿真系統(tǒng)的優(yōu)劣。傳統(tǒng)的仿真方法是一個迭代過程,即針對實(shí)際系統(tǒng)某一層次的特性(過程),抽象出一個模型,然后假設(shè)態(tài)勢(輸入),進(jìn)行試驗(yàn),由試驗(yàn)者判讀輸出結(jié)果和驗(yàn)證模型,根據(jù)判斷的情況來修改模型和有關(guān)的參數(shù)。如此迭代地進(jìn)行,直到認(rèn)為這個模型已滿足試驗(yàn)者對客觀系統(tǒng)的某一層次的仿真目的為止??梢詮牟煌慕嵌葘Ψ抡婕右苑诸悺1容^典型的分類方法是:根據(jù)仿真系統(tǒng)的結(jié)構(gòu)和實(shí)現(xiàn)手段分類;根據(jù)仿真所采用的計(jì)算機(jī)類型分類;根據(jù)仿真時(shí)鐘與實(shí)時(shí)時(shí)鐘的比例關(guān)系分類;根據(jù)系統(tǒng)模型的特性分類。仿真有三個基本的活動,即系統(tǒng)建模(一次建模)、仿真建模(二次建模)和仿真試驗(yàn),聯(lián)系這三個活動的是計(jì)算機(jī)仿真的三要素,即系統(tǒng)、模型、計(jì)算(包括硬件和軟件)。系統(tǒng)系統(tǒng)計(jì)算機(jī)模型系統(tǒng)建模仿真試驗(yàn)仿真建模圖1-1仿真的基本活動傳統(tǒng)上,“系統(tǒng)建?!边@一活動屬于系統(tǒng)辨識技術(shù)范疇,仿真技術(shù)則側(cè)重于“仿真建模”,即針對不同形式的系統(tǒng)模型研究其求解算法,使其在計(jì)算機(jī)上得以實(shí)現(xiàn)。至于“仿真試驗(yàn)”這一活動,也往往只注重“仿真程序”的校核,至于如何將仿真試驗(yàn)的結(jié)果與實(shí)際系統(tǒng)的行為進(jìn)行比較這一根本性的問題-驗(yàn)證缺乏從方法學(xué)的高度進(jìn)行研究。實(shí)際系統(tǒng)實(shí)際系統(tǒng)系統(tǒng)建模仿真建模程序設(shè)計(jì)模型運(yùn)行修改系統(tǒng)模型修改仿真模型修改程序合理程序問題仿真模型數(shù)字模型仿真試驗(yàn)仿真結(jié)果處理圖1-2仿真過程1.3課題的主要研究內(nèi)容1.3.1海水運(yùn)動曲線的模擬在計(jì)算機(jī)圖形學(xué)中有著很多的建模方法,在本課題研究中主要利用風(fēng)噪聲理論,利用正弦函數(shù)以及一些數(shù)學(xué)表達(dá)式,研究和分析不同的取點(diǎn),對曲線變化的影響。根據(jù)函數(shù)的趨勢進(jìn)行合理的取點(diǎn),使得取的點(diǎn)和曲線相位形成對應(yīng)關(guān)系,模擬出一條符合海水運(yùn)動特性且平滑的曲線。1.3.2海水三維曲面的建立海水的三維模型以風(fēng)噪聲模型為基礎(chǔ),把風(fēng)噪聲模型模擬出的曲線作為海水三維模型的一個動態(tài)參數(shù),即作為模擬海水函數(shù)的子函數(shù),產(chǎn)生三維曲面,并不斷地加以改進(jìn),使曲面更隨機(jī)更柔和。通過加入光照模型,為增加圖形的真實(shí)感,模擬出滿意的海水形狀。1.3.3海水運(yùn)動過程的仿真動態(tài)效果目的在于模擬不同時(shí)間海水的運(yùn)動模型。由于風(fēng)力,海水會隨著風(fēng)向的運(yùn)動產(chǎn)生不同的模型,通過調(diào)試程序,將靜態(tài)曲面轉(zhuǎn)為動態(tài)海水,并通過仿真,生成便于查看效果的avi動畫。并通過不斷調(diào)試,使動態(tài)效果更為逼真明顯。2三維海水仿真模型2.1風(fēng)噪聲的應(yīng)用風(fēng)噪聲理論應(yīng)用領(lǐng)域較為廣泛,如物理、生物、社會、醫(yī)學(xué)、天文、地理等系統(tǒng)中。風(fēng)噪聲理論用于仿真自然界無規(guī)律的自然現(xiàn)象,有人將其用于樹木在風(fēng)中搖動的過程,有人將其用于布料,羽毛等仿真,由于海水運(yùn)動的隨機(jī)性質(zhì),在風(fēng)中不規(guī)則的運(yùn)動與他們有著相似的特點(diǎn),在本課題中,用風(fēng)噪聲理論建立海水的三維模型,將其應(yīng)用于海水運(yùn)動仿真的研究之中。本課題研究中風(fēng)噪聲理論主要涉及與Perlin兩種噪聲。噪聲是一個連續(xù)函數(shù),根據(jù)β而產(chǎn)生的不同形式的波形。Perlin噪聲是一個隨即函數(shù),用于產(chǎn)生不斷變化的頻率與振幅的正弦函數(shù)。這兩種噪聲函數(shù)可應(yīng)用于仿真自然界物體隨機(jī)運(yùn)動過程。2.2MATLAB函數(shù)為了顯示三維圖形,MATLAB提供了各種各樣的函數(shù)。有一些函數(shù)可在三維空間中畫線,而另一些可以畫曲面與線格框架。另外,顏色可以用來代表第四維。當(dāng)顏色以這種方式使用時(shí),由于它不再象照片中那樣顯示信息的自然屬性色彩,而且也不是基本數(shù)據(jù)的內(nèi)在屬性,所以它稱作偽彩色。2.2.1直接繪圖函數(shù)?fplotfplot命令的調(diào)用格式主要有:(1)fplot(fun,lims,str,tol):直接繪制函數(shù)y=fun(x)的圖形。其中,lims為一個向量,若lims只包含兩個元素則表示x軸的范圍:[xmin,xmax]。若lims包含四個元素則前兩個元素表示x軸的范圍:[xmin,xmax],后兩個元素表示y軸的范圍:[ymin,ymax]。str可以指定圖形的線型和顏色。tol的值小于1,代表相對誤差,默認(rèn)值為0.002,即0.2%。>>fplot(@humps,[-1,5])
%在[-1,5]范圍內(nèi)繪制函數(shù)humps上述命令中,@humps表示以函數(shù)句柄的形式引用函數(shù)。(2)fplot(fun,lims,n):用最少n+1個點(diǎn)來繪制函數(shù)fun的圖形,其中n大于等于1。>>fplot('x^2',[-11])
%在[-1,1]范圍內(nèi)繪制函數(shù)y=x^2
圖2-1fpolt繪制圖(例)?ezplot,ezplot3
ezplot命令是繪制符號表達(dá)式的自變量和對應(yīng)各函數(shù)值的二維曲線,ezplot3命令用于繪制三維曲線。
(1)曲線繪圖
語法:
ezplot(F,[xmin,xmax],fig)
%畫符號表達(dá)式F的圖形
說明:F是將要畫的符號函數(shù);[xmin,xmax]是繪圖的自變量范圍,省略時(shí)默認(rèn)值為[-2л,2л];fig是指定的圖形窗口,省略時(shí)默認(rèn)為當(dāng)前圖形窗口。
例:
>>y=sym('-1/3*x^3+1/3*x^4')
y=
-1/3*x^3+1/3*x^4
>>ezplot(y)
%繪制符號函數(shù)y在[-2л,2л]中的圖形
>>ezplot(y,[0,100])
%繪制符號函數(shù)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,所以其調(diào)用格式簡單,繪圖方便。
圖2-2ezmesh繪制圖(例)
(3)其它繪圖命令
MATLAB還提供了如下表所示的較常用繪圖命令。這些命令的舉例都是對字符串函數(shù)進(jìn)行繪圖,同樣也可用于符號表達(dá)式繪圖。
ezcontour畫等高線ezcontour('x*sin(t)',[-4,4])
ezcontourf畫帶填充顏色等高線ezcontourf('x*sin(t)',[-4,4])
ezmesh畫三維網(wǎng)線圖ezmesh('sin(x)*exp(-t)','cos(x)*exp(-t)','x',[0,2*pi])
ezmeshc畫帶等高線的三維網(wǎng)線圖ezmeshc('sin(x)*t',[-pi,pi])
ezpolar畫極坐標(biāo)圖
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網(wǎng)格法繪制三維曲面⑴產(chǎn)生三維數(shù)據(jù)在MATLAB中,利用meshgrid函數(shù)產(chǎn)生平面區(qū)域內(nèi)的網(wǎng)格坐標(biāo)矩陣。其格式為:x=a:d1:b;y=c:d2:d;[X,Y]=meshgrid(x,y);語句執(zhí)行后,矩陣X的每一行都是向量x,行數(shù)等于向量y的元素的個數(shù),矩陣Y的每一列都是向量y,列數(shù)等于向量x的元素的個數(shù)。⑵繪制三維曲面的函數(shù)surf函數(shù)和mesh函數(shù)的調(diào)用格式為:mesh(x,y,z,c)surf(x,y,z,c)一般情況下,x,y,z是維數(shù)相同的矩陣。x,y是網(wǎng)格坐標(biāo)矩陣,z是網(wǎng)格點(diǎn)上的高度矩陣,c用于指定在不同高度下的顏色范圍。例:用曲面圖表現(xiàn)函數(shù)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海水三維模型的建立與調(diào)試海水三維模型的構(gòu)建是本課題的重點(diǎn)之一,在通過學(xué)習(xí)與研究之后,深知海水運(yùn)動特性的了解是基礎(chǔ),計(jì)算機(jī)圖形學(xué)和面向?qū)ο蟮木幊碳夹g(shù)是工具,三者有效地結(jié)合是本課題得以順利完成的關(guān)鍵。在本課題中,對海水運(yùn)動特性進(jìn)行分析,要得到海水運(yùn)動的3D效果,這就要求較適當(dāng)?shù)卦O(shè)置二、三維仿真的參數(shù),最后才能實(shí)現(xiàn)較好的仿真效果。由于海水運(yùn)動時(shí)隨機(jī)的,還具有不對稱性、不規(guī)則性,因此,可采用曲面造型的方法來定義海水的三維模型。三維模型從一系列點(diǎn)開始,理清了各關(guān)鍵點(diǎn)的坐標(biāo)以及各點(diǎn)之間的連接關(guān)系之后,先構(gòu)成柔和曲線,然后由這些曲線構(gòu)成曲面,最后形成一個三維模型。在此基礎(chǔ)上,只需對三維模型進(jìn)行一些紋理以及光照的修飾,就能得到整塊海水在計(jì)算機(jī)中的三維仿真顯示情況。建模步驟流程:取點(diǎn)二維曲線三維曲面圖2-5建模步驟流程圖2.3.1點(diǎn)到二維曲線曲線是動點(diǎn)運(yùn)動時(shí),方向連續(xù)變化所成的線。在平面直角坐標(biāo)系內(nèi),如果一條曲線上的點(diǎn)都能滿足符合某種條件,而滿足該條件的點(diǎn)又均位于這條曲線上,那么我們就可以把這種對應(yīng)關(guān)系寫成一個確定的函數(shù)式:y=f(x)這個函數(shù)式就稱為曲線的方程;同樣,該曲線即為這個方程的曲線。繪制曲線使用的是matlab軟件中的plot函數(shù)。plot是繪制二維圖形的最基本函數(shù),它是針對向量或矩陣的列來繪制曲線的。也就是說,使用plot函數(shù)之前,必須首先定義好曲線上每一點(diǎn)的x及y坐標(biāo),常用格式為:
(1)plot(x)當(dāng)x為一向量時(shí),以x元素的值為縱坐標(biāo),x的序號為橫坐標(biāo)值繪制曲線。
(2)plot(x,y)以x元素為橫坐標(biāo)值,y元素為縱坐標(biāo)值繪制曲線。
(3)plot(x,y1,x,y2,…)以公共的x元素為橫坐標(biāo)值,以y1,y2,…元素為縱坐標(biāo)值繪制多條曲線。Plot是最常用的繪圖函數(shù),用于繪制線性二維圖。有多條曲線時(shí),循環(huán)使用由坐標(biāo)軸顏色順序?qū)傩远x的顏色,以區(qū)別不同的曲線;之后再循環(huán)使用由坐標(biāo)軸線型順序?qū)傩远x的線型,以區(qū)別不同的曲線。要生成理想的曲線,就要采用合適的算法和公式來得到。如果不按照正確的算法來取點(diǎn),則無法得到符合預(yù)期效果的曲線。以下兩幅圖片均是隨機(jī)取點(diǎn)得到的錯誤曲線圖:圖2-6錯誤曲線圖(一)圖2-7錯誤曲線圖(二)本課題要得到正確的曲線,需要采用風(fēng)噪聲算法。這種算法主要是利用三角函數(shù)的幅度變化,以及對曲線的分段來進(jìn)行構(gòu)圖,然后根據(jù)取點(diǎn)來編寫出函數(shù),完成所需要的曲線,并觀察效果。風(fēng)噪聲函數(shù)的基本公式如下:(2-3)公式2-3為風(fēng)噪聲函數(shù)的基本公式,即為一個正弦函數(shù),其中A表示該點(diǎn)的振幅。表示該點(diǎn)的相位。顯然Y是取決于該點(diǎn)的相位的。*Nπ且R為整數(shù)(2-4)公式2-4為相位的算法。其中代表取點(diǎn)的范圍(即曲線分割的段數(shù))。代表的是范圍中第R個點(diǎn)的X坐標(biāo)的值。表示的是終點(diǎn)的X坐標(biāo)的值。而的取值范圍就是[0,Nπ]。為了表示曲線的隨機(jī)性,我們需要用到以下幾個公式:(2-5)(2-6)(2-7)在公式2-5中,K表示兩相鄰點(diǎn)的所在直線的斜率。利用求出的斜率K,并根據(jù)公式2-6可以求出相鄰兩點(diǎn)所在直線的截距常數(shù)b。最后通過公式2-7,可以表達(dá)出每段曲線中各個幅度之間的相位關(guān)系。根據(jù)風(fēng)噪聲函數(shù)來進(jìn)行取點(diǎn),根據(jù)幅度的變化來決定各個點(diǎn)的坐標(biāo)值。我的取點(diǎn)坐標(biāo)值詳細(xì)情況如下表2-1所示:表2-1正確曲線(一)各點(diǎn)坐標(biāo)X的坐標(biāo)值對應(yīng)的相位(°)y的坐標(biāo)值y的坐標(biāo)值減中線值(y-11)X0400-60Y0110X1480-24Y14534X256012Y27-4X364048Y3-25-36X472084Y4-36-47X5800120Y5-27-38X6880156Y6-7-18X7960192Y72918X81040228Y85847X91120264Y93726X101200300Y105-6X111280336Y113524X121360372Y126150X131440408Y134029X141520444Y14-12-23X151600480Y15-45-56由表中的各點(diǎn)關(guān)系分析得,曲線的初始相位為-1/3π。曲線的X坐標(biāo)從400到1600,兩端點(diǎn)之間的距離是1200;Y坐標(biāo)隨著角度的變化而變化著,其變化量就由自己在取點(diǎn)時(shí)控制,Y的中線值為11(即Y所有取值的平均值)。首先計(jì)算第一條曲線中第一段的A值,利用所取各點(diǎn)坐標(biāo)值,以及函數(shù)的特性,同時(shí),通過一些數(shù)學(xué)函數(shù)的計(jì)算與前后關(guān)鍵點(diǎn)之間關(guān)系的分析,得到關(guān)系式A=x*k+b,并進(jìn)一步深入地分析與探究,找到了簡單合適的算法,避免了一系列繁瑣的過程,減少了復(fù)雜的計(jì)算。曲線中第一二段的計(jì)算過程如下:從表中可以看出第一段X從X0=400到X1=480,X的變化范圍為[400,1600],所在的相位范圍是(0到3*pi),則公式2-4中=480,=1600,=400,可得第一段相位φ=π/5,再將Y=34帶入公式2-3中,可得A=57.845,根據(jù)Y=A*sin(3*pi*(X-400)/1200-pi/3)就能畫出第一段曲線。運(yùn)用公式A2=y2/sin(3*pi*(x2-400)/1200-pi/3)可得第二段的振幅A2,然后用公式(2-5),即k=(A2-A1)/80,來得出第二段起始點(diǎn)和終點(diǎn)所在直線的斜率K,根據(jù)這個斜率K,通過公式(2-6)b=A1-k*x1來的到這條直線的截距b,最后通過公式(2-7)A=k*X+b,就能得到第二段曲線X坐標(biāo)值和振幅A值變化之間的線性關(guān)系。曲線共由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;運(yùn)用MATLAB運(yùn)行后結(jié)果如圖2-8所示:圖2-8正確曲線圖(一)在掌握了曲線的生成方法之后,運(yùn)用同樣方法確定了另外一條減少了取點(diǎn)個數(shù)的曲線,如下:表2-2正確曲線(二)各點(diǎn)坐標(biāo)X的坐標(biāo)值對應(yīng)的相位(°)y的坐標(biāo)值y的坐標(biāo)值減中線值(y-12)X0400-60Y0120X150030Y14937X2600120Y27-5X3700210Y32614X4800300Y44836X5900390Y5-25-37X61000480Y6-33-45編寫程序,運(yùn)用MATLAB軟件運(yùn)行之后顯示結(jié)果如圖2-9:圖2-9正確曲線圖(二)2.3.2二維曲線到三維曲面順利生成了二維曲線之后,接著就是要建立三維曲面。主要的思路是在二維曲線的基礎(chǔ)上增加一個Z坐標(biāo),使得平面坐標(biāo)系變成空間坐標(biāo)系,從而得到了二維到三維的效果。在繪制曲面過程中主要用到以下幾個命令:?Meshgird命令:Meshgird命令的意義是在兩個坐標(biāo)軸上的點(diǎn)在平面上畫格。它用于從數(shù)組a和b產(chǎn)生網(wǎng)格。生成的網(wǎng)格矩陣A和B大小是相同的。它也可以是更高維的。生成size(b)Xsize(a)大小的矩陣A和B。它相當(dāng)于a從一行重復(fù)增加到size(b)行,把b轉(zhuǎn)置成一列再重復(fù)增加到size(a)列。因此命令等效于:A=ones(size(b))*a;(2-8)B=b'*ones(size(a))(2-9)ones(size(b))是指產(chǎn)生一個和矩陣b的位數(shù)相同的全1矩陣。?Surf命令:Surf命令是繪制著色表面圖;surf(X,Y,Z):X,Y利用分格函數(shù)[X,Y]=meshgrid(x,y)其中x和y是向量,通過meshgrid函數(shù)就可將x和y指定的區(qū)域轉(zhuǎn)換成為矩陣X和Y。這樣在繪圖時(shí)就可以先用meshgrid函數(shù)產(chǎn)生在x-y平面上的二維的網(wǎng)格數(shù)據(jù),再以一組z軸的數(shù)據(jù)對應(yīng)到這個二維的網(wǎng)格,即可畫出三維的曲面。?Light命令:Light命令式用來生成一個光照對象。該對象除了具有其他對象也具有的通用屬性外,還具有三個非常重要屬性:Color:光線的顏色。Style:shezhi值為infinite(無窮遠(yuǎn))或?yàn)閘ocal(附近)。Position:光源所處的位置,參數(shù)形式為[a,b,c],單位使用當(dāng)前坐標(biāo)單位。如果光源設(shè)為附近,該參數(shù)表示光源位置;如果光源被設(shè)置成為無窮遠(yuǎn),該參數(shù)表示光源方向。用light函數(shù)創(chuàng)建光源對象,調(diào)用格式:Light(‘propertyName’,‘propertyValue,…),在當(dāng)前坐標(biāo)軸對象中創(chuàng)建光源對象,‘propetyName’主要包括color、position和style等屬性,color的值用colorspec確定,默認(rèn)為白色;position由[x,y]坐標(biāo)確定,默認(rèn)值為[101];style的值為infinite(無限遠(yuǎn)處的平行光源)或local(點(diǎn)光源),默認(rèn)值為infinite.曲面主程序主要由這三個函數(shù)組成,下面是將二維曲線轉(zhuǎn)為三維曲面的主程序及程序說明:clear%清除變量clc%清屏X=400:1599%確定畫圖時(shí)橫坐標(biāo)變化范圍Y=400:1599%確定畫圖時(shí)縱坐標(biāo)變化范圍[X,Y]=meshgrid(X,Y)%生成網(wǎng)格化,把參數(shù)X,Y由向量變成矩陣[XX,YY]=meshgrid(zhenfu1(X),zhenfu1(Y))%程序調(diào)用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%對圖形進(jìn)行陰影處理主程序中調(diào)用了一個子函數(shù),也就是我們的振幅函數(shù)。振幅函數(shù)決定了相位的變化以及X,Y的取值范圍。振幅函數(shù)和畫曲線程序取的數(shù)據(jù)是一致的,程序大體的框架結(jié)構(gòu)也相似。下面是我的振幅函數(shù)的大致程序:functiona=zhenfu(aa)%定義函數(shù)A1=57.845;%定義第一個點(diǎn)振幅aa(1)=400;x1=400;%定義第一段曲線起點(diǎn)的橫坐標(biāo)x1x2=480;%定義第二段曲線終點(diǎn)的橫坐標(biāo)x2X1=[aa(1):aa(1)+79];%定義第一段曲線橫坐標(biāo)的變化范圍和步長X2=X1+80;%定義第二段曲線橫坐標(biāo)的變化范圍和步長y1=34;%定義第一段曲線起點(diǎn)的縱坐標(biāo)y1y2=-8;%定義第二段曲線起點(diǎn)的縱坐標(biāo)y2A2=y2/sin(3*pi*(x2-400)/1200-pi/3);%定義振幅計(jì)算公式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為了能夠便于計(jì)算,我們把第一段的振幅(x0到x1這段)看做一個點(diǎn),并計(jì)算出那個點(diǎn)的振幅(計(jì)算方法在上一節(jié)中已經(jīng)介紹過),視作實(shí)際意義上第一段(x0點(diǎn)到x1點(diǎn)這段)的振幅。有了第一段A的值,就可以通過套用計(jì)算公式來計(jì)算后段程序的數(shù)據(jù)。振幅函數(shù)完成以后,主函數(shù)通過函數(shù)調(diào)用,就可以生成三維曲面了。在函數(shù)調(diào)用的時(shí)侯需要注意的是,由于主程序里涉及到矩陣的運(yùn)算,即:[X,Y]=meshgrid(X,Y)[XX,YY]=meshgrid(zhenfu1(X),zhenfu1(Y))Z=0.3*XX.*exp(-0.2*X)+0.8*YY根據(jù)上面的式子,我們知道Z的表達(dá)式中包含了矩陣的運(yùn)算,則在取X、Y變化范圍時(shí)必須保證X與Y包含的點(diǎn)數(shù)要相同,若所取范圍內(nèi)元素個數(shù)不相等,振幅函數(shù)將不能正常運(yùn)行。這里所說的點(diǎn)數(shù)相同,指的不是兩者的范圍要完全一樣,可以取X=400:1599,Y=400:1599,很顯然,X與Y之間的數(shù)據(jù)相等;也可以取X=400:1599,Y=400:.5:999.5,X與Y之間包含的數(shù)據(jù)都是1200個。所以,在定義X與Y的變化范圍時(shí),只要保證二者的元素個數(shù)相同就可以了。在完成了振幅函數(shù)的編寫后,就可以開始調(diào)試主程序了。主程序里調(diào)用振幅函數(shù)的語句,即[XX,YY]=meshgrid(zhenfu1(X),zhenfu1(Y)),可以使用相同的振幅函數(shù),也可以使用不相同的。主程序調(diào)試,主要是不斷改變生成的Z模型來達(dá)到想要的效果。當(dāng)使用Z=0.3*XX.*exp(-0.2*X)+0.8*YY*sin(X)模型時(shí),通過運(yùn)用MATLAB軟件運(yùn)行之后顯示結(jié)果如圖2-10:圖2-10錯誤曲面圖(一)當(dāng)使用Z=0.3*XX.*exp(-0.2*X)*sin(X)+cos(YY)模型時(shí),通過運(yùn)用MATLAB軟件運(yùn)行之后顯示結(jié)果如圖2-11:圖2-11錯誤曲面圖(二)很明顯,上面兩個模型生成的曲面都不平滑,且都不符合海水特性。當(dāng)使用Z=0.3*XX.*exp(-0.2*X)+0.8*YY模型,通過運(yùn)用MATLAB軟件運(yùn)行之后顯示結(jié)果如圖2-12:圖2-12曲面調(diào)試圖(一)這個模型生成的曲面比之前的曲面平滑了許多,也有接近海水的形態(tài)了,但是在Z方向上的線條太過生硬,且不夠隨機(jī)。還需要在這個基礎(chǔ)上進(jìn)行調(diào)試。當(dāng)使用Z=XX.*sin(-X./500-Y./300)-YY.*exp(-Y)模型,通過運(yùn)用MATLAB軟件運(yùn)行之后顯示結(jié)果如圖2-13:圖2-13曲面調(diào)試圖(二)這個模型生成的曲面看起來基本具備海水的特征了。由于之前曲線的取點(diǎn)為1200個,考慮到點(diǎn)數(shù)過多容易使畫面看起來較凌亂,于是我改為在圖2-9曲線的基礎(chǔ)上生成曲面,在主程序中X=400:1:999,Y=400:.5:699.5,這樣取點(diǎn)只為原來的一半600個。并用了兩個不同的振幅函數(shù),并在其前面加了系數(shù),使[XX,YY]=meshgrid(2*zhenfu1(X^2),3*zhenfuy(Y)),將上個Z表達(dá)式中的系數(shù)進(jìn)行修改調(diào)試,發(fā)現(xiàn)只要改變sin(-X./50-Y./50)的系數(shù),就能得到不同波浪個數(shù)的曲面,下面兩圖為Z=XX.*sin(-X./50-Y./50)-YY.*exp(-Y)(圖2-14)和Z=XX.*sin(-X./150-Y./150)-YY.*exp(-Y)(圖2-15)時(shí),得到的不同波浪個數(shù)的曲面:圖2-14曲面調(diào)試圖(三)圖2-15曲面調(diào)試圖(四)又經(jīng)過不斷的調(diào)試,當(dāng)使Z的表達(dá)式為Z=XX.*sin(-X./400-Y./180)-YY.*exp(-Y)時(shí),得到了較為滿意的曲面,如圖2-16所示:圖2-16曲面調(diào)試圖(五)上面提到過,生成矩陣時(shí)所用的振幅函數(shù)可以不相同,為了使生成的曲面更加隨機(jī),我使用了兩個不同的振幅函數(shù)。在生成矩陣時(shí)我將兩個振幅函數(shù)的位置調(diào)換了一下,即使[XX,YY]=meshgrid(2*zhenfuy(X^2),3*zhenfu1(Y)),通過MATLAB軟件運(yùn)行后得到如圖2-17的曲面圖:圖2-17曲面調(diào)試圖(六)通過觀察可以知道,與圖2-16的曲面相比,就是在y方向的波浪個數(shù)不相同,曲面還是比較平滑,符合海水特性。3動態(tài)海水的模擬3.1海水運(yùn)動過程的算法海水模型是通過對于真實(shí)自然界海水的觀察,利用鳳噪聲理論進(jìn)行建模。簡單的海水動力學(xué)模型可以用正弦波來表示海水的運(yùn)動,運(yùn)動方程如下: (3-1)波浪中的頂點(diǎn)向量是x,y,time,period的函數(shù) (3-2)(3-3)=1海水在自然環(huán)境的影響下,其運(yùn)動形式在不斷變化。為了模擬海水的運(yùn)動需要對海水運(yùn)動的規(guī)律進(jìn)行總結(jié)。在海浪的統(tǒng)計(jì)模型中,浪高h(yuǎn)(x,t)是隨著給定的位置和時(shí)間而隨機(jī)變化的,它把浪的高度域分成一組具有不同振幅和相位的凹波。假定知道這些波的振幅和相位,這樣就可以用快速傅立葉變換法估計(jì)其高度值:(3-4)其中是我們估計(jì)點(diǎn)的水平高度,K=2/,(K,t)是復(fù)數(shù),表示波在時(shí)刻的振幅和相位。由于我們使用的是離散傅立葉變換,因此只有有限個波長和位置。假定是高度,是網(wǎng)格分辨率(對FFT而言必須為2的n次方,n為整數(shù)),那么就可以把波長記為:(3-5)其中n,m:一r/2≤n+≤r/2,r必須為2的倍數(shù).同時(shí)為了繪制波浪.必須計(jì)算高度域方向的梯度值來獲得向量。比較傳統(tǒng)的方法是通過計(jì)算差值,這可以通過相鄰的網(wǎng)格點(diǎn)來近似得到,但對于那些小波長的傾斜波來講這可能非常糟糕由于現(xiàn)在計(jì)算機(jī)的計(jì)算能力驚人,所以可用下面的公式來估計(jì)其總和:(3-6)到現(xiàn)在為止已經(jīng)知道可以用波的振幅和相位的復(fù)數(shù)域得到高度域。這樣只要得到振幅和相位本身,就可以繪制海浪的動畫效果。3.2海水動態(tài)仿真的實(shí)現(xiàn)與調(diào)試離散模型動態(tài)化分為以下幾個步驟:(1)確定動畫的幀數(shù)nframes(2)畫出圖形(3)為nframes幀幅圖形分配足夠內(nèi)存空間 (4)用getframe生成動畫的數(shù)據(jù)矩陣(5)以每秒n幅的速度播放動畫將靜態(tài)曲面轉(zhuǎn)為動態(tài)化的主程序如下:clearclcs=1;x1=0;%確定起始點(diǎn)橫坐標(biāo)x1及其增量nframes=8;%確定動畫總幀數(shù)aviobj=avifile('donghua.avi','fps',1);%初始化建立AVI文件;fork=1:nframesx1=x1+s;%確定畫圖時(shí)橫坐標(biāo)終止值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))%程序調(diào)用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%定義坐標(biāo)軸范圍M(k)=getframe;%將當(dāng)前圖形存入矩陣M(k)Movie=getframe(gcf);%保存動畫aviobj=addframe(aviobj,Movie);%保存動畫endaviobj=close(aviobj);%關(guān)閉文件,結(jié)束數(shù)值仿真模擬過程在仿真動態(tài)海水時(shí),由于取點(diǎn)較多,數(shù)據(jù)量大,所以需要將其運(yùn)動過程轉(zhuǎn)為動畫avi模式保存起來,在查看仿真效果時(shí)改善其不流暢的問題,便于查看仿真效果。在初始的調(diào)試過程中,結(jié)果生成的動畫海水的動態(tài)效果并不明顯。通過對參數(shù)的調(diào)試,我發(fā)現(xiàn)當(dāng)增量s改變時(shí),海水的動態(tài)效果也會跟著發(fā)生變化。當(dāng)s=1時(shí),海水的運(yùn)動幅度很小,并不明顯;當(dāng)s=15時(shí),海水運(yùn)動的幅度變大,易于觀察。我們可以將增量s不同的情況下生成的海水運(yùn)動看成不同風(fēng)速下海水產(chǎn)生的形態(tài),由于風(fēng)速隨機(jī)的,那么s的取值也要隨機(jī)。在這里,我使用了隨機(jī)函數(shù)rand。我令s=10*rand+10*rand,rand產(chǎn)生的是0到1之間的隨機(jī)數(shù),則我取的s的隨機(jī)值的范圍就是[0,20],每運(yùn)行一次,就可以得到不同的s,則每次生成的動態(tài)海水都有不同的形態(tài),這樣,海水運(yùn)動就更具隨機(jī)性了。4總結(jié)4.1本課題中所完成的工作①熟悉MATLAB的操作界面。②了解風(fēng)噪聲函數(shù),掌握基本的風(fēng)噪聲函數(shù)公式推導(dǎo)。③通過分析與研究海水的三維形狀,并運(yùn)用風(fēng)噪聲理論通過計(jì)算合理取點(diǎn)確定二維曲線。④從海水的二維曲線入手,建立三維模型,不斷調(diào)試,得到較理想的海水曲面。⑤分析海水的運(yùn)動特征,用數(shù)學(xué)模型表示海水的動態(tài)運(yùn)動過程,形成海水動態(tài)運(yùn)動的效果。⑥將海水運(yùn)動過程保存為avi格式的動畫,便于觀察海水動態(tài)效果。⑦結(jié)合理論知識、建模方法與步驟以及本課題的研究思路,編寫程序,運(yùn)用MATLAB軟件進(jìn)行程序調(diào)試,獲得最佳仿真效果。4.2遇到的問題及解決①最初在沒有透徹理解曲線取點(diǎn)的計(jì)算方法是隨機(jī)取點(diǎn),導(dǎo)致無法生成期望的曲線,后來經(jīng)過研究學(xué)習(xí),了解了正確的取點(diǎn)方法,得到了正確的曲線。②二維曲線到三維曲面的轉(zhuǎn)化時(shí),未注意主函數(shù)內(nèi)矩陣元素的個數(shù)要保持一致,導(dǎo)致振幅程序無法正確運(yùn)行,經(jīng)過老師的指導(dǎo),更正了取點(diǎn)范圍。③得到的三維曲面不夠平滑,效果不佳。經(jīng)過模型的不斷更改,得到了較為理想的海水曲面。④生成的動態(tài)效果不明顯,不易觀察。不斷調(diào)試主程序中的參數(shù),加大運(yùn)動幅度,改善動態(tài)效果。4.3本課題的研究結(jié)論隨著現(xiàn)代科學(xué)技術(shù)快速發(fā)展,對真實(shí)感圖形技術(shù)提出了越來越高的要求,三維動態(tài)模型的模擬需要許多技術(shù)的綜合,在很多方面都有很大的研究意義。通過本課題的研究使得我對三維海水的特性知識了解更加透徹。同時(shí),對于有關(guān)風(fēng)噪聲的相關(guān)理論知識也有了更進(jìn)一步的學(xué)習(xí)與掌握。在本課題的研究中,運(yùn)用了風(fēng)噪聲函數(shù)進(jìn)行建模繪制曲線;將二維平面曲線轉(zhuǎn)為三維空間曲面;接著將靜態(tài)海水曲面動態(tài)化,得到個具有真實(shí)感的三維動畫模型。這樣就完成了海水運(yùn)動仿真過程。由于時(shí)間比較緊迫,很多方面沒有進(jìn)行深入的研究,如怎樣減少運(yùn)算的復(fù)雜度等。由于海水仿真技術(shù)還在一個相對發(fā)展的過程中,所以還是存在一定的不足之處,諸如海水波浪拍擊所成浪花之類的現(xiàn)象的仿真,這將是我們下一步研究的重點(diǎn)。致謝光陰荏苒,大學(xué)的生涯即將結(jié)束,四年的學(xué)習(xí)生活使我受益匪淺。經(jīng)歷幾個月的磨礪,畢業(yè)設(shè)計(jì)終于完成。整個設(shè)計(jì)過程從課題的了解,資料的收集,程序的調(diào)試到最后論文的完成,我得到了許多幫助。在此我要向他們表達(dá)最誠摯的謝意。我要感謝悉心指導(dǎo)我完成畢業(yè)設(shè)計(jì)的李蓓蓓老師。李老師是一名有豐富教學(xué)經(jīng)驗(yàn)的優(yōu)秀教師。她培養(yǎng)了我的堅(jiān)韌的意志,自主創(chuàng)新能力及努力追求嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度。從拿到畢設(shè)時(shí)的無從下手到論文的最終完成,李老師給了我非常大的幫助,在我遇到難題時(shí)為我耐心講解,幫助我開拓研究思路。同時(shí),我還要感謝我的輔導(dǎo)員董巧新老師,感謝董老師幾年來在學(xué)習(xí)、生活、思想上給予我的關(guān)心、幫助和支持,給了我很大的信心。也要感謝我的班導(dǎo)師陳力平老師,對我嚴(yán)格要求,培養(yǎng)了我發(fā)現(xiàn)問題和解決問提的能力。他細(xì)心的教導(dǎo)跟嚴(yán)謹(jǐn)?shù)乃悸穾Ыo我無限的啟迪。感謝在大學(xué)校園中教過我的每一位老師幾年來對我的諄諄教誨。因?yàn)橛辛怂麄儑?yán)格、無私、高質(zhì)量的教導(dǎo),我才能在學(xué)習(xí)過程中迅速提升能力。因?yàn)橛辛怂麄?,我才可以順利的完成所有學(xué)習(xí)任務(wù)。感謝四年來一直與我互勉互勵的同學(xué)們,在大家的共同努力下,我們始終擁有良好的學(xué)習(xí)環(huán)境,也正因?yàn)橛兴麄儯业膶W(xué)習(xí)生活增添了許多溫馨與樂趣。我很榮幸能在這樣一個集體中度過大學(xué)四年。感謝我的家人,在生活和學(xué)習(xí)中給予我的支持與理解。感謝參與我論文答辯的眾位老師,他們給了我審視四年學(xué)習(xí)成果的機(jī)會。在論文即將完成之際,我在這里再次向所有給予我無言幫助的師長、同學(xué)、朋友致以深深的謝意!參考文獻(xiàn)[1]趙書蘭.MATLABR2008圖像與動畫編程實(shí)例[M].北京:化學(xué)工業(yè)出版社,2009;[2]龔聲蓉,劉純平,王強(qiáng)等.數(shù)字圖像處理與分析[M].北京:清華大學(xué)出版社,2006;[3]徐金明,張孟喜,丁濤.MATLAB實(shí)用教程[M].北京:清華大學(xué)出版社,2005;[4]梅志紅,楊萬銓.MATLAB程序設(shè)計(jì)基礎(chǔ)及其應(yīng)用[M].北京:清華大學(xué)出版社,2005;[5]張汗靈.MATLAB在圖像處理中的應(yīng)用[M].清華大學(xué)出版社2005[6]岡薩雷斯.數(shù)字圖像處理(MATLAB版)[M].電子工業(yè)出版社2005-09-01[7]殷銘張興華戴先中.基于的遺傳算法實(shí)現(xiàn)[J].電子應(yīng)用技術(shù)2000年第一期[8]陳桂明等.MATLAB數(shù)理統(tǒng)計(jì)(6.x)[M].北京:科學(xué)出版社2002年[9]RichardAJohnson,DeanWWhichern.AppliedMultivariateStatisticalAnalysis[M].北京:清華大學(xué)出版社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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)寵物租房合同范例
- 包裝物購銷合同范例
- 中介合同范本樣本
- 農(nóng)副產(chǎn)品馬蹄收購合同范本
- 別墅土建付款合同范本
- 涼山校園保潔合同范本
- 人資服務(wù)合同范本
- 全款車抵押合同范本
- 公里樁合同范本
- 勞務(wù)派遣未簽合同范例
- 2025年湖南城建職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫完美版
- 武漢2025年湖北武漢市教育系統(tǒng)專項(xiàng)招聘教師679人筆試歷年參考題庫附帶答案詳解
- 高中主題班會 借哪吒精神燃開學(xué)斗志!課件-高一下學(xué)期開學(xué)第一課班會
- 2024年12月2025浙江湖州市長興縣綜合行政執(zhí)法局公開招聘輔助執(zhí)法人員8人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 濰坊2025年山東濰坊市產(chǎn)業(yè)技術(shù)研究院招聘7人筆試歷年參考題庫附帶答案詳解
- 《南非綜合簡要介紹》課件
- 2023六年級數(shù)學(xué)下冊 第2單元 百分?jǐn)?shù)(二)綜合與實(shí)踐 生活與百分?jǐn)?shù)說課稿 新人教版
- 財(cái)務(wù)管理畢業(yè)論文
- 大模型關(guān)鍵技術(shù)與應(yīng)用
- 小學(xué)五年級體育教案全冊(人教版)
- 2024《整治形式主義為基層減負(fù)若干規(guī)定》全文課件
評論
0/150
提交評論