Каков хороший способ (как по коду, так и по производительности) проверить, пересекаются ли две формы, нарисованные 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));
Вот jsfiddle. Как проверить, пересекаются ли эти фигуры/перекрываются?