2010-11-25 78 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)工作,所以如果你想這個算法工作,適當地利用翻譯轉移您的觀點。如果你將中心留在其他地方,這個算法會變得更加混亂。

注意:沒有測試這個。如果有人看到錯誤,請指出。