当該配列に格納されているノード(頂点)座標群を使用して、三角形分割を行い、三角形情報を返します。 ノード座標は x1, y1, x2, y2, x3, y3, ... のように、インターリーブされていなければなりません。 また、引数で指定した矩形領域内に収まっていなければなりません。
矩形の頂点座標は自動的に付加されますので、ユーザが指定する必要はありません。
分割結果を配列で返します。 この配列には、分割後の三角形の数だけ要素が格納されています。 各要素は、各三角形の頂点座標と、隣接三角形の情報が格納された数値配列です。 各三角形の頂点座標は、インターリーブされた状態で格納されます。 隣接三角形の情報は、隣接する三角形の、この配列におけるインデックス番号です。
この配列イメージは下記のようになります。
[ [ x1, y1, x2, y2, x3, y3, n1, n2, n3 ] , // 三角形1の情報 [ x1, y1, x2, y2, x3, y3, n1, n2, n3 ] , // 三角形2の情報 [ x1, y1, x2, y2, x3, y3, n1, n2, n3 ] , // 三角形3の情報 ... , [ x1, y1, x2, y2, x3, y3, n1, n2, n3 ] // 三角形Nの情報 ]
x1, y1, x2, y2, x3, y3 は三角形の頂点座標です。 n1, n2, n3 が、各辺に隣接する三角形のインデックス番号です。 隣接しない場合には -1 が格納されます。 n1, n2, n3 はこの配列(分割結果)におけるインデックス番号になっているため、隣接する三角形を再帰的に辿ることができます。
var coords = [ 70,20, 40,50 ]; var result = coords.triangulate(100, 80);
このコードを実行すると、 result には下記の配列が格納されます。
[ [ real +0.0 /* +0.0 */, real +0.0 /* +0.0 */, real 0x1.8C00000000000p6 /* 99 */, real +0.0 /* +0.0 */, real 0x1.1800000000000p6 /* 70 */, real 0x1.4000000000000p4 /* 20 */, int 2, int 3, int -1 ], [ real 0x1.1800000000000p6 /* 70 */, real 0x1.4000000000000p4 /* 20 */, real 0x1.8C00000000000p6 /* 99 */, real 0x1.3C00000000000p6 /* 79 */, real 0x1.4000000000000p5 /* 40 */, real 0x1.9000000000000p5 /* 50 */, int 4, int 3, int 2 ], [ real 0x1.8C00000000000p6 /* 99 */, real 0x1.3C00000000000p6 /* 79 */, real 0x1.1800000000000p6 /* 70 */, real 0x1.4000000000000p4 /* 20 */, real 0x1.8C00000000000p6 /* 99 */, real +0.0 /* +0.0 */, int 0, int -1, int 1 ], [ real 0x1.4000000000000p5 /* 40 */, real 0x1.9000000000000p5 /* 50 */, real +0.0 /* +0.0 */, real +0.0 /* +0.0 */, real 0x1.1800000000000p6 /* 70 */, real 0x1.4000000000000p4 /* 20 */, int 0, int 1, int 5 ], [ real 0x1.8C00000000000p6 /* 99 */, real 0x1.3C00000000000p6 /* 79 */, real +0.0 /* +0.0 */, real 0x1.3C00000000000p6 /* 79 */, real 0x1.4000000000000p5 /* 40 */, real 0x1.9000000000000p5 /* 50 */, int 5, int 1, int -1 ], [ real +0.0 /* +0.0 */, real +0.0 /* +0.0 */, real 0x1.4000000000000p5 /* 40 */, real 0x1.9000000000000p5 /* 50 */, real +0.0 /* +0.0 */, real 0x1.3C00000000000p6 /* 79 */, int 4, int -1, int 3 ] ]
このときの三角形分割イメージは下記のようになります。