J2ME实现图形学之——中点画圆

采用增量法

构造函数:F(x, y) = X(2) + Y(2) - R(2)

对于圆上的点F(x, y) = 0, 对于圆外的点F(x, y) > 0, 对于圆内的点F(x, y) < 0.

M为p1和p2的中点,M=(xp+1, yp-0.5)

当F(M)<0时,M在圆内,p1点离圆近

当F(M)>=0时,M在圆外,p2点离圆近

构造判别式d = F(M) = F(xp+1, yp-0.5)

若d < 0,则取p1,再下一个像素为d = F(xp+2, yp-0.5) = d + 2xp + 3

所以增量为2xp+3

若d >= 0,则取p2, 在下一个像素为d = F(xp+2, yp-1.5) = d + (2xp + 3) + (-2yp+2)

所以增量为2(xp-yp)+5

d0 = F(1, R-0.5) = 1.25 - R

使e = d - 0.25

程序为:

public void MidpointCircle(Graphics g, int r, int color)
{
int x, y, d;
x = 0; y = r; d = 1 -r;
g.setColor(color);
g.drawLine(x, y, x, y);
g.drawLine(y, x, y, x);
while(x < y)
{
if(d < 0)
{
d += 2 * x + 3;
x ++;
}
else
{
d += 2 * (x - y) + 5;
x ++;
y --;
}
g.setColor (color);
g.drawLine(x, y, x, y);
g.drawLine(y, x, y, x);
}
}

编译通过

时间: 2024-09-10 11:33:21

J2ME实现图形学之——中点画圆的相关文章

由三点画圆到未来日记:失控中的位置隐私

喜欢http://www.aliyun.com/zixun/aggregation/8340.html">LBS应用吗?每次手机弹出"该应用需要获取你的位置信息"的时候你都毫不犹豫的选择了是?还很喜欢在微博上发布信息说你在哪里?刚说的的这些事情在你生活中可能已经成为日常,即使自己没有这样干,多多少少身边也会这样的朋友.因此渐渐也对互联网上透露点位置信息这些行为习惯而漠视.不过随着这些行为越来越多,其实已经出现失控的征兆,也许不是让你无视的问题了. 最开始,一般应用公布的

Flash中关于圆的设计的探讨

设计 原创教程,转载请注明出处:网页教学网 在这里我给大家介绍一下FLASH中关于圆的设计的方法,在这里我给大家介绍两种制作 特殊效果的圆的方法. 我们在做圆的时候通常是使用FLASH提供的圆的工具来设计,如图: 我们通过上面的设置就可以轻松的绘制出一个圆形了. 但是如果要设计如下图所示的圆呢?Flash就没有了现成的工具了. 当然用其它的作图软件可以绘制出如图所示的圆而且方法很多,现在我们来讨论在 Flash中制作出如图示的圆的效果的方法,如果大家有什么其他好的方法可以和我共同讨论学 习. 下

JavaScript在网页中画圆的函数arc使用方法_javascript技巧

一.arc所需要的参数设置 复制代码 代码如下: arc(x, y, radius, startAngle, endAngle, counterclockwise); 其中x,y,radius都很容易理解,那么重点说说startAngle,endAngle和counterclockwise三个参数! 二.arc参数详解     1,startAngle和endAngle分别指圆开始的角度和结束的角度,手册上面说的是开始的角度为0,结束的角度为Math.PI*2,这样正好画一个圆     2,下面

在ps中怎样以一个点为中心画圆?

一.设置圆中心点 新建文件:现在先设定好圆的中心点,操作如下: 1.在菜单栏中顺序点:视图-标尺: 2.接着拉出参考线:光标放在画布上方的标尺上,点住不放手,把一条横参考线下拉到画布中: 3.然后,光标放在画布的左侧标尺上或者是右侧标尺上,把一条纵参考线拉到画布中: 4.横参考线与纵参考线相交于一点,这个点就是等下要画的圆的中心点: 二.画圆 1.操作如下:在工具箱中点"椭圆"工具:然后,在菜单栏中设置工具模式为"形状",填充颜色为无,描边为黑色: 2.然后,光标放

J2ME手机程序开发中的九大注意要点

程序 一.J2ME中需要的Java基础知识 现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明. J2ME中使用到的Java基础知识: 1.Java语法基础:包括基本数据类型.关键字.运算符等等 2.面向对象的思想:类和对象的概念,继承和多态等等. 3.异常处理 4.多线程 J2ME中没有用到的Java基础

在J2ME手机程序开发中使用颜色

程序 在J2ME手机开发过程中,需要经常用到颜色来进行绘制,增强程序的表现效果,下面就介绍一下如何使用颜色.       由于J2ME技术比较简单,所以没有实现专门的颜色类,而只是使用RGB的概念来代表颜色.这里简单介绍一下RGB的概念,颜色是由红(Red).绿(Green).蓝(Blue)三原色组成的,所以可以使用这三个颜色的组合来代表一种具体的颜色,其中R.G.B的每个数值都位于0-255之间.在表达颜色的时候,即可以使用三个数字来表达,也可以使用一个格式如0X00RRGGBB这样格式的十六

J2ME实现图形学之——中点划线法

最近学习图形学,开始记录所学所长: 根据直线方程:F(x, y) = ax + by + c = 0 其中, a = y0 - y1, b = x1 - x0, c = x0y1 - x1y0. 将中点代入函数得: d = F(M) = F(xp + 1, yp + 0.5) = a(xp + 1) + b(yp + 0.5) + c 所以当d<0时, M在直线下方, 当d >= 0时, M在直线上方 采用增量法 d>=0时,取(xp+2, yp+0.5) 代入得:d1 = F(xp+2

利用J2ME怎样调用手机中的电话薄?

问题描述 我写了一个手机软件,在操作中要输入电话号码,我想尝试调用手机中的电话薄来简化这个操作.哪位高手指点一下.谢谢. 解决方案 解决方案二:看看这篇http://woshizn.javaeye.com/blog/564820解决方案三:如果手机支持调取通讯录的话TextFieldtf=newTextField("","",10,TextField.PHONE_NUMBER);TextBoxtf=newTextBox("","&quo

如何在J2ME的低级界面中轻松实现各种文字的自然分行显示

显示 做游戏的时候,特别是在一些对话比较多的情况下,如RPG游戏,常常遇到文字的断行显示问题如何做到不管如何变化文字,都能够比较好地显示呢,下面有一个函数可以对文字进行分行,然后就可以一行行地打印了 第四个参数主要是对像英语这样多个字母组成一个单词的语言而设置的,因为像英语你不能把一个单词一分为二成两行的,可以传入一些分词的标志,如空格.标点符号什么的,如" ,.?!"中文没有关系但是日文我也闹不大清楚,不知道它是怎么分词的,是和中文一样,还是和英文一样 /**@todo 对一段文字进