delaunay_3d



機能:
空間点集の空間ドローネー三角形網への分割

書式:
delaunay_3d([ix],[iy],[iz],[ox],[oy],[oz])

解説:
本関数は、delaunay_2d()関数を3次元データの分割に拡張したものです。数値組[ix]、[iy]、[iz]で与えられる空間離散点列を、次の規則に従って三角形に分割し、結果を平面連続3点独立三角形(連続3点で1個の三角形)表現形式で数値組[ox]と[oy]と[oz]に出力します(部品「3D網目」等で立体表示可能)。
ドローネー(Delaunay)三角形分割規則:
各三角形の最小角が最大になるように三角形分割を行います。各三角形の外接円の中に他の点列が一つも存在しないことが実現できれば、最小角が最大になる条件が満足されます。

     [ix],[iy],[iz] ・・・・・・・・・・・・・・・ 空間離散点列のXYZ座標の入力数値組

     [ox],[oy],[oz] ・・・・・・・・・・・・・・・ 結果の空間連続3点独立三角形のXYZ座標の出力数値組

例:
次の例では、部品「3D網目7」を使って関数 z = x^3-3xy+y^3 の3次元表示をしています。
まず、乱数で関数の250点の離散3次元数値を求めます。次に、delaunay_3d()で三角形のメッシュに自動分割します。最後に、arrange_3d()で基準点(2,2)との距離の近さ順に全三角形要素の順番を並び替えます。
rand_init(2); "乱数系列初期化(同じ乱数値を得るため)"
for(1,250,1) { "3次元離散数値(250点)の計算"
#1 = rand1()*4 - 2; [1][@] = #1; "x: -2〜2"
#2 = rand1()*4 - 2; [2][@] = #2; "y: -2〜2"
[3][@] = #1^3 - 3*#1*#2 + #2^3; "z = x^3 - 3xy + y^3"
}
delaunay_3d([1],[2],[3],[4],[5],[6]) "ドローネ三角形分割"
arrange_3d([4],[5],[6],0,2,2,[4],[5],[6]) "三角形要素の中心(2,2)整列"



return