- 2008年7月23日 14:51
- Canvas | Matrix | Transform attribute
これは、SVG & Canvas で使われているMatrix Transformation をJavascript で計算して値を求めるためのツールです。そのMatrix値を使ってCanvas に描くようにしました。Matrix は、3×3ですので2Dです。3Dは4×4のマトリックスになります。
How to : & example
input value of translate(txty) ---> translate(50,40)
input value of scale(sxsy) ---> scale(2) or scale(1,-0.75)
input value of rotate(angle) ---> rotate(25)
input value of skewX(angle) ---> skew(-45)
"Get Matrix" button is to get values of Matrix Transformation
"Clear Text" button is to clear the textarea
"Draw Matrix" button is to redraw the image below
"Clear Canvas" button is to clear images which is drawn.
IEでも表示させるために Google の excanvas.js を使っていますが、excanvas.js に Matrixで描写するための setTransform 属性がないためにスクリプトを改造しています。しかし、IEでは、外側の赤い部分しか Matrix を Transform 出来ません。
マトリックスの計算方法は、上の図のようになります。
translate, scale, rotate, skewX, skewY 式にそれぞれの値を代入して、下の図で2つの式を計算させます。transform 属性で書かれている順番に従いさえすれば、頭から計算しても最後から計算しても同じです。
W3Cで標準化されている要素、スタイル属性がサポートされているブラウザ、またはSVG Viewerプラグインをインストールしてください。
これは、translate, scale, rotate, skew でTransform されたものをMatrix変換して纏めたものです。SVGレンダラーは、transform 属性で設定された各プロパティ値をMatrix変換してして処理するのでMatrix transform属性を使うことで計算量が減少した分、パフォーマンスが得られます。
translate(0,0) と matrix(1,0,0,1,0,0) は同じ位置に表示されます。
同じように、translate(450,450) scale(-1,1) rotate(165) と matrix(0.9659,0.2588,0.2588,-0.9659,450,450) も同じ位置です。
色の名称はこちらを参考:Name, Hex, RGB of Color
下のコードは上のSVGファイルのコードです。
