Layer.affineCopy

機能/意味
アフィン変換コピー
タイプ
Layerクラスのメソッド
構文
affineCopy(src, sleft, stop, swidth, sheight, affine, A, B, C, D, E, F, mode=stNearest)
引数
src  コピー元のレイヤオブジェクトを指定します。
sleft  コピーする矩形の左端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
stop  コピーする矩形の上端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
swidth  コピーする矩形の横幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
sheight  コピーする矩形の縦幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。
affine  続く6つの引数 (A 〜 F パラメータ)をどのように扱うかを指定します。
 真を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。
A : 2Dアフィン変換行列の a
B : 2Dアフィン変換行列の b
C : 2Dアフィン変換行列の c
D : 2Dアフィン変換行列の d
E : 2Dアフィン変換行列の tx
F : 2Dアフィン変換行列の ty

 アフィン変換により、コピー元の画像位置 (x, y) ( ただし、コピー元矩形の左上隅を (0, 0) とする ) は以下の式により、コピー先の画像位置 (x', y')に変換されます。
x' = a*x + c*y + tx
y' = b*x + d*y + ty

 偽を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。
A : コピー元矩形の左上隅の点の、コピー先での画像位置における X 座標位置(x0)
B : コピー元矩形の左上隅の点の、コピー先での画像位置における Y 座標位置(y0)
C : コピー元矩形の右上隅の点の、コピー先での画像位置における X 座標位置(x1)
D : コピー元矩形の右上隅の点の、コピー先での画像位置における Y 座標位置(y1)
E : コピー元矩形の左下隅の点の、コピー先での画像位置における X 座標位置(x2)
F : コピー元矩形の左下隅の点の、コピー先での画像位置における Y 座標位置(y2)

 偽を指定した場合、コピー元の右下隅に対応する、コピー先位置(x3, y3)は自動的に以下の式によって計算されます。
x3 = x1 - x0 + x2
y3 = y1 - y0 + y2
A  A パラメータです。affine 引数によって解釈が変わります。
B  B パラメータです。affine 引数によって解釈が変わります。
C  C パラメータです。affine 引数によって解釈が変わります。
D  D パラメータです。affine 引数によって解釈が変わります。
E  E パラメータです。affine 引数によって解釈が変わります。
F  F パラメータです。affine 引数によって解釈が変わります。
mode  アフィン変換のモードを指定します。
stNearest : 最近傍点法が用いられます
stFastLinear : 低精度の線形補間が用いられます(未実装)
stLinear : 線形補間が用いられます(未実装)
stCubic : 3次元補間が用いられます(未実装)
戻り値
なし (void)
説明
 指定されたコピー元レイヤの矩形を、コピー先 ( メソッドを実行するレイヤ ) に アフィン変換を行いながらコピーします。
 affine 引数によって、変形パラメータとして二次元アフィン変換行列を指定するか、 あるいは変換後の点を直接指定するかを選ぶことができます。
 現バージョンでは mode には stNearest のみ指定できます。
 重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティが dfBoth 以外の場合は例外が発生します。

 二次元アフィン変換行列による変換は、コピー元矩形の左上を原点 (0, 0) とし、 以下のように定義されます。

 二次元アフィン変換を行うことにより、拡大縮小、回転、せん断(傾け)、平行移動、反転、あるいはこれらの組み合わせすべての変形を行うことができます。
 二次元アフィン変換を行うメソッドでは、二次元アフィン行列ではなく、変換後の各頂点を直接指定することでも変形を指定できますが、この場合でも二次元アフィン変換で定義できないような変形は行うことはできません。