svg将矩阵表示法转换为旋转/平移

时间:2015-11-25 13:29:25

标签: javascript matrix svg transform

我有点失去计算矩阵变换(旋转/翻译)

我将svg转换应用于svg rect(r1)

SVGMatrix { a: 0.8660253882408142, b: 0.5, c: -0.5, d: 0.8660253882408142, e: 85.945556640625, f: 23.887840270996094 }

这给我以下变换矩阵 translate(x,y) rotate(a, x+rect.w, y+rect.height)

如果我将此变换矩阵应用于另一个矩形(r2),矩形将移动到第一个矩阵的完全相同的位置,但在应用旋转之前我丢失了初始的x,y位置

如何从变换矩阵中获取这些x,y值?

inline-c

我已经制作了一个jsbin来说明我的问题

https://jsbin.com/luvome/edit?html,js,output

如果你能提供帮助,我将非常感激。 感谢。

1 个答案:

答案 0 :(得分:0)

使用此回答https://stackoverflow.com/a/15134993/2125385

我找到了这个功能

MSE <- cvmodel@model$cross_validation_metrics@metrics$MSE

我现在可以创建一个新的变换矩阵并应用于rect r3。

function computePosition(m, dim, angle){  
  var rad = angle*Math.PI/180;
  var tx = m.e - dim.width/2 + Math.cos(rad)*dim.width/2 - dim.height/2*Math.sin(rad);
  var ty = m.f - dim.height/2 + dim.width/2*Math.sin(rad) + dim.height/2*Math.cos(rad);
  return {x:tx, y:ty}
}