142 lines
11 KiB
HTML
142 lines
11 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
|
|
<!-- generated by to_html.pl from f_Layer.xml -->
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
<title>affineCopy - アフィン変換コピー</title>
|
|
<meta name="author" content="W.Dee" />
|
|
<meta http-equiv="Content-Style-Type" content="text/css" />
|
|
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
|
<link href="funcref.css" type="text/css" rel="stylesheet" title="クラスリファレンス用標準スタイル" />
|
|
<link href="mailto:[email protected]" rev="Made" />
|
|
<link href="index.html" target="_top" rel="Start" title="トップページ" />
|
|
<link href="f_Layer.html" title="Layerクラス" rel="Parent" />
|
|
</head>
|
|
<body>
|
|
<h1><span class="fheader"><a name="top" id="top">Layer.affineCopy</a></span></h1><div class="para"><div>
|
|
<dl>
|
|
<dt>機能/意味</dt>
|
|
<dd>
|
|
アフィン変換コピー</dd>
|
|
<dt>タイプ</dt>
|
|
<dd>
|
|
<a class="jump" href="f_Layer.html">Layerクラス</a>のメソッド<br />
|
|
</dd>
|
|
<dt>構文</dt>
|
|
<dd>
|
|
<span class="funcdecl">affineCopy(<span class="arg">src</span>, <span class="arg">sleft</span>, <span class="arg">stop</span>, <span class="arg">swidth</span>, <span class="arg">sheight</span>, <span class="arg">affine</span>, <span class="arg">A</span>, <span class="arg">B</span>, <span class="arg">C</span>, <span class="arg">D</span>, <span class="arg">E</span>, <span class="arg">F</span>, <span class="arg">type</span><span class="defarg">=<span class="defargval">stNearest</span></span>, <span class="arg">clear</span><span class="defarg">=<span class="defargval">false</span></span>)</span><br />
|
|
</dd>
|
|
<dt>引数</dt>
|
|
<dd>
|
|
<table rules="all" frame="box" cellpadding="3" summary="affineCopy の引数">
|
|
<tr><td valign="top"><span class="argname">src</span></td>
|
|
<td> コピー元のレイヤオブジェクトを指定します。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">sleft</span></td>
|
|
<td> コピーする矩形の左端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">stop</span></td>
|
|
<td> コピーする矩形の上端位置を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">swidth</span></td>
|
|
<td> コピーする矩形の横幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">sheight</span></td>
|
|
<td> コピーする矩形の縦幅を ( コピー元レイヤの画像位置における ) ピクセル単位で指定します。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">affine</span></td>
|
|
<td> 続く6つの引数 (A ~ F パラメータ)をどのように扱うかを指定します。<br />
|
|
真を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。<br />
|
|
<span class="script">A : 2Dアフィン変換行列の a</span><br />
|
|
<span class="script">B : 2Dアフィン変換行列の b</span><br />
|
|
<span class="script">C : 2Dアフィン変換行列の c</span><br />
|
|
<span class="script">D : 2Dアフィン変換行列の d</span><br />
|
|
<span class="script">E : 2Dアフィン変換行列の tx</span><br />
|
|
<span class="script">F : 2Dアフィン変換行列の ty</span><br />
|
|
<br />
|
|
アフィン変換により、コピー元の画像位置 (x, y) ( ただし、コピー元矩形の左上隅を (0, 0) とする ) は以下の式により、コピー先の画像位置 (x', y')に変換されます。<br />
|
|
x' = a*x + c*y + tx<br />
|
|
y' = b*x + d*y + ty<br />
|
|
<br />
|
|
偽を指定すると、6つのパラメータはそれぞれ以下のように解釈されます。これらのパラメータは実数での指定も受け付けます。<br />
|
|
<span class="script">A : コピー元矩形の左上隅の点の、コピー先での画像位置における X 座標位置(x0)</span><br />
|
|
<span class="script">B : コピー元矩形の左上隅の点の、コピー先での画像位置における Y 座標位置(y0)</span><br />
|
|
<span class="script">C : コピー元矩形の右上隅の点の、コピー先での画像位置における X 座標位置(x1)</span><br />
|
|
<span class="script">D : コピー元矩形の右上隅の点の、コピー先での画像位置における Y 座標位置(y1)</span><br />
|
|
<span class="script">E : コピー元矩形の左下隅の点の、コピー先での画像位置における X 座標位置(x2)</span><br />
|
|
<span class="script">F : コピー元矩形の左下隅の点の、コピー先での画像位置における Y 座標位置(y2)</span><br />
|
|
<br />
|
|
偽を指定した場合、コピー元の右下隅に対応する、コピー先位置(x3, y3)は自動的に以下の式によって計算されます。<br />
|
|
x3 = x1 - x0 + x2<br />
|
|
y3 = y1 - y0 + y2<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">A</span></td>
|
|
<td> A パラメータです。affine 引数によって解釈が変わります。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">B</span></td>
|
|
<td> B パラメータです。affine 引数によって解釈が変わります。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">C</span></td>
|
|
<td> C パラメータです。affine 引数によって解釈が変わります。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">D</span></td>
|
|
<td> D パラメータです。affine 引数によって解釈が変わります。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">E</span></td>
|
|
<td> E パラメータです。affine 引数によって解釈が変わります。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">F</span></td>
|
|
<td> F パラメータです。affine 引数によって解釈が変わります。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">type</span></td>
|
|
<td> アフィン変換のタイプを指定します。<br />
|
|
<span class="script"><a class="targanchor" name="id180" id="id180">stNearest</a> </span> : 最近傍点法が用いられます<br />
|
|
<span class="script"><a class="targanchor" name="id181" id="id181">stFastLinear</a> </span> : 低精度の線形補間が用いられます(一部実装)<br />
|
|
<span class="script"><a class="targanchor" name="id182" id="id182">stLinear</a> </span> : 線形補間が用いられます(未実装)<br />
|
|
<span class="script"><a class="targanchor" name="id183" id="id183">stCubic</a> </span> : 3次元補間が用いられます(未実装)<br />
|
|
stFastLinear や stLinear, stCubic に対しては、stRefNoClip をビット論理和で追加指定
|
|
することができ、この場合は、コピーするビットマップの領域外を参照して色を合成することを
|
|
許可します。これを指定しない場合は、転送元ビットマップの周囲に余裕があったとしても、
|
|
転送元ビットマップの範囲外を参照することはありません(範囲外の色はもっとも近い位置にある
|
|
範囲内のピクセルの色と見なされます)。<br />
|
|
</td></tr>
|
|
<tr><td valign="top"><span class="argname">clear</span></td>
|
|
<td> 転送先レイヤの、アフィン変換された画像の周囲を<a class="jump" href="f_Layer_neutralColor.html">Layer.neutralColor</a> プロパティで示された色・透明度でクリアするかどうかを指定します。真を指定するとクリアされ、この引数を省略するか偽を渡すとクリアされません。<br />
|
|
クリアされる領域は <a class="jump" href="f_Layer_setClip.html">Layer.setClip</a> メソッドで制限することもできます。<br />
|
|
このクリアの機能を使うと、いったん転送先レイヤをクリアしてからアフィン変換で画像を上書き転送する際の、上書きされる領域(クリアされた場所にアフィン変換で上書きされる部分)のクリアの無駄を省くことができます。<br />
|
|
</td></tr>
|
|
</table>
|
|
</dd>
|
|
<dt>戻り値</dt>
|
|
<dd>
|
|
なし (void)<br />
|
|
</dd>
|
|
<dt>説明</dt>
|
|
<dd>
|
|
指定されたコピー元レイヤの矩形を、コピー先 ( メソッドを実行するレイヤ ) に
|
|
アフィン変換を行いながらコピーします。<br />
|
|
affine 引数によって、変形パラメータとして二次元アフィン変換行列を指定するか、
|
|
あるいは変換後の点を直接指定するかを選ぶことができます。<br />
|
|
現バージョンでは stFastLinear の指定で線形補間が効くのは、重ね合わせ先の ( メソッドを実行する ) レイヤの <a class="jump" href="f_Layer_face.html">Layer.face</a> プロパティが dfAlpha (または dfBoth) または dfAddAlpha の場合です。また、Layer.face プロパティが dfOpaque で、<a class="jump" href="f_Layer_holdAlpha.html">Layer.holdAlpha</a> プロパティが偽の時も線形補間が可能です。<br />
|
|
重ね合わせ先の ( メソッドを実行する ) レイヤの <a class="jump" href="f_Layer_face.html">Layer.face</a> プロパティが
|
|
dfAlpha (または dfBoth) または dfAddAlpha の場合は、メイン画像とマスク画像の両方がコピーされます。<br />
|
|
重ね合わせ先の ( メソッドを実行する ) レイヤの Layer.face プロパティが
|
|
dfOpaque (または dfMain) の場合は、<a class="jump" href="f_Layer_holdAlpha.html">Layer.holdAlpha</a> プロパティが真の時はメイン画像のみがコピーされ、偽の時はメイン画像とマスク画像の両方がコピーされます。<br />
|
|
<br />
|
|
二次元アフィン変換行列による変換は、コピー元矩形の左上を原点 (0, 0) とし、
|
|
以下のように定義されます。<br />
|
|
<img width="222" height="77" src="2DAffineMatrix.png" /><br />
|
|
二次元アフィン変換を行うことにより、拡大縮小、回転、せん断(傾け)、平行移動、反転、あるいはこれらの組み合わせすべての変形を行うことができます。<br />
|
|
二次元アフィン変換を行うメソッドでは、二次元アフィン行列ではなく、変換後の各頂点を直接指定することでも変形を指定できますが、この場合でも二次元アフィン変換で定義できないような変形は行うことはできません。<br />
|
|
<br />
|
|
アフィン変換においては、ピクセルは 1.0 × 1.0 のサイズを持っていると見なされます。つまり、(0, 0) の位置にあるピクセルは (-0.5, -0.5) - (0.5, 0.5) の範囲にあると見なされます。<br />
|
|
</dd>
|
|
</dl>
|
|
</div></div>
|
|
<script type="text/javascript" charset="UTF-8" src="documentid.js" ></script>
|
|
<script type="text/javascript" charset="UTF-8" src="postcontent.js" ></script>
|
|
</body>
|
|
</html>
|