Подтвердить что ты не робот

Пересечение svg замкнутых путей

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

Output of code

Вот jsfiddle. Как проверить, пересекаются ли эти фигуры/перекрываются?

4b9b3361