课程地址:https://www.icourse163.org/learn/HUST-1003636001?tid=1206895203#/learn/content

坐标变换

多维空间引入齐次坐标的原因:在高维度可以通过与变换矩阵相乘进行坐标变换,统一坐标变换的形式。简单来说,引入了齐次坐标后,就不用像高中数学那样各种情况都要具体分析列方程,带入、消元啥的,引入了其次坐标后,所有变换都可以用一个矩阵搞定。

齐次坐标其实就是在坐标后加一维,比如二维下A(1,1)这个点齐次坐标就可以是A(1,1,n)为了规范,加的那一维要弄成1。所以下面所有齐次坐标最后一维都是1。

多点变换,多次变换:

三维空间变换,与二维类似
也是乘以一个方正。分四个区域。T1进行比例、旋转、堆对称、错切变换。T2进行平移变换、T3进行投影变换、T4进行整体比例变换
在这里插入图片描述

平移变换

看T2部分。从左到右三个量分别代表x,y,z方向上的平移量。
在这里插入图片描述

比例变换

对于比例变换,在T1部分进行,对角线上的值代表x,y,z方向上的缩放比例。

在这里插入图片描述

整体比例变换

S与变换比例是反比,因为要将高一维坐标归一。
在这里插入图片描述

旋转变换

首先看这个坐标轴是左手系还是右手系,然后根据左手/右手定则确定旋转的正方向。
在这里插入图片描述
为啥要这样定义正方向?这里跟二维坐标旋转的正方向联系
在这里插入图片描述
如果用右手定则,补充z轴,可以看到跟三维坐标系下的旋转正方向是吻合的。

先从简单的看,绕z轴旋转,其实就跟二维旋转一样。正对角线上是cos,反对角线上是一正一负俩个sin
在这里插入图片描述
绕x轴
其实就是在y和z上面变换,x不动,矩阵上面看就是系数不变,位置变。
在这里插入图片描述
绕y轴 同理
在这里插入图片描述

对称变换

想一遍矩阵相乘,就是把某个坐标方向反过来
在这里插入图片描述

错切变换

即在各个坐标方向上加一个与其他坐标相关的数。
x=x+yd+zg
y=xb+y+zh
z=xc+yf+z
在这里插入图片描述

逆变换

就是还原,原理一样。
比例逆变换
跟比例变换一样,乘以一个倒数就行了。

旋转逆变换
角度变成负的
在这里插入图片描述

复合变换

以上都是基本变换,只能绕坐标轴。复合变换可以实现更一般的变换。
在这里插入图片描述

以任意点为参考对象成比例变换

先平移到原点,以原点为参考点进行比例变换,再平移回去。
在这里插入图片描述

绕任意轴旋转

在这里插入图片描述

基本思路是先将A移动到原点,然后将AB绕道坐标轴,然后进行旋转,之后再执行逆操作

(1)A点以到原点,B不动。TA用于平移A点。
在这里插入图片描述

(2)旋转AB到坐标轴
这一步又分两步走。首先绕x轴旋转(正向),移到xoz平面。然后绕y轴旋转(负向),就移到z轴上了。正负方向用右手定则判断。
在这里插入图片描述
这里过B向yoz平面作垂线,得到投影B‘,根据B的坐标得到了α角的正余弦值。
在这里插入图片描述

移到xoz平面后,再绕y轴旋转β角。这里有点奇怪为啥abc可以跟上一步的公用。
在这里插入图片描述
旋转完AB就直接转化成绕z轴旋转了,之后再对之前AB的操作作逆变换。用到公式 ( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)1=B1A1

在这里插入图片描述

观察变换

光有实体空间不行,得要有人观察吧。既然观察就要有一个观察者自己的坐标了。

观察坐标系的确定

这里定义一个观察者坐标。 p p p是要观察的试点, p 0 p_0 p0是观察者的位置,如何确定这个观察坐标系?

  • 首先z轴方向直接就是p到p0方向一连。’
  • 然后y方向就是你观察者头顶的方向。
  • x方向用右手定则确定。拿出右手,伸出拇指食指比划一个手枪,中指抬起来和食指垂直。食指是y,大拇指是x,中指指向的就是z方向。
    在这里插入图片描述

观察坐标系变换

引入观察坐标系要解决的就是求世界坐标系的坐标在观察坐标系里是多少。如下图
在这里插入图片描述
思路是将观察坐标系移到和世界坐标系重合。

第一步,使原点重合。
在这里插入图片描述
第二步,使各个坐标轴重合。两个轴重合就行了。
把yv转到y轴的过程和上面把AB转到z轴过程一样。
在这里插入图片描述

这里有一个东西需要理解,就是我原来是要求这个世界坐标下的点Q,它在观察坐标系里的坐标,为什么要移动坐标系?

在移动之前,这个Q的x和y显然不是我们想要的结果,我们想要的是A到Xv和Yv轴的距离。这么把坐标轴一变换,正好就得到我们想要的了。
在这里插入图片描述

观察变换还隐含了一个观察平面,这个就是投影平面。

投影

投影的方式

投影的方式有下面这些种类:

  • 平行投影:正投影,斜投影

  • 透视投影

在这里插入图片描述

平行投影

当投影中心在无穷远处时的投影

平行投影分两类,正投影和斜投影。具体是啥看投影的方向和平面的法向。
在这里插入图片描述

正投影又有两种:三视图和正轴测图。
在这里插入图片描述

三视图

三视图投影中各个视图的投影方向:
主视图的投影方向为x轴,侧视图的投影方向是y轴,俯视图的投影方向是z轴。
在这里插入图片描述
正投影中的三视图可以很简单地得到三个坐标。
可以看到三视图能很好地反映尺寸信息,但是立体感不强,这一点从我们做高中三视图的题目就能得到结论。
在这里插入图片描述

正轴测图

立体感比较强
正轴测又有三种情况。投影与三个面夹角相等,为等轴测,与两个面夹角相等,为正二测。三个面夹角都不相等,叫做正三测
在这里插入图片描述

斜投影

投影方向和投影平面不垂直的投影叫斜投影。
比较常见的有斜等测和斜二测,当然还有别的角度。
在这里插入图片描述
求一个点斜投影后的坐标
在这里插入图片描述

α为PP’与xoy的夹角;β为平面POP’与xoz的夹角。
这里稍微证明一下:
证明α是线面角:我们有一个平面,一个直线,这个直线与平面不平行,那么一定有一个交点A,过直线上任意一点M向平面作垂线,这个垂线与平面也有一个交点N,那么角MAN就是线面角。这里zo与xoy垂直,po是线pp’上向xoy引的垂线。
证明β是二面角:二面角是怎么得到的,首先我们有两个面,这两个面有一个交线,取这个交线上任意一点A,过这一点分别作两个面的射线AM、AN。角MAN就是二面角。这里zo是平面pop‘和xoz的交线过o作两个平面上的射线op’、ox就得到xop‘是二面角。

基于这样的几何关系就能得到P’的坐标

任意一点的斜投影。可以看作是z轴上的点平移之后再投影。
在这里插入图片描述

透视投影

有一点p在与距离xoy平面d且平行的平面上投影,利用相似比求得投影后的坐标。
在这里插入图片描述
透视投影的缩小效应。注意这里有个投影中心,这个是透视投影特有的。平行投影的投影中心是无限远的。

这里有点奇怪的是实体应该在投影中心和投影平面之间吧,百度投影中心:

如图所示,投射线自投射中心S出发,将空间△ABC投射到投影而P上,所得△abc即为△ABC的投影,这种投射线自投射中心出发的投影法称为中心投影法,所得投影称为中心投影。

在这里插入图片描述
这是华科计算机图形学ppt上的图。
在这里插入图片描述

灭点

不要和投影中心搞混了。投影中心是发出投影的点。灭点是有无数个,所有不平行于投影面的平行线(注意这里,他们本身是相互平行的,但是与投影面不平行)回汇聚到一点。坐标轴方向上的平行线汇聚的灭点叫主灭点
在这里插入图片描述

在这里插入图片描述

规范化的投影变换

我们从一个地方要看到三维世界,首先于观察坐标有关,其次与观察方式有。观察坐标代表观察者的位置和旋转信息,观察方式即上面说过的平行投影和透视投影两种方式。

观察时要有一个观察平面,所有的东西都会投影到这个平面上,观察窗口就是这个平面的一个有限区域。而观察空间就是观察窗口沿着Zv方向移动经过的空间。要注意的是,平行投影的观察空间(无限)是柱体或斜柱体,透视投影的无限观察空间是四棱锥。

有限观察空间是有前截面和后截面的。有限的观察空间透视投影的话就变成了棱台。

有限观察空间又叫裁剪空间,又叫视景体。

为了规范化,定义了一个规范化的投影空间,三个坐标上的范围都是[-1,1],可以想到那我们空间里所有的点坐标就都要规范到这个范围内了。
在这里插入图片描述

各种空间的规范化

我们知道投影主要有正投影、斜投影和透视投影,这就对应三种观察空间,这三种观察空间都可以通过变换变成规范化的观察空间。

首先是平行投影,很简单,先全部平移,再全部比例缩放。
在这里插入图片描述

斜投影的观察空间呢?平移,错切变化,再比例缩放。

那透视投影的观察空间呢?
记得在坐标变换的时候。右上那个矩阵区域(T3)是用来投影变换的,其实就是透视投影变换,这里用到了。
在这里插入图片描述
可以看到观察空间的规范化都是可以用矩阵运算进行的,OpenGL里也有对应的转换函数。
OpenGL中规范化投影的函数和各参数含义:
在这里插入图片描述
我们知道了如何在三维空间中变换坐标,如何把坐标变换到观察者坐标系,如何规范化各种投影产生的观察坐标。了解了这些知识之后下一步就是剪裁和屏幕映射了。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐