ハマったのでメモ。 以前実装した細分割曲面(subdivision-surface)は制御メッシュが三角形メッシュに限定されていた。任意の多角形メッシュに拡張したかったので、Catmull-Clarkのアルゴリズムを実装することにした。 Googleで検索すると次のWikipediaのページがヒットした。 http://en.wikipedia.org/wiki/Catmull-Clark_subdivision_surface このロジックにしたがって実装したのだけど、どうもおかしい。滑らかな曲面に収束しないのだ。アルゴリズムを意訳するとこんな感じ。 face point = 面の全頂点の平均値(重心の位置) edge point = 隣接するface pointとエッジ両端点の平均値 original point を P、P に隣接するn個のface pointの平均値を F、P に隣