拡大・回転・剪断とそれらを組み合わせた変換であるアフィン変換 を持つオブジェクトです。点(x, y)は以下のように変換されます。
x_new = xx * x + xy * y + x0 y_new = yx * x + yy * y + y0
Cairo::Matrix.identity
Cairo::Matrix.new(xx, yx, xy, yy, x0, y0)
Cairo::Matrix.rotate(radians)
Cairo::Matrix.scale(sx, sy)
Cairo::Matrix.translate(tx, ty)
xx
xx=(xx)
set_xx(xx)
yx
yx=(yx)
set_yx(yx)
xy
xy=(xy)
set_xy(xy)
yy
yy=(yy)
set_yy(yy)
x0
x0=(x0)
set_x0(x0)
y0
y0=(y0)
set_y0(y0)
clone
dup
identity!
invert
invert!
*(other)
multiply(other)
multiply!(other)
rotate(radians)
rotate!(radians)
scale(sx, sy)
scale!(sx, sy)
set(xx, yx, xy, yy, x0, y0)
to_a
[xx, yx, xy, yy, x0, y0]
to_s
transform_distance(dx, dy)
距離ベクトル(dx, dy)をselfで変換しま す。Cairo::Matrix#transform_pointと似ていますが、平行移 動成分を無視するところが違います。返るベクトルは以下の ように計算されます。
dx2 = dx * a + dy * c; dy2 = dx * b + dy * d;
アフィン変換は位置不変です。同じベクトルはいつも同じベ クトルに変換されます。もし、(x1, y1)が(x2, y2)に変換さ れるなら、どんなx1, x2に対しても(x1 + dx, y1 + dy)は(x1 + dx2, y1 + dy2)に変換されま す。
[dx2, dy2]
transform_point(x, y)
[x2, y2]
translate(tx, ty)
translate!(tx, ty)
==(other)
Since 1.7: otherがCairo::Matrixオブ
ジェクトで、xx, yx, xy, yy, x0, y0それぞれが==
だっ
た場合にtrue
を返します。
self
とother
が等しければtrue
、そうでなければfalse
。