Javaで楕円の内側の各ピクセルを調べる必要があります。描画用 、私は現在使用しています:Javaのループ内楕円
drawOval(x,y,r*2,R*2).
をしかし、私は楕円内の各ピクセルを取得する必要があるので、私は(内部反復を仮定そのループを作成したいIしたX、Y、R及びR)。この目的のために組み込まれた機能はありますか?
おかげで、
ジョエル
Javaで楕円の内側の各ピクセルを調べる必要があります。描画用 、私は現在使用しています:Javaのループ内楕円
drawOval(x,y,r*2,R*2).
をしかし、私は楕円内の各ピクセルを取得する必要があるので、私は(内部反復を仮定そのループを作成したいIしたX、Y、R及びR)。この目的のために組み込まれた機能はありますか?
おかげで、
ジョエル
JavaのEllipse2D
は、Shape
インターフェイスを実装しているため、必要に応じて後者のメソッドの1つを使用できます。 Shape
をBufferedImage
にレンダリングし、そのWritableRaster
をトラバースすることも可能です。
オーバルのためのシンプルな標準的な暗黙の方程式は、(中央0で、0)である
だからヨーヨーは、すべての可能な座標を投げる反復して使用してそれを確認することができますこの方程式。私はそこには何も組み込まれていないと思います。
この手順をステップバイステップで進めてください。あなたの楕円の中心部は、(0,0)
で、1つの半径はa
ある他であると仮定すると
がb
で、標準的な方程式は、あなたが得るa^2
とb^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)
であるならば、これはのみ動作しますので、あなたが動作するように、このアルゴリズムをしたい場合は、適切な翻訳を使用してあなたのポイントをシフトします。センターをどこか別の場所に残すと、このアルゴリズムはより面倒になります。
注::これはテストしませんでした。誰かが間違いを見たら、それを指摘してください。
宿題ですか? –
あなたはそれが正しい – Joel