获取弯曲的svg对象的呈现边框
问题描述:
我需要知道svg对象是否与另一个svg对象相邻。所以我需要得到它的边界。这些对象可以是矩形或路径。当他们是直的时候,这很容易,但当他们弯曲或弯曲时,我不知道该怎么做。获取弯曲的svg对象的呈现边框
我的意思的例子可以发现here或短的例子在这里:
<svg id="mysvg" xmlns="http://www.w3.org/2000/svg" viewBox="0 200 512 512">
<path d="m 223.40414,282.21605 35.53211,-3.88909 0,-18.73833 -19.79899,-0.17678 c -5.83251,7.19542 -10.70707,15.0451 -15.73312,22.8042 z" id="pB"></path>
</svg>
如果我使用的盒的角落,我创建了一个virtual
直矩形,其相邻的对象不等于邻道的渲染对象。 我该怎么做?
答
Snap库为您的问题提供了一些不错的工具。你的问题没有定义“相邻”应该是什么意思。这里是设定阈值的最大距离为路径之间的函数:
var threshold = 1;
function isAdjacent (id1, id2) {
var s = Snap("#mysvg");
var first = s.select('#' + id1);
var second = s.select('#' + id2);
var len = first.getTotalLength(first);
var p1, p2;
for (var at = 0; at <= len; at += threshold) {
p1 = first.getPointAtLength(at);
if (Snap.closestPoint(second, p1.x, p1.y).distance <= threshold) {
return true;
}
}
return false;
}
https://www.w3.org/TR/SVG/paths.html#__svg__SVGPathElement__getPointAtLength –