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(倾斜参数)。

matplotlib AffineBase, Affine2DBase, Affine2D的更多相关文章

  1. 数据可视化基础专题(十二):Matplotlib 基础(四)常用图表(二)气泡图、堆叠图、雷达图、饼图、

    1 气泡图 气泡图和上面的散点图非常类似,只是点的大小不一样,而且是通过参数 s 来进行控制的,多的不说,还是看个示例: 例子一: import matplotlib.pyplot as plt im ...

  2. 关于k Line Chart (k线图)

    K Line Chart python实现k线图的代码,之前找过matplotlib中文文档但是画k线图的finance方法已经弃用了.所以自己在网上搜寻一下加上改编,很好的实现出k线图, 代码如下: ...

  3. matplotlib 中其他基于Affine2DBase的类

    2020-04-11 11:42:22 --Edit by yangray以下所有类(除了BboxTransformToMaxOnly )都直接继承于Affine2DBaseIdentityTrans ...

  4. Python自学笔记——Matplotlib风羽自定义

    [前言]对于气象专业的小学生来说,风场是预报重要的参考数据,我们所知的风羽有四种:短线代表风速2m/s,长线代表风速4m/s,空心三角代表风速20m/s,实心三角代表风速50m/s.而matplotl ...

  5. Matplotlib风羽自定义

    [前言]对于气象专业的小学生来说,风场是预报重要的参考数据,我们所知的风羽有四种:短线代表风速2m/s,长线代表风速4m/s,空心三角代表风速20m/s,实心三角代表风速50m/s.而matplotl ...

  6. matplotlib BlendedGenericTransform(混合变换)和CompositeGenericTransform(复合变换)

    2020-04-10 23:31:13 -- Edit by yangrayBlendedGenericTransform是Transform的子类,支持在x / y方向上使用不同的变换.(博主翻译为 ...

  7. matplotlib Transform

    2020-04-09 15:09:02 -- Edit by yangray Transform 类是TransformNode的子类,它是所有执行变换的TransformNode的实例的基类.所有非 ...

  8. python安装numpy、scipy和matplotlib等whl包的方法

    最近装了python和PyCharm开发环境,但是在安装numpy和matplotlib等包时出现了问题,现总结一下在windows平台下的安装方法. 由于现在找不到了工具包新版本的exe文件,所以采 ...

  9. matplotlib 高级用法实例--共享x轴

    http://localhost:8888/notebooks/duanqs/matplotlib_advanced_example.ipynb 我不会弄呀, 刚才从matplotlib文档里吧示例用 ...

随机推荐

  1. [C++]那些年被虐的STL

    首先很感谢**P1135奇怪的电梯 **[2.14补充:此题已被AC!然后将被我花式虐[From语]哈哈哈哈哈哈哈哈哈哈好嗨哟感觉人生已经到达了巅峰感觉人生已经到达了高潮]这道题了!在做这道题的我大致 ...

  2. CentOS7系统服务管理systemctl

    目录 一.systemctl介绍 二.systemctl常用命令 1.启动服务 2.停止服务 3.重启服务 4.查看服务是否已启动 5.查看服务的状态 6.启用开机自启动服务 7.停用开机自启动服务 ...

  3. 第十八周java实验作业

    实验十八  总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...

  4. 多线程之旅(Thread)

    在上篇文章中我们已经知道了多线程是什么了,那么它到底可以干嘛呢?这里特别声明一个前面的委托没看的同学可以到上上上篇博文查看,因为多线程要经常使用到委托.源码 一.异步.同步 1.同步(在计算的理解总是 ...

  5. RNN,GRU,LSTM

    2019-08-29 17:17:15 问题描述:比较RNN,GRU,LSTM. 问题求解: 循环神经网络 RNN 传统的RNN是维护了一个隐变量 ht 用来保存序列信息,ht 基于 xt 和 ht- ...

  6. 使用PostgreSQL注意事项

    一.大小写特别敏感 大写字段需要用“”引号(pg字段名使用“”,MySQL字段名使用``) ******表名以及字段名如果是小写但是为关键字,比如name,则也需使用"": 二.分 ...

  7. 不同label样本画图——颜色分配plt.cm.Spectral

    不同label样本画图——颜色分配plt.cm.Spectralhttps://blog.csdn.net/wang_zuel/article/details/102940092 关于plt.cm.S ...

  8. Kaggle大牛小姐姐自述:我是怎么成为竞赛中Top 0.3%的 | 干货攻略

    天天跟数据打交道的研究人员,都有一个成为Kaggle顶级大师(Grandmaster)的梦想. 但每年的Kaggle参赛团队众多,通常一个项目都有数千人至上万人报名,如何在其中脱颖而出? 最近,自动化 ...

  9. Rust入坑指南:居安思危

    任何事情都是相对的,就像Rust给我们的印象一直是安全.快速,但实际上,完全的安全是不可能实现的.因此,Rust中也是会有不安全的代码的. 严格来讲,Rust语言可以分为Safe Rust和Unsaf ...

  10. ICPC训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019

    I题 求 a 数组平方的前缀和和求 a 数组后缀和,遍历一遍即可 AC代码 #include<iostream>#include<cmath>using namespace s ...