我需要用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