矩阵
类矩阵()
- class cairo.Matrix(xx: float = 1.0, yx: float = 0.0, xy: float = 0.0, yy: float = 1.0, x0: float = 0.0, y0: float = 0.0)
矩阵 在整个开罗用于在不同的坐标空间之间转换。一 矩阵 保持仿射变换,如比例、旋转、剪切或这些的组合。点(x,y)的变换由以下公式给出:
x_new = xx * x + xy * y + x0 y_new = yx * x + yy * y + y0
电流变换矩阵
Context
,表示为 矩阵 定义从用户空间坐标到设备空间坐标的转换。一些标准的python操作符可以与矩阵一起使用:
从 矩阵 ::
xx, yx, xy, yy, x0, y0 = matrix
将两个矩阵相乘:
matrix3 = matrix1.multiply(matrix2) # or equivalently matrix3 = matrix1 * matrix2
比较两个矩阵:
matrix1 == matrix2 matrix1 != matrix2
有关矩阵转换的更多信息,请参阅https://www.cairographics.org/cookbook/matrix_transform/
- __init__(xx: float = 1.0, yx: float = 0.0, xy: float = 0.0, yy: float = 1.0, x0: float = 0.0, y0: float = 0.0) None
- 参数:
xx -- 仿射变换的xx分量
yx -- 仿射变换的yx分量
xy -- 仿射变换的xy分量
yy -- 仿射变换的YY分量
x0 -- 仿射变换的X平移分量
y0 -- 仿射变换的Y平移分量
创建新的 矩阵 用仿射变换给出 XX、YX、XY、YY、X0、Y0 . 转换方式为:
x_new = xx * x + xy * y + x0 y_new = yx * x + yy * y + y0
创建新的标识矩阵:
matrix = cairo.Matrix()
要创建一个转换矩阵,分别由x和y维中的tx和ty转换:
matrix = cairo.Matrix(x0=tx, y0=ty)
要创建一个变换矩阵,分别在x和y维度中按sx和sy缩放:
matrix = cairo.Matrix(xx=sy, yy=sy)
- classmethod init_rotate(radians: float) Matrix
- 参数:
radians -- 旋转角度,以弧度表示。旋转方向的定义是,正角度从正X轴向正Y轴方向旋转。使用cairo的默认轴方向,正角度以顺时针方向旋转。
- 返回:
一个新的 矩阵 设置为旋转 弧度 .
- invert() Matrix | None
- 返回:
如果 矩阵 有反义词,修改 矩阵 做逆矩阵并返回 None
- 加薪:
cairo.Error
如果 矩阵 作为非反转
变化 矩阵 与原始值成反比。并非所有变换矩阵都有逆矩阵;如果矩阵将点折叠在一起(它是 退化 ,则没有逆函数,该函数将失败。
- multiply(matrix2: Matrix) Matrix
- 参数:
matrix2 -- 第二矩阵
- 返回:
一个新的 矩阵
将中的仿射变换相乘 矩阵 和 矩阵2 一起。结果转换的效果是首先将转换应用于 矩阵 然后将转换应用于 矩阵2 到坐标。
允许结果与 矩阵 或 矩阵2 .
- rotate(radians: float) None
- 参数:
radians -- 旋转角度,以弧度表示。旋转方向的定义是,正角度从正X轴向正Y轴方向旋转。使用cairo的默认轴方向,正角度以顺时针方向旋转。
初始化 矩阵 到一个旋转 弧度 .
- scale(sx: float, sy: float) None
- 参数:
sx -- X方向的比例因子
sy -- Y方向的比例因子
应用缩放比例 SX,SY 到年的转变 矩阵 . 新变换的效果是首先按比例缩放坐标 sx 和 sy ,然后将原始转换应用于坐标。
- transform_distance(dx: float, dy: float) Tuple[float, float]
- 参数:
dx -- 距离向量的x分量。
dy -- 距离向量的y分量。
- 返回:
变换后的距离向量(dx,dy),都是浮点
变换距离向量 (Dx,Dy) 通过 矩阵 . 这和
transform_point()
只是转换的转换组件被忽略了。返回向量的计算如下:dx2 = dx1 * a + dy1 * c dy2 = dx1 * b + dy1 * d
仿射变换是位置不变的,所以相同的向量总是变换成相同的向量。如果 (x1,y1) 变换到 (x2、y2) 然后 (x1+dx1,y1+dy1) 将转换为 (x1+dx2,y1+dy2) 对于以下所有值 x1 和 x2 .
- transform_point(x: float, y: float) Tuple[float, float]
- 参数:
x -- X位置。
y -- Y位置。
- 返回:
转换点(x,y),两个浮点
转换点 (x,y) 通过 矩阵 .