2016-05-20 4 views
0

三角形()を使用してこれを検出し、いくつかの点を補間するためのメッシュを生成します。私のポイントのいくつかは三角形の中にないことに気づいた。三角形がメッシュにないことに驚きました。私のデータを4つの頂点に整理すると、2つの三角形が得られるはずですが、ただ1つしかありません。私は頂点を少し微調整しようとしましたが、結果として期待される三角形の数になります。d3.voronoi.trianglesの戻り値に三角形がないのはなぜですか?

v = require("d3-voronoi").voronoi(); 

vertices = [[47.307,105.33],[51.707,104.13],[52.717,110.74],[53.917,106.34]]; 

console.log(v.triangles(vertices)); // returns 1 triangle 

vertices[3][1] += 0.001 // tweak one of the values slightly 

console.log(v.triangles(vertices)); // returns 2 triangles (as expected) 

https://tonicdev.com/56f99ca738ca281100ea16ad/573f3672a04fd4110009ee44

私が使用したアルゴリズムに精通していないよので、私は(成功した場合に、障害のパスを比較する)しかしD3-ボロノイステッピング多くの幸運を持っていませんでした。

私は数値エラーを疑いますが、私はこの問題を追跡または回避する方法がわかりません。

d3-voronoi(理想的には)の問題を解決するための助けや、別の(数値的に安定した)メッシュ生成関数の推奨事項を探してください。

+0

私はこのバグを別のパッケージに切り替えることによって解決しました:[delaunay-triangulate](https://www.npmjs.com/package/delaunay - 三角形) –

答えて

0

私は最終的にこの疑問に戻って、をd3-voronoi repoに投稿しました。

答えは素早く戻ってきました。孤立点これはボロノイアルゴリズムの問​​題です。

私のオプションは、ランダムなジッタをデータに追加したり、三角形を直接計算することです。前述のように、私はdelaunay-triangulateパッケージを使用して後者を選択しました

関連する問題