目的は、ブラシのMinkowski sumとマウスのパスを作成して、ポリゴン様のペイントブラシのように画面上でマウスをドラッグすることで簡単なベクトル画像の編集を行うことです。新しいポリゴンは、以前に存在していた異なる色のポリゴンから差し引かれ、同じ色の既存のポリゴンとマージされます。ポリゴンをブラシでドラッグしてベクトル画像を編集する
各マウスの動きをマウスの前の位置から現在の位置まで線分として取り、その線分のミンコフスキーの合計を計算してから、Weiler–Atherton clipping algorithmを使用して、そのミンコフスキーの合計を含むように既存のポリゴンを更新します。
Weiler-Athertonがマウスの動きごとに実行すると、UI遅延が発生する可能性が高いため、最新のマウスの動きに追いつく時間がかかる別のスレッドにそのステップを入れるか、描画が終了するまですべてのWeiler-Atherton計算を保存してから、保存時に一括操作として実行します。これにより、非常に多数の重なり合ったポリゴンが蓄積され、UIをすべてレンダリングするのに必要な時間だけUIが遅れることがあります。
質問:上記の計画は、Inkscapeや他の深刻なベクターグラフィックス編集ソフトウェアがこの操作を実行する方法ですか?それはアルゴリズムのトリッキーさとその計算上の複雑さの両方で狂った計画のようです。専門家は何をしますか?
もう1つのオプション:単純なラスタ操作を使用してペイントし、最後のステップとしてラスタをベクタイメージに変換します。ラスタからベクトルへの変換は、Weiler-Athertonよりも難解ではないようであり、最終出力の品質は低下する可能性がありますが、それがより良い選択肢になりますか?
これらのアルゴリズムをマウスの動きごとに実行すると、パフォーマンスの問題が発生する可能性は低いです。コンピュータのゲームエンジンは、フレームごとに計算幾何学的に大量のデータを実行する。 – jkff