このソリューションでは、 CGALと同じように「仮想無限 Delaunay 頂点」を使用して Delaunay 三角形分割を表すデータ構造があることを前提としています(詳細はこちらを参照)。
アイデアは、境界 Delaunay エッジを見つけることです。2 つの連続するサンプル ポイントを接続するエッジです。次に、ドロネー三角形分割を「フラッド」して、ドロネー面を分類します。無限頂点は外部であることを知っているので、境界エッジを交差しない限り、その隣接 (および隣接の隣接など) を外部として分類できます。境界エッジに到達した場合は、単純に隣接する三角形を内部としてマークし、同様に続行できます。
入力: 閉じた形状の境界を高密度にサンプリングした点の集合。
出力: 形状の内部のボロノイ図 (形状の中心軸の近似値)
- ポイントの Delaunay 三角形分割を計算します
- 2 つの連続するサンプル点を接続する Delaunay エッジをマークします。(このペーパーの 4 ~ 5 ページを参照して、すべての Delaunay エッジでローカル テストを使用してこれを行う方法を参照してください)
- すべての無限 Delaunay 面を OUTSIDE として分類し、それらをキューQにプッシュします。
- Qが空でない
間
- Delaunay 面 f = Qからのポップ
- f の
未分類の隣接三角形tごとに
- tとfが共有する Delaunay エッジがマークされている場合、 tをfの反対として分類する
- そうでなければfと同じようにtを分類する
- tをQにプッシュ
- すべての Delaunay エッジeについて
- 隣接する 2 つのドローネ三角形d1、d2が両方とも INTERIOR として分類される場合、 d1とd2の外心を結ぶ線分を出力します。
このような入力の場合

、次の中心軸近似を計算できます。

Mesecinaの無料の Windows バイナリを使用して、この中心軸近似が実際にどのように動作するかを確認できます。ソースコードはこちら。