J2ME 上任意多边形填充算法.doc

上传人:韩长文 文档编号:3617873 上传时间:2019-09-18 格式:DOC 页数:5 大小:133KB
返回 下载 相关 举报
J2ME 上任意多边形填充算法.doc_第1页
第1页 / 共5页
J2ME 上任意多边形填充算法.doc_第2页
第2页 / 共5页
J2ME 上任意多边形填充算法.doc_第3页
第3页 / 共5页
J2ME 上任意多边形填充算法.doc_第4页
第4页 / 共5页
J2ME 上任意多边形填充算法.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《J2ME 上任意多边形填充算法.doc》由会员分享,可在线阅读,更多相关《J2ME 上任意多边形填充算法.doc(5页珍藏版)》请在三一文库上搜索。

1、精品论文推荐J2ME 上任意多边形填充算法刘胜云 1,杨俊 1,董洪毅 21 北京邮电大学计算机科学技术系,北京 (100876)2 山东省科学院激光研究所,济南 (272017)E-mail: 摘要:本论文主要对 J2me 平台进行介绍,简要的介绍了 J2me 的体系结构,提出了此多边形填充算法的应用环境,在此基础上详细的介绍此填充算法,从理论和实现 2 层上分析此 算法的优缺点,并在算法的缺点之上提出一个修正的方案,最终实现一个基于 J2me 规范的任意多边形填充之扫描线填充算法,来实现对 J2me 上图形图像的渲染,并加入对曲线多边 形填充的一些补充说明,并就此算法在基于 J2me 平台

2、的手机上运行,给出其运行结果和结果分析,并证明了此算法在 J2me 平台上的可行性。 关键字:J2me;像素;扫描线中图分类号:TP311.11. 引言J2me 作为嵌入式系统应用平台得到了迅速的发展,JAVA 语言固有的平台无关性使得基 于 J2me 平台的嵌入式应用系统具有广阔的前景1。随着手机为主的移动手持设备的增加, 手持设备上的应用开发需求稳步上升。J2me 作为手持设备的主流开发平台之一,是实现手 持设备各种综合应用的一个重要途径。手持设备上图形图像的处理是各种应用中最基本应用 之一,所以对 J2me 上多边形填充算法的研究日益重要。本文就 J2ME 上任意多边形填充算 法之扫描线

3、填充做简单分析和介绍。2. j2ME 介绍J2me(Java 2 Platform Micro Edition)是为无线电子市场所设计的 JAVA 平台,包括 JVM 规范和 API 规范2。J2me 定义了一套类库和虚拟机技术,这些技术可以使用户、服务提供 商和设备制造商通过物理(有线)连接或无线连接,按照需要随时使用丰富的应用程序。J2me 同时提供了 Java 语言一贯的跨平台性和安全性。为了支持用户和嵌入式市场提出的灵活性和可定制性要求,J2ME 被设计得更加模块化 和可缩放化。J2me 在设备原有的操作系统上建造了 3 层软件来实现这种要求:JVM 层:这层基于宿主操作系统,按照某一

4、种 J2ME 的配置实现了 JVM。 配置层:这层对于用户可见度要低一些,但对简表层非常重要。它针对不同市场的需求,定义了 Java 虚拟机的最小功能集合和 Java 类库的最小集合。在 J2ME 设备中,JVM 与配置 层紧密相连,它们体现了每一类设备的基本功能。简表层:这层对于用户和应用程序提供者来说是最常见的。它针对特定市场的需求,定 义了 Java 虚拟机的最小功能集合和 Java 类库的最小集合。J2ME 组件都围绕一个中心,这些中心被称为 configuration(配置),它们中间的每一个都是用于消费电子和嵌入设备的特别的类。目前配置分为 CLDC 和 CDC 两种。Connec

5、ted limited device configuration( 有限连接设备配置,简称 CLDC) 定义支持 “devices that you hold in your hand(握在手中的设备)”的应用程序接口和技术,这类设备的 代表是 PDA。Connected device configuration(连接设备配置 CDC )定义支持“devices that you plug into plug into the wall(插入墙的设备)”的应用程序接口和技术,这类设备的代表是机- 5 -顶盒。这两种配置不同的地方就在于它们应用于的装置的能力,CLDC 设备的处理器能力有限 (与

6、台式机系统比较 ),并且存储器大小一般也只在 128 KB 到 512 KB 之间。CDC 系统不同, 它可能有 32 位或 64 位处理器,以及有限的存储容量,不过它的下限也得超过 512K。图 1 配置和简表的体系结构上图解释配置和简表的体系结构。J2me 的体系结构被横向地分成三层,纵向分成两部 分。配置包括一个控制配置核心类的虚拟机,具体的简表位于每个配置之上3。3. 多边形扫描线填充算法3.1 理论分析MIDP2.0 中 Graphics 提供的图形填充算法支持的有圆弧,三角形,长方形和圆角长方 形,任意多边形可以分解为多个三角形进行填充,这里介绍另一种填充算法,通过扫描线进 行多边

7、形填充。如下图所示。图 2 扫描线填充基于 J2me 平台 MIDP2.0 只支持对整数级像素填充,而且手持设备的屏幕较小,因此基 于 Y 轴或 X 轴的扫描线数目有限,从而在处理能力和内存有限的手持设备上使得扫描线算 法成为可能。首先计算出此多边形在 X 轴或 Y 轴的最大值 a 和最小值 b,并新建(a-b+1)个整形数 组来保存相交的点,然后用多边形的边去切扫描线,在对应交点值的数组中保存交点的 X 值或 Y 值。最终按照扫描线填充算法的基本原理,奇数的交点为进入此多边形,偶数的交 点为离开此多边形,调用 Graphics 的 drawLine 方法进行绘制。3.2 算法分析优点:简单实

8、用,对于边数不多,面积不是很大的任意多边形来说,算法的时间和空间 复杂度是可以接受的缺点:效率不高是主要问题,同时多边形中存在奇异点的情况,存在和扫描线重叠的 情况,因而需要加入特殊处理。特殊情况:1)多边形有凸多边形和凹多边形,对于凸多边形过极值点时满足奇数点进入多边形, 偶数点离开多边形,凹多边形则相反,因而此为一相异情况,如图 2 中的 c 和 d 扫描线。2) 多边形的顶点为一特殊情况,有极值点和非极值点,极值点时既为多边形进入点,又是多边 形离开点,非极值点则相反,如图 2 中的 a 和 d 扫描线。3)采用 X 轴或 Y 轴扫描线填充存 在边与 X 轴或 Y 轴重叠的情况,如图 2

9、 中的 b 扫描线。3.3 改进算法为了消除填充算法存在的奇异情况,提出一个修正的方案,假设采用 X 轴作为扫描线, 多边形在 Y 轴上的最大值和最小值分别为 a 和 b,新建(a-b+1)个整形数组来保存相交的 点,在用多边形的边去切扫描线时,先判断此边是否为与 X 轴平行的直线,如是则将此边 作一个标记,将此点的 2 个端点的 X 值存入到对应的数组中去,在画扫描线时先判断此数 组中存的从小到大的 X 值,如果此点前面没有比它小的 X 值,则此直线的左端点值为无效 交点,反之则为有效交点。如果此边不是与 X 轴平行的直线,则判断此边的 2 个端点是否 为极值点,极值点则在相应的数组中存入

10、2 个一样的 X 值,否则存入一个 X 值。3.4 算法实现遍历各边,得到在 Y 轴上的最大值 yMax 和最小值 yMin int yMax = -1;int yMin = 1000000;for(int i=0;i yMax)yMax = c;if(c yMax)yMax = c;if(c yMin)yMin = c;按 J2me 上像素单位为一的特征,创建 yMax-yMin+1 个整形数组来保存交点值int count = yMax-yMin+1;Vector y = new Vectorcount;for(int i=0;icount;i+)yi = new Vector();遍历各

11、边进行扫描,按照改进算法的判断顺序进行操作,就奇异点的坐标保存在一个数 组当中,供画扫描线所用,并将扫描得到的各交点值按从小到大的顺序插入到对应的交点数组当中。For(int i=0;iedges.size();i+)Edge curr = (Edge)edges.elementAt(i); If(curr.startP.getY()=curr.endP.getY()/平行 X 轴/奇异边保存Add(Ycurr.startP.getY()-yMin,curr.startP.getX();/向数组中按顺序插入 X 值else/取下一条边,如果 i=edges.size()-1 则取第 0 条边/

12、判断当前边的末端点是否为极值点If(极值点)/极值点保存/向数组中按从小到大的顺序插入 X 值按照奇异点和奇异边的不同,分别从扫描线数组中按不同的处理绘制直线,并按需要的 颜色进行着色,完成填充。3.5 算法扩展对于曲线多边形,可以将曲线看做是多条短边的集合,从而使此扫描线填充算法也能很 好的适应曲线多边形,形成的曲线的边的数目越大,曲线越精确,但是开销越大,算法的时 间复杂度和边的数目和长度相关的.3.6 运行结果图 3 填充结果可以看出本算法的效果不是特别的理想,在线条上没有加入像素补充算法,从而使多边形的边存在粗糙的地方。4. 结束语图形的效果直接影响到手持设备的受欢迎度,而多边形填充是

13、图形的一个基本元素,因 而加强对基于 J2me 平台的多边形填充算法的研究,有助于手持设备上应用软件的质量提高。 该算法是基于 J2me 平台的实际情况来实现的,希望其它类似项目能从中受益。参考文献1 黄聪明. Java 移动通信程序设计M. 北京: 清华大学出版社, 2002.2.2 陈昊鹏,饶若楠等. Bruce Eckel.Java 编程思想M.北京:机械工业出版社, 2005 3 詹建飞. J2ME 开发精解M. 北京: 电子工业出版社, 2006A Filling Algorithm for Arbitrary Polygon based on J2meLiu Shengyun1,

14、Yang Jun1, Dong Hongyi21Department of Computer Science and Technology, Beijing University of Posts andTelecommunications, Beijing (100876)2Laser Institute of the Shandong academy of sciences, Jinan (272017)AbstractThis thesis mainly introduces the J2me platform, about the architecture of J2me in bri

15、ef.It puts forward the application environment of this polygon filling algorithm,based on this detailedly introduces thealgorithm and analyses the merits and drawbacks of the algorithm in theory and realization level.Over the defects of the algorithm it brings forward an amendatory blue print for th

16、e algorithm,at last implements the scanning beam filling algorithm for arbitrary polygon based on the J2me criterion to render the graphics and image drawing and make an additional explanation for arbitrary curve polygon.In the end it shows and analyses the result gotten from running the algorithm on a J2mephone,depend on which it proves the feasibility of the algorithm on J2me platform.Keyword: J2me; pixel; scanning beam作者简介:刘胜云,男,1982 年出生,硕士研究生,主要研究方向是移动设备应用开发,J2me 游戏界面开发。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1