http://groups.csail.mit.edu/graphics/classes/6.837/F03/lectures/04_transformations.ppt

https://groups.csail.mit.edu/graphics/classes/6.837/F03/lectures/

Maps points (x, y) in one coordinate system to points (x', y') in another coordinate system

x' = ax + by + c

y' = dx + ey + f

For example, IFS:

Can be combined

Are these operations invertible?

Yes, except scale = 0

恒等 平移 旋转 等比缩放

可逆,除非等比缩放系数为0

Classes of Transformations 变换分类

Rigid Body / Euclidean Transforms 刚体、欧式变换

Similitudes / Similarity Transforms 相似性变换

Linear 线性变换

Affine 放射

Projective 投影

保持不变量的对象
点点之间
距离
线线之间
角度
平行关系

保距变换
保角变换
平行变换

Rigid-Body / Euclidean Transforms

Preserves distances

Preserves angles

Rigid / Euclidean

Translation Identity Rotation

Similitudes / Similarity Transforms

Linear Transformations

L(p + q) = L(p) + L(q)

L(ap) = a L(p)

shear

vt. 剪;修剪;剥夺

vi. 剪;剪切;修剪

切力 切变

Affine Transformations

Projective Transformations

preserves lines

Representing Transformations 变换的表示

Combining Transformations 变换的联合

Change of Orthonormal Basis 改变正交基

How are Transforms Represented?

Homogeneous Coordinates 齐次坐标

Add an extra dimension

in 2D, we use 3 x 3 matrices

in 3D, we use 4 x 4 matrices

Each point has an extra value, w

Most of the time w = 1, and we can ignore it

If we multiply a homogeneous coordinate by an affine matrix, w is unchanged

如果通过仿射矩阵来乘齐次坐标系,则w不变

Divide by w to normalize (homogenize)

W = 0? Point at infinity (direction)

https://en.wikipedia.org/wiki/Affine_transformation

Translate (tx, ty, tz)

Why bother with the extra dimension? Because now translations can be encoded in the matrix!

Translate(c,0,0)

Scale (sx, sy, sz)

Isotropic (uniform) scaling: sx = sy = sz

扩展

旋转

关于不同坐标轴旋转

About (kx, ky, kz), a unit vector on an arbitrary axis(Rodrigues Formula)

How are transforms combined?

Scale then Translate

Use matrix multiplication:   p'  =  T ( S p )  =  TS p

Caution: matrix multiplication is NOT commutative!

矩阵相乘不可以交换

Non-commutative Composition

Scale then Translate: p' = T ( S p ) = TS p

Translate then Scale:   p'  =  S ( T p )  =  ST p

Review of Dot Product

点乘

Change of Orthonormal Basis

Given: coordinate frames

xyz and uvn

point p = (x,y,z)

Find: p = (u,v,n)

Substitute into equation for p:

Rewrite:

p = (u,v,n) = u u + v v + n n

Expressed in uvn basis:

In matrix form:

transformations 变换集合关系 仿射变换的更多相关文章

  1. MongoDB学习笔记~使用原生语句实现三层集合关系的更新

    回到目录 MongoDB的文档型数据结构使得它在存储数据上很像JSON,在可读性方面很强,然而这种复杂的结构在update时相对麻烦一些,而对于官方给出的文档说的也不够细致,有些东西也是模棱两可的态度 ...

  2. python 全栈开发,Day7(元组转换,列表以及字典的坑,集合,关系测试,深浅copy,编码补充)

    一.元组转换 数字 tu = (1) tu1 = (1,) print(tu,type(tu)) print(tu1,type(tu1)) 执行输出: 1 <class 'int'>(1, ...

  3. java基础笔试题二(集合关系)

    知识点:java集合继承关系(Collection,Map) 1.集合框架体系图 2.java的集合层次 来自博客(http://blog.csdn.net/stubbornaccepted/arti ...

  4. day14 Python集合关系运算交,差,并集

    low逼写法,没用集合 python_1 = ['charon','pluto','ran'] linux_1 = ['ran','xuexue','ting'] python_and_linux = ...

  5. LaTex中集合关系的表示

    集合的大括号: \{ ... \} \(\{ ... \}\) 集合中的"|": \mid \(\mid\) 属于: \in \(\in\) 不属于: \not\in \(\not ...

  6. java集合的中的集合关系实现或继承关系图

    放在这儿一目了然.

  7. Java - 集合之间的关系和区别

    1.Java集合关系图: 2.List.Map.Set区别: ① List ArrayList LinkedList Vector Advantage Search Insert.Delete Syn ...

  8. opencv中的仿射变换

    什么是仿射变换? 原理:1.一个任意的仿射变换都能表示为 乘以一个矩阵(线性变换) 接着再 加上一个向量(平移) 2.综上所述,我们能够用仿射变换来表示: 1)旋转(线性变换) 2)平移(向量加) 3 ...

  9. 2D射影几何和变换

    阅读<计算机视觉中的多视图集合> 2D射影几何和变换 2D射影平面 本章的关键是理解线和点的对偶性.从射影平面模型出发,IP^2^内的点(a, b ,c)由IP^3^空间中一条过原点的射线 ...

随机推荐

  1. [svc]linux下网桥-docker网桥

    网桥和交换机 2口交换机=网桥 交换机: 工作在数据链路层,根据源mac学习(控制层),目的mac转发(数据层). linux的网卡 vmware workstation中的桥接 参考: http:/ ...

  2. IIS7 配置 PHP5.6

    环境: 操作系统:Win7 & 10 (x64) 中文专业版 PHP       :V5.6 首先添加IIS. 控制面板-〉程序-〉打开或关闭Windows功能 1. 勾选"Inte ...

  3. Oracle同一个用户下启动多个数据库实例

     oracle@yingxiang-testServer1 oradata]$ export ORACLE_SID=APPDB[oracle@yingxiang-testServer1 oradata ...

  4. STM32云平台连接培训20180814

    MQTT基于TCP,发布订阅模式,一对多,多对一,TCP需要client主动建立connect,server发送connectack CoAP基于UDP,请求/应答模式,数据量也相对HTTP要小 HT ...

  5. 还原Stack操作

    下午看到一题.给定两个int[]数组,int[] org和int[] res, 分别代表一串数字,和这串数字经过stack的push 和 pop操作之后的数字,让返回一个String, String里 ...

  6. 教你一招:[转载]使用 Easy Sysprep v4 封装 Windows 7 精品

    (一) 安装与备份系统 1. 安装 Windows 7 先使用第三方分区工具(DiskGenius分区)在虚拟机中分区,然后将封装的母盘文件安装写入指定的安装盘,写入完成后重启系统开始部署. 2. 进 ...

  7. 缓存Memcached 与 Redis 相同点差异点分析

    memcach简介 Memcache时一个内存对象缓存系统,用于加速动态web应用程序,减轻数据库负载.它可以应对任意多个连接,使用非阻塞的网络I/O,工作机制:在内存中开辟一块空间,然后建立一个ha ...

  8. 第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件

    第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件 设置后台列表页面字段统计 在当前APP里的adminx.py文件里的数据表管理器里设置 ag ...

  9. extern、static、restrict、volatile 关键字

    extern extern的两个作用: 修饰变量或函数,提示编译器此变量或函数是在其它文件中定义的,但要在此处引用: 进行链接指定,如: extern "C" void fun(i ...

  10. [转]ubuntu bits/predefs.h:没有那个文件或目录

    [转]ubuntu bits/predefs.h:没有那个文件或目录 (2012-04-28 10:09:38) 转载▼ 标签: it 分类: Linux In file included from ...