12
svg path
で描画された2つの図形が交差しているかどうかをテストする良い方法(コード通りとパフォーマンス上の両方)はありますか?私はd3でこれをやっていて、 "基点閉鎖"を使用しています。svgクローズパスを交差する
より具体的には、私は凸包を作成しています(イメージより複雑です)。 「線形閉包」補間を使用すると簡単ですが、交点を計算するために頂点を使用できますが、「基礎閉鎖」補間は使用する場所によってよく見えます。ここで
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です。
これらの図形が交差/重なっているかどうかをテストするにはどうすればよいですか?
を使用する必要があります言ったように。同様に、「線形」に設定すると、2つの図形は交差しません。だから、この方法(http://en.wikipedia.org/wiki/Cubic_Hermite_spline#Cardinal_spline)のやり方については、テストの際に考慮する必要があります。 – elsherbini
Kevin Lindseyの素晴らしい交差ライブラリを使用することができます。 (http://www.kevlindev.com/geometry/2D/intersections/index.htm)を使用して、2つのSVG図形が交差するかどうかをテストします。 – Phrogz
ありがとう@Phrogz、そのライブラリは本当に素晴らしいです! :) – swenedo