android8600上完成水波特效輔導(dǎo)_第1頁
android8600上完成水波特效輔導(dǎo)_第2頁
android8600上完成水波特效輔導(dǎo)_第3頁
android8600上完成水波特效輔導(dǎo)_第4頁
android8600上完成水波特效輔導(dǎo)_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

android860上完畢水波特效[Android8600AndroidGameResImagic。我只是在學(xué)習(xí)Android的過程中,想到這個特效,然后就在Android效。該程序在模擬器和真機上運行速度都較慢,需要進一步優(yōu)化或使用JNI擴散:當(dāng)你投一塊石頭到水中,你會看到一種以石頭入水點為圓心所形成的一由于擴散的對稱而互相抵消了。折射:由于水波上不同地點的傾斜角度不同,因此我們從觀察點垂直往下看到射,這就是我們能感覺到水波形狀的因素。首先我們要建立兩個與水池圖象同樣大小的數(shù)組buf1[PoolWidth*PoolHeight]和buf2[PoolWidth*PoolHeight](PoolWidth為水池圖象的象素寬度、一時刻,X0點的振幅除了受X0這四個點對X0:X0’=a*(X1+X2+X3+X4)+b*X0(公式a,b為待定系數(shù),X0’為X0X0’+X1’+...+Xn’=X0+X1+...+將每一種點用公式1(4a+b)*X0+(4a+b)*X1+...(4a+b)*Xn=X0+X1++Xn=,4a+b=找出一種最簡解:a1/2、b1。由于1/2能夠用移位運算符“>>”X0’=(X1+X2+X3+X4)/2-好了,有了上面這個近似公式,你就能夠推廣到下面這個普通結(jié)論:已知某一鄰的前、后、左、右四點的波幅的和除以2、再減去該點的波幅。//X0'=(X1+X2+X3+X4)/2-X0//+---- //+|//+|//x1--- //+|//+|//+---- void{intpixels=m_width*(m_height-1);for(inti=m_width;i<pixels;++i){//X0'=(X1+X2+X3+X4)/2-m_buf2[i]=(short)(((m_buf1[i-1]+m_buf1[i+1]+m_buf1[i-m_width]+m_buf1[i+m_width])>>1)-//波能衰減m_buf2[i]-=m_buf2[i]>>}short[]tempm_buf1;m_buf1=m_buf2;m_buf2=temp;}指向兩個頁面內(nèi)存區(qū)的指針src和void{intinti=intlength=m_width*for(inty=1;y<m_height-1;++y){for(intx=0;x<m_width;++x,++i)//offset=width*yoffset+offset=(m_width*(m_buf1[i-m_width]-+m_width]))+(m_buf1[i-1]-m_buf1[i+if(i+offset>0&&i+offset<length){m_bitmap2[i]=m_bitmap1[i+offset];}elsem_bitmap2[i]=}}}}即讓buf[x,y]=-n。通過實驗,n的范疇在(32~128)之間比較//stoneSize//stoneWeightvoiddropStone(intx,inty,intstoneSize,int{if((x+stoneSize)>m_width||(y+stoneSize)>||(x-stoneSize)<0||(y-stoneSize)<0){}intvalue=stoneSize*stoneSize;shortweight=(short)-for(intposx=x-stoneSize;posx<x+stoneSize;++posx){for(intposy=y-stoneSize;posy<y+stoneSize;++posy){if((posx-x)*(posx-x)+(posy-y)*(posy-y)<{m_buf1[m_width*posy+posx]=}}}}加新的算法函數(shù)breasenhamDrop。voiddropStoneLine(intx,inty,intstoneSize,intstoneWeight)if((x+stoneSize)>m_width||(y+stoneSize)>||(x-stoneSize)<0||(y-stoneSize)<0){}for(intposx=x-stoneSize;posx<x+stoneSize;{for(intposy=y-stoneSize;posy<y+stoneSize;{m_buf1[m_width*posy+posx]=-}}}//xs,ys:起始點,xe,ye//size:波源半徑,weightvoidbreasenhamDrop(intxs,intys,intxe,intye,intsize,intweight){intdx=xe-xs;intdy=ye-dx=(dx>=0)?dx:-dy=(dy>=0)?dy:-dy;if(dx==0&&dy==0){dropStoneLine(xs,ys,size,}elseif(dx==0)intyinc=(ye-ys!=0)?1:-1;for(inti=0;i<dy;++i){dropStoneLine(xs,ys,size,weight);ys+=yinc;}}elseif(dy==0)intxinc=(xe-xs!=0)?1:-1;for(inti=0;i<dx;++i){dropStoneLine(xs,ys,size,weight);xs+=xinc;}}elseif(dx>dy)intp=(dy<<1)-dx;intinc1=(dy<<1);intinc2=((dy-dx)<<intxinc=(xe-xs!=0)?1:-intyinc=(ye-ys!=0)?1:-1;for(inti=0;i<dx;++i){dropStoneLine(xs,ys,size,weight);xs+=xinc;if(p<0){p+=inc1;}elseys+=yinc;p+=inc2;}}}elseintp=(dx<<1)-dy;intinc1=(dx<<1);intinc2=((dx-dy)<<intxinc=(xe-xs!=0)?1:

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論