|  | HTML5テクニカルノート EaselJS 0.8.0: Matrix2Dクラスの基本的なメソッドと行列演算
         
          | ID: FN1501003 | Technique: HTML5 and JavaScript | Library: EaselJS 0.8.0 |  
 EaselJSライブラリのMatrxi2Dクラスによる座標変換は、おもに変換行列の乗算で表されます[*1]。そこで、Matrix2Dクラスの基本的なメソッドについて、その行列演算をご紹介します。 
    | Matrix2Dクラス のメソッド
 | 説明 | 行列演算 |  
    | Matrix2D(a, b, c, d, tx, ty) (コンストラクタ)
 | 引数の成分が与えられた変換行列のMatrix2Dインスタンスをつくる。デフォルト値は単位行列の成分。 | 
  
    |   | a | c | tx |   |  
    | b | d | ty |  
    | 0 | 0 | 1 |  |  
    | append(a, b, c, d, tx, ty) | 引数の成分が与えられた変換行列を、参照するMatrix2Dオブジェクトの右から乗じる。 | 
  
    | X |   | a | c | tx |   |  
    | b | d | ty |  
    | 0 | 0 | 1 |  |  
    | prepend(a, b, c, d, tx, ty) | 引数の成分が与えられた変換行列を、参照するMatrix2Dオブジェクトの左から乗じる。 | 
  
    |   | a | c | tx |   | X |  
    | b | d | ty |  
    | 0 | 0 | 1 |  |  
    | rotate(angle) | 参照するMatrix2Dオブジェクトの変換行列を、引数の角度回転する[*2]。 | 
  
  	| X |   | cos(angle) | -sin(angle) | 0 |   |  
    | sin(angle) | cos(angle) | 0 |  
    | 0 | 0 | 1 |  |  
    | translate(x, y) | 参照するMatrix2Dオブジェクトの変換行列を、引数のxy座標平行移動する。 | 
  
  	| X |   | 1 | 0 | x |   |  
    | 0 | 1 | y |  
    | 0 | 0 | 1 |  |  
    | scale(x, y) | 参照するMatrix2Dオブジェクトの変換行列を、xy各軸方向に引数の比率伸縮する。 | 
  
  	| X |   | x | 0 | 0 |   |  
    | 0 | y | 0 |  
    | 0 | 0 | 1 |  |  
    | skew(skewX, skewY) | 参照するMatrix2Dオブジェクトの変換行列を、xy各軸方向に引数の度数傾斜する。 | 
  
    | X |   | cos(skewY) | -sin(skewX) | 0 |   |  
    | sin(skewY) | cos(skewX) | 0 |  
    | 0 | 0 | 1 |  |  
     Matrix2Dクラスが扱う2次元平面の変換行列は、つぎのような3行×3列の正方行列で表されます。ただし、第3行目の成分は定数([0 0 1])なので、コンストラクタの引数やプロパティに与えられるのは6成分です。 
  
    |   | a | c | tx |   |  
    | b | d | ty |  
    | 0 | 0 | 1 |  行列による2次元空間の座標変換の計算はおもに乗算です。そして、Matrix2Dクラスの基本的なメソッドについて、それぞれの行列演算を示したのが上の表です。「X」は乗算記号と見ても、任意の3次正方(3行×3列)行列のXと捉えても差支えありません。 気をつけていただきたいのは、行列の乗算には交換法則が成立たないことです。つまり、同じ行列を左から掛けるか、右から掛けるかによって、変換の結果は異なります。そのため、メソッドの定める行列を先に(左から)掛けるMatrix2D.prepend()と、後に(右から)掛けるMatrix2D.append()のメソッドが別に備わっています。なお、行列の乗算のやり方については「変換行列を数学的に捉える」2.「行列の乗算」をお読みください。 Matrix2Dクラスでは、成分値をそれぞれ求めて行列変換することもできます。単純な変形にとどまらず、伸縮や傾斜を組合わせるような場合には、統一的に計算できるので扱いやすいでしょう。具体的な例については、「EaselJSのMatrix2Dクラスを使ったインスタンスの変形」をお読みください。 
 
 作成者: 野中文雄作成日: 2015年1月8日「EaselJS 0.6.1のMatrix2Dクラスの基本的なメソッドと行列演算」を、仕様の変更にともなって全面改訂。
 Copyright © 
2001-2015 Fumio Nonaka.  All rights reserved.
 |