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. Lua Linux环境下安装

    首先下载Lua包 解压缩 进入执行make linux 如果碰到lua.c:67:31: fatal error: readline/readline.h: No such file or direc ...

  2. mac mini纯键盘操作连接蓝牙鼠标

    许久不开家里的MAC MINI了,今天开来玩玩,结果进个桌面连接鼠标就费了好大的劲 现实情况: 1. 没有有线鼠标,只有一个USB键盘,一个微软3600蓝牙鼠标 MAC MINI连接上USB键盘,开机 ...

  3. git 命令常用总结

    详细git教程可参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 基础命令 用 ...

  4. linux每日命令(24):Linux 目录结构

    一. 简介 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只 ...

  5. [DIOCP视频]-DIOCPFileServer视频

    本次视频简单讲解了DiocpFileServer + 客户端使用接口方式,通信方面可以方便的在DiocpBlockTcpClient和IdTcpClient组件之间切换. + 添加单独的EXE客户端( ...

  6. C语言学习之路

    c语言学习 初识c语言 c语言数据类型.运算符和表达式(整数浮点数) 字符型数据/字符串 算术运算符和算术表达式(优先级,结合性等) 顺序程序设计(运算符之类内容,字符输入输出等) C/C++ 查看数 ...

  7. 让ubuntu下的eclipse支持GBK编码

    把Windows下工程导入Linux下Eclipse中,由于以前的工程代码,都是GBK编码,而Ubuntu默认不支持GBK编码,所以,我们要让Ubuntu支持GBK,方法如下: 1.修改/var/li ...

  8. 【Window 7】解决Win7远程桌面无法全屏的方法

    在Windows中有一项远程桌面功能,可以登录到其他电脑上进行远程控制,就像操纵本机一样,非常方便.但是最近发现用远程桌面登录过去时并不是全屏模式,而是窗口模式,老要拉滚动条,实在很不方便,今天还是到 ...

  9. duilib进阶教程 -- 在MFC中使用duilib (1)

    由于入门教程的反响还不错,因此Alberl就以直播的形式来写<进阶教程>啦,本教程的前提: 1.请先阅读<仿迅雷播放器教程> 2.要有一定的duilib基础,如果还没,请先阅读 ...

  10. 【GIS】Vue esri-leaflet

    1.npm install esri-leaflet --save 2.引入包 import Leaflet from "leaflet"; var esri = require( ...