matplotlib AffineBase, Affine2DBase, Affine2D
2020-04-10 09:02:59 --Edit by yangray
仿射变换矩阵参考资料-->https://blog.csdn.net/robert_chen1988/article/details/80498805
AffineBase 继承自Transform,是所有仿射变换(任意维度)的基类。
Affine2DBase 继承自AffineBase,是所有2维仿射变换的基类,该类仅提供只读的属性,该类的子类需要重写构造函数和get_matrix()方法,是形如[[a, c, e], [b, d, f], [0, 0, 1]]的矩阵。
Affine2D 继承自Affine2DBase,是属性可被改写的二维仿射变换。
AffineBase(Transform):
方法:
-
__init__(self, *args, **kwargs):
初始化本变换,参数同父类。
-
__array__(self, *args, **kwargs):
返回仿射矩阵。
-
_concat(a, b): 静态方法
参数 [a], [b]:仿射矩阵
返回矩阵a和b的点积。
-
transform(self, values):
参数[values]: 变换的目标,形式为n维数组
返回values执行本变换后的结果。(因为是仿射变换的基类,所以实际上只执行仿射变换)
-
transform_affine(self, values), transform_non_affine(self, points):
参数同上
返回values执行 仿射部分/非仿射部分 的结果。(实际上非仿射变换不会执行)
-
transform_path(self, path):
参数[path]: Path实例,意为路径、曲线
返回path执行本变换后的结果。
-
transform_path_affine(self, path), transform_path_non_affine(self, path):
参数同上
返回path执行 仿射部分/非仿射部分 后的结果。(非仿射部分不会被执行)
-
get_affine(self):
返回self(常用于链式调用)。
Affine2DBase(Affine2D):
方法:
- frozen(self):
返回静态的仿射矩阵的拷贝。(3*3)
-
_get_is_separable(self):
返回本变换是否为可分离的, 可分离为True。(指x方向和y方向)
-
to_values(self):
返回本变换中仿射参数的一维元组形式。(a,b,c,d,e,f)
-
matrix_from_values(a, b, c, d, e, f): 静态方法
以参数a, b, c, d, e, f初始化一个二维仿射矩阵并返回。(第三行为[0, 0, 1])
-
transform_affine(self, points):
返回点集[points]执行本变换中仿射部分的结果。
-
transform_point(self, point):
返回点(point)执行本变换中仿射部分的结果。
-
inverted(self):
返回本仿射矩阵的逆矩阵。
Affine2D(Affine2DBase):
方法:
-
__init__(self, matrix=None, **kwargs):
参数[matrix]: 3*3 numpy 数组(浮点数)
初始化本变换,若matrix=None,则将本变换初始化为一个单位矩阵(3*3)。
-
from_values(a, b, c, d, e, f): 静态方法
返回[[a,c,e], [b,d,f], [0,1,1]]形式的变换矩阵。
-
get_matrix(self):
返回本变换矩阵。
-
set_matrix(self, mtx):
参数[mtx]: 3*3 numpy浮点数矩阵
将mtx设为本变换矩阵。
-
set(self, other):
参数[other]: Affine2DBase实例
将other的变换矩阵设为本变换矩阵。
-
identity(): 静态方法
返回单位仿射矩阵。(仅对角线为1,其余为0的3*3矩阵)
-
clear(self):
以单位仿射矩阵替换掉本仿射矩阵,是为清除本变换。
返回self。
-
rotate(self, theta), rotate_deg(self, degrees):
参数[theta]: 弧度制角度
[degrees]: 角度制角度
逆时针旋转 弧度theta / 角度degrees。(左下角不动)
-
rotate_around(self, x, y, theta), rotate_deg_around(self, x, y, degrees):
参数:[x], [y]: 点的坐标参数
逆时针绕点(x, y)旋转 弧度theta / 角度degrees。
-
translate(self, tx, ty):
参数[tx], [ty]: x,y方向上的平移量
将tx,ty设为仿射矩阵中的参数e,f(平移参数)。
-
scale(self, sx, sy=None):
参数[sx],[sy]: x,y方向上的平移量
将sx,sy设为仿射矩阵中的参数a, c(伸缩参数)。
-
skew(self, xShear, yShear),skew_deg(self, xShear, yShear): skew:倾斜
参数[xShear], [yShear]: x,y方向上倾斜的角度(skew()中为弧度制, skew_deg()中为角度制)
将tan(xShear),tan(yShear)设为仿射矩阵中的参数b,d(倾斜参数)。