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
svg变换矩阵的分解_Svg_Snap.svg_Coordinate Transformation - Fatal编程技术网

svg变换矩阵的分解

svg变换矩阵的分解,svg,snap.svg,coordinate-transformation,Svg,Snap.svg,Coordinate Transformation,我有一条多段线(1),该多段线与另一个组中的ING组在一起。这两个群体在各个方面都发生了变化。我需要在变换后获得多段线点的精确位置,但这并不容易,因为手头只有变换属性。 我试图将这些变换复制到另一条多段线(2),以便获得变换后的点位置。我从多段线(1)中得到了globalMatrix,借助这个:和互联网,我得出了以下结论: 如果未应用任何旋转,则该选项有效。如果应用了旋转,则所有点都会稍微偏移。当然缩放还没有完成,也许它解决了这个问题? 然后是缩放问题:多段线(1)有时会翻转(通常是s-1,1或

我有一条多段线(1),该多段线与另一个组中的ING组在一起。这两个群体在各个方面都发生了变化。我需要在变换后获得多段线点的精确位置,但这并不容易,因为手头只有变换属性。 我试图将这些变换复制到另一条多段线(2),以便获得变换后的点位置。我从多段线(1)中得到了globalMatrix,借助这个:和互联网,我得出了以下结论:

如果未应用任何旋转,则该选项有效。如果应用了旋转,则所有点都会稍微偏移。当然缩放还没有完成,也许它解决了这个问题? 然后是缩放问题:多段线(1)有时会翻转(通常是s-1,1或s1,-1)。这里应该如何实现缩放? 在尝试复制转换时,按什么顺序执行这些转换很重要吗? 分解是否正确,这似乎很奇怪:

scaleX: Math.sqrt(matrix.a * matrix.a + matrix.b * matrix.b),
scaleY: Math.sqrt(matrix.c * matrix.c + matrix.d * matrix.d), 

谢谢你

我不确定我是否误解了这个问题,但你似乎在为你已经掌握的信息做大量工作

你有一个矩阵(el.matrix().globalTransform),为什么不把它应用到每个点上呢。我不知道分解矩阵能给你什么帮助

所以你可以这样做,迭代点,应用矩阵,然后你的多段线被现有矩阵展平

var m = r1.transform().globalMatrix;
var pts = poly.attr('points');
var ptsarray = [];

for( var c = 0; c < pts.length ; c += 2 ) {     
   ptsarray.push( m.x( pts[c], pts[c+1] ), 
                  m.y( pts[c], pts[c+1] ) );

}
poly.attr('points', ptsarray ) 
var m=r1.transform().globalMatrix;
var pts=多边形属性(“点”);
var ptsarray=[];
对于(var c=0;c


使用捕捉矩阵变换坐标是可行的,但有几个问题:全局矩阵中的x/y函数是什么?有关于这方面的文档吗?是的,它在矩阵部分(这也回答了该页上的另一个问题)。