2010-11-25 85 views
1

我需要用Java来检查椭圆内的每个像素。 对于绘画,我目前使用的:爪哇环内椭圆

drawOval(x,y,r*2,R*2). 

然而,因为我需要得到白宫椭圆形内的每个像素,我想创建一个循环,假设里面(迭代我有X,Y,R和R)。是否有用于此目的的内置功能?

感谢,

乔尔

+1

作业吗? – 2010-11-25 19:32:55

回答

1

为椭圆形简单规范隐式方程为(与中心0; 0)

alt text

所以哟可以遍历抛出所有可能的坐标,并使用检查这个等式。

1

我不认为有任何内置的功能。

让我们一步步地经历这一过程。

假设你的椭圆形的中心在(0,0),一个半径为a,另一种是b,规范方程是

x^2/a^2+y^2/b^2=1 

乘以两侧a^2b^2,你会得到

x^2*b^2+y^2*a^2=a^2*b^2 

现在,你必须做一个双循环。 ab必须是正数。伪代码:

for x = -a; x <= a; ++x: 
    for y = -b; y <= b; ++y: 
     if(x^2*b^2+y^2*a^2 <= a^2*b^2) 
     // you're in your ellipse, do as you please 

当然,这只会如果中心在(0,0)工作,所以如果你想这个算法工作,适当地利用翻译转移您的观点。如果你将中心留在其他地方,这个算法会变得更加混乱。

注意:没有测试这个。如果有人看到错误,请指出。