2012-05-01 7 views
3

私は、SVG変換で使用される行列値を出力するPHP関数または方程式を探しています。SVGを変換する方法回転/スケールからの行列値

私は高低を狩り、不幸にも何も見つかりませんでした。

私はrotate()とscale関数()をよく知っていますが、これは私が必要としているものではありません。

Iは

(F、A、B、C、D、E)フォーマット変換行列X/Yスケールデータ及び出力と共にSVGにおける一連の値を度単位で回転角度を取ることができる必要があります

理想的には私はこれをPHPでやってみたいですが、述べたように標準的な数学的方程式も役立ちます。

誰かが私を正しい方向に向けることを望みます。

答えて

3

単一の変換の行列を乗算することによって値を計算できます。その定義を見つけるためにSVG specificationで見てください:

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) 
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> />` 
関連する問題