手机上实现任意角度翻转算法.docx
- 文档编号:18222553
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:11
- 大小:17.75KB
手机上实现任意角度翻转算法.docx
《手机上实现任意角度翻转算法.docx》由会员分享,可在线阅读,更多相关《手机上实现任意角度翻转算法.docx(11页珍藏版)》请在冰点文库上搜索。
手机上实现任意角度翻转算法
手机上实现任意角度翻转算法[适用任何机型]
[录入者:
admin| 时间:
2006-05-1917:
41:
06|作者:
| 来源:
|点击数:
1055]
[上一篇][下一篇]
web2.0packagerorate;
importjavax.microedition.lcdui.Graphics;
/
*图片任意角度翻转算法
*同时实现了Nokia特有API
*author.BB
*Sprite.java
*
*
*/
publicclassSprite{
/**SINTABLE**/
publicfinalstaticintSIN_TABLE[]=
{
0,4,8,13,17,22,26,31,35,39,
44,48,53,57,61,65,70,74,78,83,
87,91,95,99,103,107,111,115,119,123,
127,131,135,138,142,146,149,153,156,160,
163,167,170,173,177,180,183,186,189,192,
195,198,200,203,206,208,211,213,216,218,
220,223,225,227,229,231,232,234,236,238,
239,241,242,243,245,246,247,248,249,250,
251,251,252,253,253,254,254,254,254,254,
255,254,254,254,254,254,253,253,252,251,
251,250,249,248,247,246,245,243,242,241,
239,238,236,234,232,231,229,227,225,223,
220,218,216,213,211,208,206,203,200,198,
195,192,189,186,183,180,177,173,170,167,
163,160,156,153,149,146,142,138,135,131,
127,123,119,115,111,107,103,99,95,91,
87,83,78,74,70,65,61,57,53,48,
44,39,35,31,26,22,17,13,8,4,
0,-4,-8,-13,-17,-22,-26,-31,-35,-39,
-44,-48,-53,-57,-61,-65,-70,-74,-78,-83,
-87,-91,-95,-99,-103,-107,-111,-115,-119,-123,
-127,-131,-135,-138,-142,-146,-149,-153,-156,-160,
-163,-167,-170,-173,-177,-180,-183,-186,-189,-192,
-195,-198,-200,-203,-206,-208,-211,-213,-216,-218,
-220,-223,-225,-227,-229,-231,-232,-234,-236,-238,
-239,-241,-242,-243,-245,-246,-247,-248,-249,-250,
-251,-251,-252,-253,-253,-254,-254,-254,-254,-254,
-255,-254,-254,-254,-254,-254,-253,-253,-252,-251,
-251,-250,-249,-248,-247,-246,-245,-243,-242,-241,
-239,-238,-236,-234,-232,-231,-229,-227,-225,-223,
-220,-218,-216,-213,-211,-208,-206,-203,-200,-198,
更多精彩请关注
更多精彩请关注
更多精彩请关注
-195,-192,-189,-186,-183,-180,-177,-173,-170,-167,
-163,-160,-156,-153,-149,-146,-142,-138,-135,-131,
-127,-123,-119,-115,-111,-107,-103,-99,-95,-91,
-87,-83,-78,-74,-70,-65,-61,-57,-53,-48,
-44,-39,-35,-31,-26,-22,-17,-13,-8,-4
};
/**透明**/
publicstaticintTRANSPARENT=0;
/**不透明**/
publicstaticintOPAQUE=15;
/**
*像素值
*包含动画帧,主下标标识动画帧数,副下标的值代表像素值
*/
publicshortpixels[][];
/*
*精灵的宽度
*该版本默认精灵各个帧的宽度一样大小
*/
publicshortwidth;
/*
*精灵的高度
*该版本默认精灵各个帧的高度一样大小
*/
publicshortheight;
/*
*动画帧数
*/
publicbytenumOfFrame;
/*
*当前动画帧数
*/
publicintcurFrame;
/*
*构造函数
*确保传入的各个值为合理的值
*使用的话请自己做判断
*@param_pixels动画的像素值
*@param_width宽度
*@param_height高度
*/
publicSprite(short[][]_pixels,short_width,short_height){
pixels=_pixels;
width=_width;
height=_height;
numOfFrame=(byte)_pixels.length;
curFrame=0;
}
/*
*构造函数
*/
publicSprite(){
}
/*
*投影
*@paramcData
*@paraml
*@parami1
*@paramj1
*@paramk1
*@return
*/
privatefinalshortproject(shortcData[],intl,inti1,intj1,intk1){
intj3=(j1&0xffff)>>8;
intk3=(k1&0xffff)>>8;
intl3=(256-j3)*(256-k3);
inti4=j3*(256-k3);
intj4=(256-j3)*k3;
intk4=j3*k3;
intl2=j1>>16;
inti3=k1>>16;
l2%=l;
i3%=i1;
i3*=l;
shortword0=cData[l2+i3];
shortword2=cData[(l2+(i3+l))%(cData.length-1)];
l2=++l2%l;
shortword1=cData[l2+i3];
shortword3=cData[(l2+(i3+l))%(cData.length-1)];
intl1=word0>>12&0xf;
inti2=word1>>12&0xf;
intj2=word2>>12&0xf;
intk2=word3>>12&0xf;
intk5=l1*l3+i2*i4+j2*j4+k2*k4>>16;
l1=word0>>8&0xf;
i2=word1>>8&0xf;
j2=word2>>8&0xf;
k2=word3>>8&0xf;
intl4=l1*l3+i2*i4+j2*j4+k2*k4>>16;
l1=word0>>4&0xf;
i2=word1>>4&0xf;
j2=word2>>4&0xf;
k2=word3>>4&0xf;
inti5=l1*l3+i2*i4+j2*j4+k2*k4>>16;
l1=word0&0xf;
i2=word1&0xf;
j2=word2&0xf;
k2=word3&0xf;
intj5=l1*l3+i2*i4+j2*j4+k2*k4>>16;
return(short)((k5<<12)+(l4<<8)+(i5<<4)+j5);
}
/*
*翻转
*@paramcount在360度内翻转的个数
*@return返回一个翻转后的精灵
*/
publicSpriterotate(intcount){
Spritesprite=newSprite();
shortradius=30;
if(width==40&&height==40)
radius=57;
elseif(width==8&&height==8)
radius=12;
elseif(width==6&&height==12)
radius=14;
elseif(width==24&&height==24)
radius=34;
elseif(width==26&&height==26)
radius=27;
elseif(width==8&&height==15)
radius=17;
elseif(width==10&&height==16)
radius=19;
elseif(width==11&&height==15)
radius=19;
else
System.out.println("Wrongsize:
"+width+" "+width+" "
+count);
sprite.width=radius;
sprite.height=radius;
sprite.numOfFrame=(byte)count;
sprite.pixels=newshort[count][];
for(intj1=0;j1 sprite.pixels[j1]=newshort[sprite.width*sprite.height]; intk1=j1*(360/count); shortl1=width; shorti2=height; width=sprite.width; height=sprite.height; intj2=width/2; intk2=l1/2; intl2=i2/2; inti3=SIN_TABLE[k1%360]<<8; intj3=SIN_TABLE[(k1+90)%360]<<8; intk4=0; inti4=-j2*j3; intj4=-j2*i3; for(intl4=0;l4 sprite.pixels[j1][l4]=(short)(TRANSPARENT<<12); for(inti5=0;i5 intk3=-j2*j3; intl3=-j2*i3; for(intj5=0;j5 //x intk5=(k3-j4>>16)+k2; //y intl5=(i4+l3>>16)+l2; if(k5>=0&&l5>=0&&l5 sprite.pixels[j1][k4]=project(pixels[0],l1,i2, (k3-j4)+(k2<<16),i4+l3+(l2<<16)); k3+=j3; l3+=i3; k4++; } i4+=j3; j4+=i3; k4-=width; k4+=sprite.width; } height=i2; width=l1; } returnsprite; } /* *绘制精灵 *在这里实现了Nokia的特有API *大家可以扩展该方法 *@paramg *@paramx *@paramy *@parammanipulate */ publicvoiddraw(Graphicsg,intx,inty,intmanipulate){ drawPixels(g,true,0,width,x,y,width, height,manipulate,4444); } publicvoiddrawPixels(Graphicsg,booleantransparency, intoffset,intscanlength,intx,inty,intwidth,intheight, intmanipulation,intformat){ intl1=map2Manipulation(manipulation); intj1; intk1; if((l1&4)! =0){ j1=height; k1=width; }else{ j1=width; k1=height; } shortnewPixels[]=newshort[j1*k1]; if(manipulation==0){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 实现 任意 角度 翻转 算法
![提示](https://static.bingdoc.com/images/bang_tan.gif)