我需要用Java来检查椭圆内的每个像素。 对于绘画,我目前使用的:爪哇环内椭圆
drawOval(x,y,r*2,R*2).
然而,因为我需要得到白宫椭圆形内的每个像素,我想创建一个循环,假设里面(迭代我有X,Y,R和R)。是否有用于此目的的内置功能?
感谢,
乔尔
我需要用Java来检查椭圆内的每个像素。 对于绘画,我目前使用的:爪哇环内椭圆
drawOval(x,y,r*2,R*2).
然而,因为我需要得到白宫椭圆形内的每个像素,我想创建一个循环,假设里面(迭代我有X,Y,R和R)。是否有用于此目的的内置功能?
感谢,
乔尔
Java的Ellipse2D
实现Shape
接口,因此您可以根据需要使用后者的方法之一。也可以将Shape
转换为BufferedImage
并遍历其WritableRaster
。
为椭圆形简单规范隐式方程为(与中心0; 0)
所以哟可以遍历抛出所有可能的坐标,并使用检查这个等式。
我不认为有任何内置的功能。
让我们一步步地经历这一过程。
假设你的椭圆形的中心在(0,0)
,一个半径为a
,另一种是b
,规范方程是
x^2/a^2+y^2/b^2=1
乘以两侧a^2
和b^2
,你会得到
x^2*b^2+y^2*a^2=a^2*b^2
现在,你必须做一个双循环。 a
和b
必须是正数。伪代码:
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)
工作,所以如果你想这个算法工作,适当地利用翻译转移您的观点。如果你将中心留在其他地方,这个算法会变得更加混乱。
注意:没有测试这个。如果有人看到错误,请指出。
作业吗? – 2010-11-25 19:32:55