计算机图形学二:变换

一.仿射变换

变换

1.模型变换
2.视图变换

缩放

写成矩阵

理解变换表达成矩阵:
1.左边一张图,图上任一点都可以表达成[x,y]的两行一列矩阵
2.左边的图经过变换得到右边的图,图中任一点都是经过了同样的变换过程,也就是x'和x,y'和y有一个确定的关系
3.这个关系就可以表达成一个矩阵,叫做变换矩阵,这个矩阵乘上原始的点[x,y]就能得到变换后的[x',y']
上面两张图是缩放变换:可以写成一个点矩阵乘上一个变换矩阵,这个[s00s]也叫做缩放矩阵

不均匀的缩放

仍然可以写成矩阵相乘,只不过s有两个值

翻转的矩阵表达

翻转矩阵

剪切变换

剪切变换:y没变,x增加了y*a,可以表达成矩阵
切变矩阵

旋转变换

旋转矩阵

旋转矩阵推导

1.根据上面的几种变换,变换后的矩阵的能与变换矩阵乘上原来的矩阵,也就是要推导中间的矩阵,求ABCD
2.找一个特殊的点(1.0),再根据图中,旋转之后,(1,0)变成了(1cosα,1sinα),也就是(cosα,,sinα),于是就有了最下面的矩阵等式
3.然后根据矩阵乘法得到右边的等式,得到A是cosα,C是sinα
4.同理根据(0,1)得到B和D是-sinα和cosα.

变换的通用表达式

这种变换叫做线性变换

平移变换

增加一项

1.平移变换无法写成上面线性变换的形式
2.因此通过再增加一项[tx,ty],就可以表达平移

二.齐次坐标

齐次坐标

1.引入了一个新的值,当表示二维点时,增加一个1,当表示二维向量时,增加一个0.
2.增加了一个1之后,变换矩阵表达如上面所示,可以表达出平移的变化了
3.之所以表达向量用0,是因为这样的话,变换之后的矩阵不会变,这对应了向量平移方向不变的特性

齐次坐标的作用

1.向量+向量=向量,(x1,y,1,0)+(x2,y2,0)
2.点-点 = 向量,坐标中从一个点指向另一个点的向量(x1,y,1,1)-(x2,y2,1)
3.点+向量(x1,y,1,1)-(x2,y2,0),点沿着向量移动
4.点加点得到两点之间的中点,上图最下面的表达式,把表达点的1换成w,(x,y,1)换成(x/w,y/w,1),这样的话(1,1,1,)+(3,3,1)=(2,2,1)

仿射变换

缩放,旋转和平移

1.综合线性变换和平移变换,可以叫做仿射变换
2.放射变换引入齐次坐标就可以把各种情况都写成两个矩阵的乘

变换的顺序是非常重要的

1.图中上下都是变换2次.但是顺序不同,结果也不同,变换用矩阵表达就是乘上一个矩阵,不同的结果正好符合了矩阵乘法不遵循交换律这一点

变换的过程

结合

1.变换时,矩阵的应用是从右到左的,图中,最左边是原来的点,等式左边表示的是两次变换的结果,但是其实步骤是先右后左,是先旋转,再平移,等式右边先从右边开始算
2.不过矩阵乘法遵守结合律,因此是可以先把左边所有的操作全部先算好,得到一个矩阵,无论变换的过程多复杂.这个矩阵都能表达,最后拿原来的点去乘上这个矩阵,也可以得到最终结果

平移的分解

1.图中的问题是以点(c,c)为原点旋转,直接旋转行不通的
2.这里先平移变换,x和y都减去c,然后旋转,最后再平移回去,这样就可以全部对应几种仿射变换

3D的仿射变换表达

三维的情况是4x4的矩阵:
1.同样最右边的tx,ty,tz表示平移,左边的a到i表示线性变换
2.齐次坐标表达式是先应用线性变换,再平移

旋转的逆

描述了旋转θ和-θ的旋转矩阵:
1.旋转矩阵的逆等于旋转矩阵的转置

三.三维变换

三维变换

1.统称viewing transformation
2.分为视图和投影两种
3.投影有两种不同的投影,正交和透视

三维的缩放和平移

三维的缩放和平移与二维完全一致,只是多一个行列

三维的旋转

三维的旋转比较复杂,这里是三种特殊情况:
1.分别是绕三个轴旋转,
2.围绕x轴旋转时,x是不变的,因此第一行和第一列都是(1,0,0);后面的(cosα,sinα,cosα,-sinα)对应了y和z轴上的变化
3.绕z轴旋转与绕x轴旋转类似
4.但是绕y轴旋转的矩阵中,左下角是-sinα,右上角是+sinα,与x和z矩阵相反,这是因为向量X 叉乘 向量Z只能得到反向的Y,必须是向量Z 叉乘 向量X才能得到向量Y,这里回忆一下向量叉乘

三维旋转的一般情况

1.roll,调头旋转
2.yaw,倾斜旋转
3.pitch,仰角旋转
4.二维的旋转,是绕某一点为圆心的旋转,在三维中,则是绕一条线为轴进行旋转,计算时,二维以坐标轴原点为圆心,三维下则轴过原点,如果不过原点.就做分解,先平移再旋转,最后再平移回去

MVP变换

模型视图投影变换,MVP变换:
1.场景模型
2.角度视图
3.获得投影

相机在原点

如何理解:
1.当要把三维的场景变成一张二维的图片的时候,可以理解为相机拍照,相机与三维场景之间存在于坐标系中,为了方便研究,将整个系统连带相机与三维场景整个进行变换,变换的结果是相机处在原点,相机与三维场景是相对静止的,当相机变了,三维场景自然也就变了,并且整个系统都满足一个变换矩阵,得到相机那个点的变换,就可以应用到整个系统中.
2.把相机定义在原点,向上是Y,往-Z的方向拍摄(这里X叉乘Y是Z,-Z没有问题)

平移和旋转相机

1.让相机处在原点.并且相机的三个轴(这三个轴确定了相机的拍摄角度,也就是mvp中的v)旋转到与X,Y,Z轴重合,于是整个系统被平移和旋转.

相机的变换矩阵

1.先做平移(右边的矩阵)再做线性变换
2.如写相机的旋转:这里采用的是逆变换(左下角矩阵),也就是把原点变换到相机所在位置的变换矩阵,然后根据旋转矩阵的转置就等于其逆变换的原理,就得到了相机的变换矩阵(右下角矩阵)

两种投影

1.正交投影和透视投影
2.透视投影有透视效果,力立方体的边会交于一点,正交投影没有透视效果,立方体的边是完全平行的
3.投影的延伸汇集于一点形成锥形,称为视椎

正交投影

正交投影:
1.定义一个矩阵
2.平移到原点,因为是移到(0,0,0)所以平移矩阵的第三列是负的
3.缩放到[-1,1],-1到1长度是2,所以缩放倍率是2/边长

推导透视投影

一个前提

1.前面说到,表示一个点可以写成(x,y,z,1),在统一模型时,写成(x/w,y/w,z/w,w),事实上写成(xz,yz,z*z,z)也没有问题,表示的是同一个点,也就是说图中的(1,0,0,1)和(2,0,0,2)两个都是指点(1,0,0)

分解透视投影

1.将左图中的远平面缩放成和近平面一样,然后做一次正交投影,合起来就是透视投影了
2.这其中:左边是相机,近平面的四个点不会变化,因此远平面到相机的距离,也就是的z值不会变,远平面的中心点不会变化
3.注意这不是变换某个点,也不是变换某个面,是这个立体都在变换,变换之后就成一个长方体了,也就是说这个立体上的任何一点都满足变换公式,现在就要推导出这个公式

第一步

1.左边是相机原点,Y是上,朝-Z方向看,把图像的中心轴放在z轴上,这样呈现出一个图像最终汇集在原点上的效果
2.不难得出一个相似三角形关系,得到y'=(n/z)y,z不变,x同样也满足x'=(n/z)x

第二步

1.通过第一步的分析,得到挤压后的点((n/z)x,(n/z)y,unknown,1),再根据前面点的表示那张图,进行变换,得到(nx,ny,unknown,z)

第三步

1.现在我们知道了一个4x4的矩阵,描述了一种变换,乘上点(x,y,z,1)之后,得到变换后的点(nx,ny,unknown,z),根据这个我们可以推出这个4x4矩阵大致如上图的最下面所示

第四步

1.现在我们知道了如何统一的描述这种变换,也就是左上角,一个4x4矩阵乘上原来的点,得到一个变换后的点
2.那么,我们在这个透视投影的立体上取一个特殊点 ---- 近平面上的一个点,对于这个点,它变换之后仍然是自己,因为前面说到近平面的点不会变
3.根据前面的图得到近平面的z值就是n,于是我们把这个近平面的点换一种写法,换成(nx,ny,nn,n),都乘上n,表示的仍然是这个点
4.然后再去套用第三步得到的公式,我们就得到第三行与原来的点(x,y,n,1)的乘积是n
n,那么这个4x4矩阵的第三行必然是(0,0,A,B),前两项必然是0

第五步

1.再取一个特殊点,即远平面的中心点,它就在z轴上,假设z值是f,因此得到这个点是(0,0,f),这个点的这个点变换之后也不会发生变化,再根据第四步,得到同样的等式

第六步

1.根据第四步和第五步得到两个等式,An+B = nn,Af+B = ff,最终得到结果A=n+f,B=-nf
2.到此为止透视投影转化为长方体结束了,得到了挤压的变换矩阵,最后想要做完透视投影,还要再进行一步正交投影,所以还要再乘上正交投影的变换矩阵

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354