本质上,我正在寻找一个 PHP 函数或方程,它将输出 SVG 转换中使用的矩阵值。
我到处打猎,不幸的是一无所获。
我很清楚 rotate() 和 scale function() 但是这些不是我需要的。
我需要能够以度数为单位的旋转角度以及 x/y 比例数据,并以 SVG 变换格式矩阵(a、b、c、d、e、f)输出一系列值
理想情况下,我想在 PHP 中执行此操作,但如前所述,标准数学方程式也会有所帮助。
希望有人能指出我正确的方向。
您可以通过将单个变换的矩阵相乘来计算这些值。查看SVG 规范以找到它们的定义:
rot(a) := matrix(cos(a), sin(a), -sin(a), cos(a), 0, 0)
scale(sx,sy) := matrix(sx, 0, 0, sy, 0, 0)
根据应应用变换的顺序(缩放前的旋转与旋转前的缩放),您会得到不同的矩阵:
rot(a)*scale(sx,sy) = matrix(sx*cos(a), sx*sin(a), -sy*sin(a), sy*cos(a), 0, 0)
scale(sx,sy)*rot(a) = matrix(sx*cos(a), sy*sin(a), -sx*sin(a), sy*cos(a), 0, 0)
function selectElement(evt) {
selectedElement = evt.target;
currentX = evt.clientX;
currentY = evt.clientY;
currentMatrix = selectedElement.getAttributeNS(null, "transform").slice(7, -1).split(' ');
alert(currentMatrix );
}`<svg><rect class="draggable" x="30" y="30" width="80" height="80" fill="blue" transform="matrix(1 0 0 1 0 0)"
onmousedown="selectElement(evt)"</svg> />`