
在J2ME/MIDP中实现图像旋转
发布时间:2006-07-27 09:52:31 来源:计算机与信息技术 网友评论 0 条
摘 要 图形图像的旋转在移动应用程序开发,特别是游戏开发过程中有着现实的需求。但J2ME对此提供的支持却十分有限,如MIDP2.0仅支持图像成90度整数倍的旋转。针对这种情况, 本文提出了一种实现图像任意角度旋转的方案并提供了算法实现。然后对算法的应用问题进行了探讨,分析了算法的局限性。最后介绍了在j2me中实现旋转的另外两种参考性方案。
关键词 J2ME;CLDC;MIDP;Sprite;图像旋转
J2ME概述
J2ME是标准版java(J2SE)面向手机、PDA等各类移动和嵌入式设备的缩减版本,是一种获得众多厂商的支持和广泛使用的移动设备开发平台。图一展示了J2ME技术的体系结构。它分为三层:虚拟机层,配置层,和简表层。
配置层(Configuration)通过对功能的描述,把千差万别的嵌入式设备进行了功能的说明和分类。它把运算功能有限、内存较小、电力有限的设备,定义在CLDC(有限连接设备配置)规范中,这类设备有PDA 、手机等;把运算能力相对较佳、内存相对较大、电力供应比较充足的设备,定义在CDC(连接设备配置)规范之中,这类设备有电冰箱、机顶盒、车载计算设备等。
虚拟机层(Virtual Machine)基于宿主操作系统,按照某一种配置,实现了Java虚拟机。CDC配置对应的虚拟机叫CVM,CLDC对应的虚拟机叫做KVM。
简表层(Profile)建立在配置层之上,提供了面向用户的更高层次的功能,如用户接口,网络,数据存储等。基础规范(Foundation Profile)和个人规范(Personal Profile)是CDC之上的两个重要的规范,移动信息设备规范(MIDP)和PDA规范(PDAP)是CLDC之上的两个重要的规范。当前,无线应用程序的开发主要是在MIDP之上进行的。
配置层和简表层共同构成了J2ME的运行环境。如CLDC/MIDP架构构筑了手机应用程序的开发和运行环境。本文所实现的图像旋转算法便是基于这种架构的。
需要注意的是,这些规范也是在不断发展的。如早期很多的设备的计算能力非常有限,CLDC1.0就只支持整型数值。后来数随着设备运算能力的提高,CLDC1.0发展到CLDC1.1,就加如了对浮点运算的支持。对MIDP规范也一样,从1.0发展到2.0,它通过扩充类和接口的功能,加强了对游戏开发的支持,增加了图像处理功能(旋转要用到),增强了对网络功能的支持,如串口、套接字、https等。
2D旋转的数据基础
考虑笛卡儿直角坐标系中单个点旋转的情况。如图二示,这里点P(x,y)到原点O绕O点逆时针旋转角度θ后到点P′(x′,y′)。由三角函数的几何意义,有x = r*cos α ,y = r*si n α和x′ = r*cos(α +θ) , y′ = r*sin(α + θ),推出:
当把旋转点一般化为Q(x0,y0),得到:
在开发时,我们使用设备坐标系,它以屏幕的左上角为坐标原点,y轴方向向下。此时,我们不妨视θ为饶旋转点顺时针旋转的角度,这样,上面的公式依然成立。
关键词 J2ME;CLDC;MIDP;Sprite;图像旋转
J2ME概述
J2ME是标准版java(J2SE)面向手机、PDA等各类移动和嵌入式设备的缩减版本,是一种获得众多厂商的支持和广泛使用的移动设备开发平台。图一展示了J2ME技术的体系结构。它分为三层:虚拟机层,配置层,和简表层。
配置层(Configuration)通过对功能的描述,把千差万别的嵌入式设备进行了功能的说明和分类。它把运算功能有限、内存较小、电力有限的设备,定义在CLDC(有限连接设备配置)规范中,这类设备有PDA 、手机等;把运算能力相对较佳、内存相对较大、电力供应比较充足的设备,定义在CDC(连接设备配置)规范之中,这类设备有电冰箱、机顶盒、车载计算设备等。
虚拟机层(Virtual Machine)基于宿主操作系统,按照某一种配置,实现了Java虚拟机。CDC配置对应的虚拟机叫CVM,CLDC对应的虚拟机叫做KVM。
简表层(Profile)建立在配置层之上,提供了面向用户的更高层次的功能,如用户接口,网络,数据存储等。基础规范(Foundation Profile)和个人规范(Personal Profile)是CDC之上的两个重要的规范,移动信息设备规范(MIDP)和PDA规范(PDAP)是CLDC之上的两个重要的规范。当前,无线应用程序的开发主要是在MIDP之上进行的。
配置层和简表层共同构成了J2ME的运行环境。如CLDC/MIDP架构构筑了手机应用程序的开发和运行环境。本文所实现的图像旋转算法便是基于这种架构的。
e 图一 J2ME 体系结构 |
需要注意的是,这些规范也是在不断发展的。如早期很多的设备的计算能力非常有限,CLDC1.0就只支持整型数值。后来数随着设备运算能力的提高,CLDC1.0发展到CLDC1.1,就加如了对浮点运算的支持。对MIDP规范也一样,从1.0发展到2.0,它通过扩充类和接口的功能,加强了对游戏开发的支持,增加了图像处理功能(旋转要用到),增强了对网络功能的支持,如串口、套接字、https等。
2D旋转的数据基础
考虑笛卡儿直角坐标系中单个点旋转的情况。如图二示,这里点P(x,y)到原点O绕O点逆时针旋转角度θ后到点P′(x′,y′)。由三角函数的几何意义,有x = r*cos α ,y = r*si n α和x′ = r*cos(α +θ) , y′ = r*sin(α + θ),推出:
| x′ = x * cos θ – y * sin θ y′ = y * cos θ + x * sin θ |
当把旋转点一般化为Q(x0,y0),得到:
| x′ = x0 + (x - x0) cos θ - (y - y0) sin θ y′ = y0 + (y - y0) cos θ + (x - x0) sin θ |
在开发时,我们使用设备坐标系,它以屏幕的左上角为坐标原点,y轴方向向下。此时,我们不妨视θ为饶旋转点顺时针旋转的角度,这样,上面的公式依然成立。
![]() 图二 2D点的旋转 |
推荐阅讯
- Spring中Rod Johnson 与“轮子理论”
- Aspectwerkz 2.0开发企业AOP快速入门
- Oracle9i中监视索引的使用
- 谈AJAX的安全性及AJAX安全隐患
- 深入浅出MFC文档/视图架构之框架
- 程序员建立商业意识之Business Sense
- 在WinCE程序开发中使用软件输入面板
- Oracle数据库的安全策略
- Ruby程序快速入门之输入输出和标准库
- 利用AJAX+J2EE开发组织机构管理系统
阅读排行
- 1..net页面间的参数传递简单实例
- 2.VC++与Matlab混合编程之引擎操作详解
- 3.Oracle数据库数据对象分析
- 4.Eclipse3.2+Tomcat5.5.17+Oracle9配置
- 5.Oracle数据库中索引的维护
- 6.在Oracle的网络结构中解决连接问题
- 7.Oracle数据安全面面观
- 8.Oracle数据库的ORA-00257故障解决过程
- 9.Oracle数据库备份与恢复的三种方法
- 10.Oracle与SQL Server在企业应用中的比较
专题教程
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
- Picasa中文版_Picasa教程 专题:清除流氓软件
- Firefox专题 seo搜索引擎优化专区
- 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏

e 