DirectXのDirect2Dでは、
アフィン変換(線形変換)がサポートされている。
座標(X,Y)に対して、変換行列を乗算して、アフィン変換を行う。
P・M=P'
現在の座標Pに変換行列Mを乗算して、線形変換後の座標P'を作成する。
①オブジェクトの変換前の各座標:1行×3列
P[X Y 1]
②変換行列:3行×2列
┌M11(初期値:1) M12(初期値:0)┐
M│M21(初期値:0) M32(初期値:1)│
└M31(初期値:0) M33(初期値:0)┘
③オブジェクトの変換後の各座標:1行×2列
P'[X' Y']
X'=X×M11+Y×M21+1×M31(初期値:X×1+Y×0+1×0 =X)
Y'=X×M12+Y×M22+1×M32(初期値:X×0+Y×1+1×0 =Y)
指定した角度と中心点を持つ回転 変換
Matrix3x2F Rotation(
FLOAT angle,
D2D1_POINT_2F centerPoint
);
angle:回転角度(度単位,正の角度の場合は時計回り,負の角度の場合は反時計回り)
centerPoint:回転の中心点
x:中心点のX座標
y:中心点のY座標
指定したX軸方向およびY軸方向の拡大/縮小率と中心点を持つ拡大/縮小 変換
Matrix3x2F Scale(
D2D1_SIZE_F size,
FLOAT width,
FLOAT height
D2D1_POINT_2F centerPoint
FLOAT x,
FLOAT y
);
size:
width:サイズの水平成分(幅)
height:サイズの垂直成分(高さ)
centerPoint:拡大/縮小の中心点
x:中心点のX座標
y:中心点のY座標
指定したX軸値・Y軸値および中心点を持つ傾斜 変換
Matrix3x2F Skew(
FLOAT angleX,
FLOAT angleY,
D2D1_POINT_2F centerPoint
FLOAT x,
FLOAT y
);
angleX:X軸の傾斜角度(Y軸からの反時計回りの度単位)
angleY:Y軸の傾斜角度(X軸からの反時計回りの度単位)
centerPoint:傾斜の中心点
x:中心点のX座標
y:中心点のY座標
指定したX軸方向およびY軸方向の変位を持つ移動 変換
Matrix3x2F Translation(
D2D1_SIZE_F size
FLOAT x,
FLOAT y
);
size
x:X軸方向の変位
y:Y軸方向の変位
最終更新:2012年07月07日 15:36