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
Snap SVG-检查一个变换的矩形是否完全位于另一个矩形内?_Svg_Snap.svg - Fatal编程技术网

Snap SVG-检查一个变换的矩形是否完全位于另一个矩形内?

Snap SVG-检查一个变换的矩形是否完全位于另一个矩形内?,svg,snap.svg,Svg,Snap.svg,我正在使用Snap SVG在我正在制作的web应用程序中操纵SVG。在这个web应用程序中,我有两个矩形,一个在另一个的内部,称它们为矩形内部和矩形外部。其目的是允许用户变换rectOuter(缩放、旋转、平移),以便rectInner始终严格位于rectOuter内部。要清楚的是,rectInner永远不会移动或改变 我解决这个问题的方法是获取rectInner和rectOuter的边界框,并检查第一个边界框是否严格包含在第二个边界框中。Snap SVG提供了一个函数isbboxiterSec

我正在使用Snap SVG在我正在制作的web应用程序中操纵SVG。在这个web应用程序中,我有两个矩形,一个在另一个的内部,称它们为矩形内部和矩形外部。其目的是允许用户变换rectOuter(缩放、旋转、平移),以便rectInner始终严格位于rectOuter内部。要清楚的是,rectInner永远不会移动或改变

我解决这个问题的方法是获取rectInner和rectOuter的边界框,并检查第一个边界框是否严格包含在第二个边界框中。Snap SVG提供了一个函数isbboxiterSect(rectInner,rectouther),但它只告诉我边界框的各个部分是否相交,而不是一个是否包含在另一个中

有没有一个简单的方法可以做到这一点

编辑:

现在看来,我有点误解了边界框的概念,但问题应该更简单。如果我能找到一种方法,在所有变换之后计算rectOuter的四个顶点,那么只要rectInner的角在由这些顶点构造的路径的内部,整个矩形就是。我想

##### coffeescript
el = Snap('rect#outer')
mat = el.attr('transform').totalMatrix

left = +el.attr('x')
top = +el.attr('y')
right = left + (+el.attr('width'))
bottom = top + (+el.attr('height'))

console.log(left, top, right, bottom)

points =  {
    x: mat.x(left, top)
    y: mat.y(left, top)
    x2:mat.x(right, top)
    y2:mat.y(right, top)
    x3:mat.x(right, bottom)
    y3:mat.y(right, bottom )
    x4:mat.x(left, bottom)
    y4:mat.y(left, bottom)
}
使用矩阵! 您可以在
mat
变量中找到更多矩阵。 如果totalMatrix不起作用,请尝试另一个