2010-11-25 10 views
1

Javaで楕円の内側の各ピクセルを調べる必要があります。描画用 、私は現在使用しています:Javaのループ内楕円

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

をしかし、私は楕円内の各ピクセルを取得する必要があるので、私は(内部反復を仮定そのループを作成したいIしたX、Y、R及びR)。この目的のために組み込まれた機能はありますか?

おかげで、

ジョエル

+1

宿題ですか? –

+0

あなたはそれが正しい – Joel

答えて

2

JavaのEllipse2Dは、Shapeインターフェイスを実装しているため、必要に応じて後者のメソッドの1つを使用できます。 ShapeBufferedImageにレンダリングし、そのWritableRasterをトラバースすることも可能です。

1

オーバルのためのシンプルな標準的な暗黙の方程式は、(中央0で、0)である

alt text

だからヨーヨーは、すべての可能な座標を投げる反復して使用してそれを確認することができますこの方程式。

1

私はそこには何も組み込まれていないと思います。

この手順をステップバイステップで進めてください。あなたの楕円の中心部は、(0,0)で、1つの半径はaある他であると仮定すると

bで、標準的な方程式は、あなたが得るa^2b^2で両側を掛ける

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

ある

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

今度は、forループを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)であるならば、これはのみ動作しますので、あなたが動作するように、このアルゴリズムをしたい場合は、適切な翻訳を使用してあなたのポイントをシフトします。センターをどこか別の場所に残すと、このアルゴリズムはより面倒になります。

注::これはテストしませんでした。誰かが間違いを見たら、それを指摘してください。