相交的svg封闭路径

swe*_*edo 12 javascript svg convex-hull d3.js

测试svg绘制的两个形状path是否相交,有什么好方法(代码方面和性能方面)?我在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));
Run Code Online (Sandbox Code Playgroud)

输出代码

这是一个jsfiddle.如何测试这些形状是否相交/重叠?

0xc*_*aff 5

正如@Phrogz 所说,你可能应该使用交集库。