Qtの基礎 - 2次元変換行列

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

Qtにおいて、QTransformationクラスを使用して、変換行列の作成および作成した変換行列を図形に適用することができる。


2次元変換行列

以下のように、変換行列を作成する。

回転

正の回転方向は、反時計回りである。
第2引数は回転軸で、省略した場合はZ軸になる。

 QTransform transR;
 transR.rotate("回転角(度)");
 transR.rotateRadians("回転角(ラジアン)");


移動

 QTransform transT;
 transT.translate("X移動量", "Y移動量");


拡大・縮小

 QTransform transS;
 transS.scale("X拡大量", "Y拡大量");


作成した行列を図形に適用するには、以下のようにする。

 QTransform transR;
 
 // 点に適用
 QPointF pntDst = transR.map(pntSrc);


行列が回転、平行移動、投影変換を表す場合は、mapRectメソッドを使用して変換先図形の外接矩形を求めることができる。

 QTransform transR;
 
 // 変換先図形の外接矩形を求める
 QRectF rcDst = transR.mapRect(rcSrc);


行列要素を直接参照する場合は、m11メソッドやm12メソッド等の関数を使用する。
(メソッド名は、1から始まるので注意すること)