android8600上完成水波特效辅导_第1页
android8600上完成水波特效辅导_第2页
android8600上完成水波特效辅导_第3页
android8600上完成水波特效辅导_第4页
android8600上完成水波特效辅导_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

android860上完毕水波特效[Android8600AndroidGameResImagic。我只是在学习Android的过程中,想到这个特效,然后就在Android效。该程序在模拟器和真机上运行速度都较慢,需要进一步优化或使用JNI扩散:当你投一块石头到水中,你会看到一种以石头入水点为圆心所形成的一由于扩散的对称而互相抵消了。折射:由于水波上不同地点的倾斜角度不同,因此我们从观察点垂直往下看到射,这就是我们能感觉到水波形状的因素。首先我们要建立两个与水池图象同样大小的数组buf1[PoolWidth*PoolHeight]和buf2[PoolWidth*PoolHeight](PoolWidth为水池图象的象素宽度、一时刻,X0点的振幅除了受X0这四个点对X0:X0’=a*(X1+X2+X3+X4)+b*X0(公式a,b为待定系数,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-好了,有了上面这个近似公式,你就能够推广到下面这个普通结论:已知某一邻的前、后、左、右四点的波幅的和除以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;}指向两个页面内存区的指针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]=}}}}加新的算法函数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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论