間隔、硬さ、丸み、角度、直径などの楕円形の (計算された) ブラシ パラメーターを受け入れ、それらの属性に基づいてビットマップ イメージを計算できるようにする必要があります。
これを行うためのアルゴリズム(またはどこで見つけることができるか)を知っている人はいますか? 私はグラフィックス プログラミングの経験が限られており、これまで見つけることができませんでした。
これは、ライブラリを使用したい種類のものであり、おそらくJava2DAPIです。これには、塗りつぶし、ストローク、変換、およびフィルターの機能が含まれています。そのモデルは、演算子moveTo
や、lineTo
またはcurveTo
のような形で抽象化されたパスをトレースするという点で、多くのライブラリに似ていますEllipse2D
。次に、ペイント演算子を使用して、結果のパスを塗りつぶすかストロークします。Java 2Dチュートリアルを読み、さまざまな部分がどのように組み合わされているかを理解することを強くお勧めします。
この図面を作成するには、おおよそ次の手順を実行します。
BuferredImage
そのcreateGraphics
メソッドを呼び出して描画コンテキストを取得します。
ConvolveOp
これはAPIに組み込まれていませんが、と呼ばれるフィルターを実行するためのフレームワークが含まれており、Javaでガウスカーネルを計算するためのアルゴリズムを見つけることができます。もう1つのオプションは、ApacheのBatik SVGライブラリです。これは、必要な描画(変換とフィルターを含む)を宣言的に表現し、それをラスタライズできるためです。
楕円の非常に便利な式のリストは、http: //xahlee.org/SpecialPlaneCurves_dir/Ellipse_dir/ellipse.htmlにあります。
ビットマップ内の個々のピクセルについて各式が何を意味するか (楕円の内側か外側か、エッジの近くにあるかどうか)、およびどのプロパティが役立つかを考えてください。