必要な入力と出力についてもう少し詳しく説明すると役立つ場合があります。
たとえば、ポリゴンを三角形にしようとしているだけの場合は、三角形のファンが機能する可能性があります。ポリゴンを小さな断片にカットしようとしている場合は、ある種のマーチングスクエアを実装できます。
さて、私は悪い仮定をしました-マーチングキューブはマーチングキューブにもっと似ていると思いました。それはまったく異なっており、私が意図したこととはまったく異なります。:|
いずれにせよ、あなたの質問に直接答えるために、私はあなたが探していることをする簡単なライブラリを知りません。CGALの使いやすさについては同意します。
私が考えていたアルゴリズムは、基本的にポリゴンを線で分割することでした。線はグリッドであるため、ほとんどの場合、四角形になります。多角形の線の交点がある場合、実装は簡単です。この問題を引き起こす別の方法は、2Dポリゴンを関数のように扱い、ポイントのグリッドをオーバーレイすることです。次に、マーチングキューブに似た操作を行います。4つのポイントすべてがポリゴンにある場合はクワッドを作成し、3つが三角形を作成する場合、2つが長方形を作成するなどです。おそらくやり過ぎです。少し不規則に見えるポリゴンが必要な場合は、グリッドポイントの位置をランダム化できます。
一方、キャットマルクラークスタイルの細分割を行うことはできますが、スムージングは省略します。アルゴリズムは基本的に、図心と各エッジの中点にポイントを追加することです。次に、元のポリゴンの各コーナーに対して、コーナーの前のエッジの中点、コーナー、次のエッジの中点、および図心を接続する新しい小さなポリゴンを作成します。これによりスペースが並べて表示され、入力ポリゴンと同様の角度になります。
したがって、多くのオプションがあり、ブレインストーミングソリューションが好きですが、これを何に使用する予定かはまだわかりません。これは破壊可能なメッシュを作成するためですか?より小さな要素を必要とするある種のメッシュ処理を行っていますか?グーローシェーディングアーティファクトを回避しようとしていますか?これは前処理またはリアルタイムとして実行されるものですか?正確さはどれほど重要ですか?より多くの情報はより良い提案につながるでしょう。