12

pathsvg によって描画された 2 つの形状が交差しているかどうかをテストする (コードとパフォーマンスの両方の観点から) 良い方法は何ですか? 私はd3でこれを行っており、「カーディナルクローズド」ライン補間を使用しています

より具体的には、凸包 (画像よりも複雑) を作成しており、重なっている場合はそれらをマージしたいと考えています。「線形閉じた」補間を使用すると、頂点を使用して交点を計算できるため、簡単に実行できますが、使用する場所では「カーディナル閉じた」補間の方が見栄えがします。

var v1 = [[100,100],[200,100],[200,200],[100,200]],
v2 = [[210,100],[310,100],[310,200],[210,200]];

var hull1 = d3.geom.hull(v1),
    hull2 = d3.geom.hull(v2);

var svg = d3.select("#foo")
    .append("svg");

var line = d3.svg.line()
    .interpolate("cardinal-closed")
    .x(function(d) {return d[0];})
    .y(function(d) {return d[1];});

svg.append("path")
    .attr("d", line(hull1));
svg.append("path")
    .attr("d", line(hull2));

コードの出力

ここにjsfiddleがあります。これらの形状が交差/重複しているかどうかをテストするにはどうすればよいですか?

4

1 に答える 1