2

間隔、硬さ、丸み、角度、直径などの楕円形の (計算された) ブラシ パラメーターを受け入れ、それらの属性に基づいてビットマップ イメージを計算できるようにする必要があります。

これを行うためのアルゴリズム(またはどこで見つけることができるか)を知っている人はいますか? 私はグラフィックス プログラミングの経験が限られており、これまで見つけることができませんでした。

4

2 に答える 2

1

これは、ライブラリを使用したい種類のものであり、おそらくJava2DAPIです。これには、塗りつぶし、ストローク、変換、およびフィルターの機能が含まれています。そのモデルは、演算子moveToや、lineToまたはcurveToのような形で抽象化されたパスをトレースするという点で、多くのライブラリに似ていますEllipse2D。次に、ペイント演算子を使用して、結果のパスを塗りつぶすかストロークします。Java 2Dチュートリアルを読み、さまざまな部分がどのように組み合わされているかを理解することを強くお勧めします。

この図面を作成するには、おおよそ次の手順を実行します。

  • ぼかした後の回転した楕円の最終的な寸法を計算します。
  • そのサイズのを作成し、BuferredImageそのcreateGraphicsメソッドを呼び出して描画コンテキストを取得します。
    • グラフィックオブジェクトを回転します
    • 楕円を描く
    • 黒で塗りつぶします
  • ガウスぼかしフィルターを実装します。ConvolveOpこれはAPIに組み込まれていませんが、と呼ばれるフィルターを実行するためのフレームワークが含まれており、Javaでガウスカーネルを計算するためのアルゴリズムを見つけることができます。
  • 画像にフィルタを適用して、結果を返します。

もう1つのオプションは、ApacheのBatik SVGライブラリです。これは、必要な描画(変換とフィルターを含む)を宣言的に表現し、それをラスタライズできるためです。

于 2010-03-15T20:53:04.930 に答える
0

楕円の非常に便利な式のリストは、http: //xahlee.org/SpecialPlaneCurves_dir/Ellipse_dir/ellipse.htmlにあります。

ビットマップ内の個々のピクセルについて各式が何を意味するか (楕円の内側か外側か、エッジの近くにあるかどうか)、およびどのプロパティが役立つかを考えてください。

于 2010-07-04T07:13:49.650 に答える