2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在介紹編程之前,先讓我們來回顧一下在高中的物理課上我們所學(xué)的關(guān)于水波的知識(shí)。水波有如下幾個(gè)特性:?擴(kuò)散擴(kuò)散:當(dāng)你投一塊石頭到水中,你會(huì)看到一個(gè)以石頭入水點(diǎn)為圓心所形成的一圈圈的水波,這里,你可能會(huì)被這個(gè)現(xiàn)象所誤導(dǎo),以為水波上的每一點(diǎn)都是以石頭入水點(diǎn)為中心向外擴(kuò)散的,這是錯(cuò)誤的。實(shí)際上,水波上的任何一點(diǎn)在任何時(shí)候都是以自己為圓心向四周擴(kuò)散的,之所以會(huì)形成一個(gè)環(huán)狀的水波,是因?yàn)樗ǖ膬?nèi)部因?yàn)閿U(kuò)散的對(duì)稱而相互抵消了。?衰減衰減:因?yàn)樗怯凶枘?/p>

2、的,否則,當(dāng)你在水池中投入石頭,水波就會(huì)永不停止的震蕩下去。?水的折射水的折射:因?yàn)樗ㄉ喜煌攸c(diǎn)的傾斜角度不同,所以,因?yàn)樗恼凵?,我們從觀察點(diǎn)垂直往下看到的水底并不是在觀察點(diǎn)的正下方,而有一定的偏移。如果不考慮水面上部的光線反射,這就是我們能感覺到水波形狀的原因。?反射反射:水波遇到障礙物會(huì)反射。?衍射衍射:忽然又想到這一點(diǎn),但是在程序里卻看不到,如果能在水池中央放上一塊礁石,或放一個(gè)中間有縫的隔板,那么就能看到水波的衍射現(xiàn)象了。好

3、了,有了這幾個(gè)特性,再運(yùn)用數(shù)學(xué)和幾何知識(shí),我們就可以模擬出真實(shí)的水波了。但是,如果你曾用3DMax做過水波的動(dòng)畫,你就會(huì)知道要渲染出一幅真實(shí)形狀的水波畫面少說也得好幾十秒,而我們現(xiàn)在需要的是實(shí)時(shí)的渲染,每秒種至少也得渲染20幀才能使得水波得以平滑的顯示??紤]到電腦運(yùn)算的速度,我們不可能按照正弦函數(shù)或精確的公式來構(gòu)造水波,不能用乘除法,更不能用sin、cos,只能用一種取近似值的快速算法,盡管這種算法存在一定誤差,但是為了滿足實(shí)時(shí)動(dòng)畫的要

4、求,我們不得不這樣做。首先我們要建立兩個(gè)與水池圖象一樣大小的數(shù)組buf1[PoolWidthPoolHeight]和buf2[PoolWidthPoolHeight](PoolWidth=水池圖象的象素寬度、PoolHeight=水池圖象的象素高度),用來保存水面上每一個(gè)點(diǎn)的前一時(shí)刻和后一時(shí)刻波幅數(shù)據(jù),因?yàn)椴ǚ簿痛砹瞬ǖ哪芰?,所以以后我們稱這兩個(gè)數(shù)組為波能緩沖區(qū)。水面在初始狀態(tài)時(shí)是一個(gè)平面,各點(diǎn)的波幅都為0,所以,這兩個(gè)數(shù)組的初始值

5、都等于0。下面來推導(dǎo)計(jì)算波幅的公式下面來推導(dǎo)計(jì)算波幅的公式我們假設(shè)存在這樣一個(gè)一次公式,可以在任意時(shí)刻根據(jù)某一個(gè)點(diǎn)周圍前、后、左、右四個(gè)點(diǎn)以及該點(diǎn)自身的振幅來推算出下一時(shí)刻該點(diǎn)的振幅,那么,我們就有可能用歸納法求出任意時(shí)刻這個(gè)水面上任意一點(diǎn)的振幅。如左圖,你可以看到,某一時(shí)刻,X0點(diǎn)的振幅除了受X0點(diǎn)自身振幅的影響外,同時(shí)受來自它周圍前、后、左、右四個(gè)點(diǎn)(X1、X2、X3、X4)的影響(為了簡(jiǎn)化,我們忽略了其它所有點(diǎn)),而且,這四個(gè)點(diǎn)對(duì)

6、a0點(diǎn)的影響力可以說是機(jī)會(huì)均等的。那么我們可以假設(shè)這個(gè)一次公式為:交換波能數(shù)據(jù)緩沖區(qū)shtptmp=buf1buf1=buf2buf2=ptmp寫到這里,我已經(jīng)兩眼發(fā)暈了,呼呼——,先休息一下......好了,下面再來根據(jù)算出的波幅數(shù)據(jù)對(duì)頁面進(jìn)行渲染。好了,下面再來根據(jù)算出的波幅數(shù)據(jù)對(duì)頁面進(jìn)行渲染。因?yàn)樗恼凵?,?dāng)水面不與我們的視線相垂直的時(shí)候,我們所看到的水下的景物并不是在觀察點(diǎn)的正下方,而存在一定的偏移。偏移的程度與水波的斜率,水的

7、折射率和水的深度都有關(guān)系,如果要進(jìn)行精確的計(jì)算的話,顯然是很不現(xiàn)實(shí)的。同樣,我們只需要做線形的近似處理就行了。因?yàn)樗嬖絻A斜,所看到的水下景物偏移量就越大,所以,我們可以近似的用水面上某點(diǎn)的前后、左右兩點(diǎn)的波幅之差來代表所看到水底景物的偏移量。在程序中,用一個(gè)頁面裝載原始的圖象,用另外一個(gè)頁面來進(jìn)行渲染。先用Lock函數(shù)鎖定兩個(gè)頁面,取得指向頁面內(nèi)存區(qū)的指針,然后用根據(jù)偏移量將原始圖象上的每一個(gè)象素復(fù)制到渲染頁面上。進(jìn)行頁面渲染的代碼如

8、下:(下面的代碼為了便于理解,并沒有進(jìn)行優(yōu)化,實(shí)際上,優(yōu)化后的代碼比它要麻煩許多)根據(jù)波能數(shù)據(jù)緩沖區(qū)對(duì)離屏頁面進(jìn)行渲染voidRenderRipple()鎖定兩個(gè)離屏頁面DDSURFACEDESCddsd1ddsd2ddsd1.dwSize=sizeof(DDSURFACEDESC)ddsd2.dwSize=sizeof(DDSURFACEDESC)lpDDSPic1Lock(NULLlpDDSPic2Lock(NULL取得頁面象素位深

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論