transformations 变换集合关系 仿射变换
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 变换集合关系 仿射变换的更多相关文章
- MongoDB学习笔记~使用原生语句实现三层集合关系的更新
		
回到目录 MongoDB的文档型数据结构使得它在存储数据上很像JSON,在可读性方面很强,然而这种复杂的结构在update时相对麻烦一些,而对于官方给出的文档说的也不够细致,有些东西也是模棱两可的态度 ...
 - python 全栈开发,Day7(元组转换,列表以及字典的坑,集合,关系测试,深浅copy,编码补充)
		
一.元组转换 数字 tu = (1) tu1 = (1,) print(tu,type(tu)) print(tu1,type(tu1)) 执行输出: 1 <class 'int'>(1, ...
 - java基础笔试题二(集合关系)
		
知识点:java集合继承关系(Collection,Map) 1.集合框架体系图 2.java的集合层次 来自博客(http://blog.csdn.net/stubbornaccepted/arti ...
 - day14 Python集合关系运算交,差,并集
		
low逼写法,没用集合 python_1 = ['charon','pluto','ran'] linux_1 = ['ran','xuexue','ting'] python_and_linux = ...
 - LaTex中集合关系的表示
		
集合的大括号: \{ ... \} \(\{ ... \}\) 集合中的"|": \mid \(\mid\) 属于: \in \(\in\) 不属于: \not\in \(\not ...
 - java集合的中的集合关系实现或继承关系图
		
放在这儿一目了然.
 - Java - 集合之间的关系和区别
		
1.Java集合关系图: 2.List.Map.Set区别: ① List ArrayList LinkedList Vector Advantage Search Insert.Delete Syn ...
 - opencv中的仿射变换
		
什么是仿射变换? 原理:1.一个任意的仿射变换都能表示为 乘以一个矩阵(线性变换) 接着再 加上一个向量(平移) 2.综上所述,我们能够用仿射变换来表示: 1)旋转(线性变换) 2)平移(向量加) 3 ...
 - 2D射影几何和变换
		
阅读<计算机视觉中的多视图集合> 2D射影几何和变换 2D射影平面 本章的关键是理解线和点的对偶性.从射影平面模型出发,IP^2^内的点(a, b ,c)由IP^3^空间中一条过原点的射线 ...
 
随机推荐
- Windows Media Player 的文件格式支持情况
			
唔,官方文档:https://support.microsoft.com/zh-cn/help/316992/file-types-supported-by-windows-media-player ...
 - mercurial的几个易用性小技巧
			
其实这两年,能够采用mercurial的项目我都尽量用,甚至有些上游是git的,或者需要托管到公司内gitlab上与别人协作的,我都装上hg-git.无它,只是因为mercurial易用性比git好得 ...
 - .NET实现事务的编码方式
			
1,在T-SQL语句中用begin tran,end tran的方式 begin tran --select top(1) * from dbo.test with(updlock) update t ...
 - 使用Qt Creator进行linux远程调试
			
序言 考虑到程序员在无桌面Linux的环境下编写C/C++程序,如果使用原生的Vim编辑和单步断点调试比较麻烦,不利于新手使用,所以笔者尝试使用Qt实现两台Linux电脑远程部署和调试.即程序员在调试 ...
 - Python3运算符
			
一.算术运算符 二.比较运算符 三 .赋值运算符 四 .位运算符 按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下: 下表中变量 a 为 60,b 为 13二进制格式如下: ...
 - Python简易web服务
			
利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录的路径下,输入命令: python -m Web服务器模块 [端口号,默认8000] 例如: python -m ...
 - [hive] hive 安装、配置
			
一.hive安装 1.官网下载 1.2.2版本 http://apache.fayea.com/hive/hive-1.2.2/ 2. 解压,此处目录为 /opt/hadoop/hive-1.2.2 ...
 - python 如何在一个.py文件中调用另一个.py文件的类
			
如果是在同一个 module中(也就是同一个py 文件里),直接用就可以如果在不同的module里,例如a.py里有 class A:b.py 里有 class B:如果你要在class B里用cla ...
 - Qt编写守护程序保证程序一直运行(开源)
			
没有任何人敢保证自己写的程序没有任何BUG,尤其是在商业项目中,程序量越大,复杂度越高,出错的概率越大,尤其是现场环境千差万别,和当初本地电脑测试环境很可能不一样,有很多特殊情况没有考虑到,如果需要保 ...
 - libuv示例代码
			
https://github.com/nikhilm/uvbook/tree/master/code