javascript - 相交的 svg 闭合路径

标签 javascript svg d3.js convex-hull

测试 svg path 绘制的两个形状是否相交的好方法(代码方面和性能方面)是什么?我在 d3 中执行此操作并使用“cardinal-closed”line interpolation

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

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

Output of code

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

最佳答案

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

关于javascript - 相交的 svg 闭合路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17202621/

相关文章:

javascript - 使用被取代的 Javascript 更改字体

css - 为什么转换顺序很重要?旋转/缩放不会给出与缩放/旋转相同的结果

css - 如何将 animateMotion 与 CSS 动画同步?

javascript - onmouseover 事件不适用于 Chrome 中的整个 div

javascript - 如何使用下拉列表过滤 Kendo UI MVC 网格

javascript - 向下遍历 DOM 以仅选择

css - CSS3 旋转问题

javascript - 更改 : Add Label to Draggable Circle

javascript - D3 - 部分力导向图

javascript - $location 在使用 d3.js 的 AngularJS 中不起作用