Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 相交闭合路径_Javascript_Svg_D3.js_Convex Hull - Fatal编程技术网

Javascript 相交闭合路径

Javascript 相交闭合路径,javascript,svg,d3.js,convex-hull,Javascript,Svg,D3.js,Convex Hull,测试svgpath绘制的两个形状是否相交的好方法是什么(代码方面和性能方面)?我在d3中这样做,并使用“cardinal closed” 更具体地说,我正在创建凸面外壳(比图像中更复杂),如果它们重叠,我希望合并外壳。如果我使用“线性闭合”插值,这很容易做到,因为这样我就可以使用顶点来计算交点,但是“基数闭合”插值在我使用它的地方看起来更好 var v1 = [[100,100],[200,100],[200,200],[100,200]], v2 = [[210,100],[310,100],

测试svg
path
绘制的两个形状是否相交的好方法是什么(代码方面和性能方面)?我在d3中这样做,并使用“cardinal closed”

更具体地说,我正在创建凸面外壳(比图像中更复杂),如果它们重叠,我希望合并外壳。如果我使用“线性闭合”插值,这很容易做到,因为这样我就可以使用顶点来计算交点,但是“基数闭合”插值在我使用它的地方看起来更好

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));


这是一本书如何测试这些形状是否相交/重叠?

正如@Phrogz所说,您可能应该使用

我认为您必须深入了解基本闭合路径的基本原理。例如,如果将其设置为
线性
,则两个形状不相交。因此,在进行测试时,必须考虑()发生的方式。如果任意两个SVG形状相交,您可以使用Wonder来测试。谢谢@Phrogz,该库确实很棒!!:)