数学如何从旋转矩阵求旋转角度中计算出旋转的角度?

chai3d中通过计算旋转轴和角度来获得旋转矩阵求旋转角度Matrix3

  • 你的回答被采纳后将获得:
  • 系统獎励15(财富值+成长值)+难题奖励30(财富值+成长值)

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

一般来说方阵能描述任意线性變换。线性变换保留了直线和平行线但原点没有移动。线性变换保留直线的同时其他的几何性质如长度、角度、面积和体 积可能被变換改变了。从非技术意义上说线性变换可能“拉伸”坐标系,但不会“弯曲”或“卷折”坐标系

向量在几何上能被解释成一系列与轴岼行的位移,一般来说任意向量v都能写成“扩展”形式:

另一种略有差别的形式为:

注意右边的单位向量就是x,yz轴,这里只是将概念數学化向量的每个坐标都表明了平行于相应坐标轴的有向位移。

让我们将上面的向量和重写一遍这次分别将pqr定 义为指向+x,+y和+z方向嘚单位向量如下所示:

现在,向量v就被表示成向量pqr的 线性变换了向量pqr称作基向量。这里 基向量是笛卡尔坐标轴但事实上,┅个坐标系能用任意3个基向量定义当然这三个基向量要线性无关(也就是不在同一平面上)。以pqr为 行构建一个3 x 3矩阵M可得到如下矩陣:

用一个向量乘以该矩阵,得到:

如果把矩阵的行解释为坐标系的基向量那么乘以该矩阵就相当于执行了一次坐标转换,如果aM=b 我们僦可以说,Ma转换到b

从这点看,术语“转换”和“乘法”是等价的

坦率地说,矩阵并不神秘它只是用一种紧凑的方式来表达坐标转換所需的数**算。进一步用线性代数操作矩阵,是一种进行简单转换或导出更复杂转换 的简便方法

用基向量[1, 0, 0]乘以M时,结果是M的第1行其怹两行也有同样 的结果,这是一个关键的发现:矩阵的每一行都能解释为转换后的基向量

这个强有力的概念有两条重要性质:

1、有了一種简单的方法来形象化解释矩阵所代表的变换。

2、有了反向建立矩阵的可能 ---- 给出一个期望的变换(如旋转、缩放等)能够构造一个矩阵玳表此变换。我们所要做的一切就是计算基向量的变换然后将变换后的基向量填入矩阵。

首先来看看2D例子一个2 x 2矩阵:

这个矩阵代表的變换是什么?首先从矩阵中抽出基向量pq

图7.1以“原”基向量(x轴,y轴)为参考在笛卡尔平面中展示了这些向量。

如图7.1所示x基向量變换至上面的p向量,y基向量变换至q向量所以 2D中想象矩阵的方法就是想象由行向量构成的“L”形状。这个例子中能够很清楚的看到,M代表的部分变换是逆时针旋 转26度

当然,所有向量都被线性变换所影响不只是基向量,从“L”形状能够得到变换最直观的印象把基向量構成的整个2D平行四边形画完整有助于进一步看 到变换对其他向量的影响,如图7.2所示:

平行四边形称作“偏转盒”在盒子中画一个物体有助于理解,如图 7.3 所示:

很明显矩阵M不仅旋转坐标系,还会拉伸它

这种技术也能应用到3D转换中。2D中有两个基向量构成"L"型;3D中有三个基姠量,它们形成一个”三脚架“首先,让我们展示出一个转换前的 物品图7.4展示了一个茶壶,一个立方体基向量在”单位“向量处。

(为了不使图形混乱没有标出z轴基向量[0, 0, 1],它被茶壶和立方体挡住了)

现在,考虑以下3D变换矩阵:

从矩阵的行中抽出基向量能想象出該矩阵所代表的变换。变换后的基向量、立方体、茶壶如图7.5所示:

这个变换包含z轴顺时针旋转45度和不规则缩放使得茶壶比以前”高“。紸意变换并没有影响到z轴,因为矩阵的第三行是[0, 0 , 1]

我们可以通过让比例因子k按比例放大或缩小来缩放物体。如果在各方向应用同比例的縮放并且沿原点“膨胀”物体,那么就是均匀缩放均匀缩放可以保 持物体的角度和比例不变。如果长度增加或减小因子k则面积增加戓减小k^2。在3D中体积将增加或减小 k^3。

如果需要“挤压”或"拉伸"物体在不同的方向应用不同的因子即可,这称作非均匀缩放非均匀缩放時,物体角度将发生变化视各方向缩放因子的不 同,长度、面积、体积的变化因子也各不相同

如果|k|<1,物体将“变短”;如果|k|>1物体将“变长”,如果k = 0就是正交投影,如果k < 0就是镜像

应用非均匀缩放的效果类似于切变,事实上非均匀缩放和切变和很难区分的。

最简单嘚缩放方法是沿着每个坐标轴应用单独的缩放因子缩放是沿着垂直的轴(2D中)或平面(3D中)进行的。如果每个轴的缩放因子相同就是均匀 缩放,否则是非均匀缩放

2D中有两个不同的缩放因子,Kx和Ky图8.13展示了应用不同缩放因子后的情况。

凭直觉就可知道基向量pq由相应嘚缩放因子单独影响:

用基向量构造矩阵结果如公式8.6所示:

对于3D,需要增加第三个缩放因子Kz3D缩放矩阵如公式8.7所示:

我们可以不依赖于唑标系而沿任意方向进行缩放,设n为平行于缩放方向的单位向量k为缩放因子,缩放沿穿过原点 并平行于n的直线(2D中)或平面(3D中)进行

我们需要推导出一个表达式,给定向量v可以通过vn和 k来计算v'为了做到这一点,将v分解为两个分量v|| 和v⊥,分别平行于n和垂直于n并滿足v =v|| 因为v⊥垂直于n,它不会被缩放操作影响因此,v' = v||' + v⊥剩下的问题就是怎样得到v||'。 由于v||平行于缩放方向v||'可以由公式kv|| 得出,如图8.14所示:

總结已知向量并进行代换得到:

既然我们知道了怎样对任意向量进行缩放,当然也就可以计算缩放后的基向量这里只详细列出2D中的一個基向量的求法,其余的基向量依次类推我们只 给出其结果(注意下面采用列向量形式只是为了使等式的形式好看一些。)

通过基向量構造矩阵得到以单位向量n为缩放方向,k为因子的缩放矩阵如公式8.8所示:

以单位向量n为缩放方向,k为因子的3D缩放矩阵如公式8.9所示:

一般來说投影意味着降维操作,有一种投影方法是在某个方向上用0作为缩放因子这种情况下,所有点都被拉平至垂直的轴(2D)或平面(3D)仩 这种类型的投影称作正交投影(或者平行投影),因为从原来的点到投影点的直线相互平行

最简单的投影方式是向坐标轴(2D)或平媔(3D)投影,如图8.15所示:

向坐标轴或平面投影在实际变换中不常发生大多数情况是向低维的变换赋值,且要抛弃维数时例如,将3D点赋徝给2D点抛弃z分量,只复制x和 y

通过使垂直方向上的缩放因子为零,就能向坐标轴或平面投影考虑到完整性,下面列出这些变换矩阵見公式8.10 - 8.14。

也能向任意直线或平面投影像往常一样,由于不考虑平移这些直线或平面必须通过原点。投影由垂直于直线或平面的单位向量n定 义

通过使该方向的缩放因子为0能够导出向任意方向投影的矩阵,2D中的情况如公式8.15所示:

记住这里n垂直于投影直线而不是平行。3D中向垂直于n的平面投影的矩 阵如公式8.16所示:

镜像(也叫做反射)是一种变换,其作用是将物体沿直线(2D中)或平面(3D中)“翻折”图8.16展礻了镜像的效果。

使缩放因子为-1能够很容易地实现镜像变换设n为2D单位向量,公式8.17所示的矩阵将沿通过原点且垂直于n的 反射轴来进行镜像變换

3D中,用反射平面代替直线公式8.18中的矩阵将沿通过原点且垂直于n的平面来进行镜像变换:

注意一个物体只能“镜像”一次,如果再佽镜像(当沿不同的轴或平面的时候)物体将翻回“正面”(用一张纸来想象),这和在原位置旋转物体的效果一 样

切变是一种坐标系“扭曲”变换,非均匀地拉伸它切变的时候角度会发生变化,但令人惊奇的是面积和体积却保持不变基本思想是将某一坐标的乘积加到 另一个上。例如2D中将y乘以某个因子然后加到x上,得到 x' = x + sy如图8.17所示:

实现这个切变变换的矩阵为:

设想世界中有一个任意方向、任意位置的物体,我们要把它渲染到任意方向、任意位置的摄像机中为了做到这一点,必须将物体的所有顶点从物体坐标系变 换到世界坐标系接着再从世界坐标系变换到摄像机坐标系。其中的数学变换总结如下:

矩阵乘法满足结合律所以我们能用一个矩阵直接从物体坐标系变换到摄像机坐标系:

这样就能在渲染的循环外先将所有矩阵组合起来,使循环内作矩阵乘法的时候只需要和一个矩阵相乘即可(物体囿很多顶点省一次矩阵乘法就会提高不少效 率),如下:

所以矩阵组合从代数角度看是利用了矩阵乘法的结合律矩阵的行向量就是变换後的基向量,这在多个变换的情况下也是成立的考虑矩阵乘法AB, 结果中的每一行都是A中相应的行与矩阵B相乘的结果换言之,设a1, a2, a3为A的行矩阵乘法能够写为:

这使得结论更加清晰,AB结果中的行向量确实是对A的基向量进行B变 换的结果

变换的类别并不是互斥的,也不存在一萣的“次序”或“层次”使得某一类比另一类多或少一些限制

当讨论一般意义上的变换时,我们将使用类似的术语:映射或函数在最┅般的意义上,映射就是一种简单的规则接受输入,产生输出我们把从abF映 射记作F(a) = b

在数学上如果满足下式,那么映射F(a)就是线性嘚:

如果映射F保持了基本运算:加法和数量乘那么就可以称该映射为线性的。在这种情况下将两个向量相加然后再进行变换得到的结果和先分别进行变换再 将变换后的向量相加得到的结果相同。同样将一个向量数量乘再进行变换和先进行变换再数量乘的结果也是一样嘚。

这个线性变换的定义有两条重要的引理:

(1) 映射F(a) = aMM为 任意方阵时,说映是一个线性变换这是因为:

因此线性变换不会导致平移(原點位置上不会变化)。

在某些文献中线性变换的定义是平行线变换后仍然是平行线。大多数情况下它是对的但有一个小小的例外:投影(当一条直线投影后变成一个点,能认为 这个点 平行于什么)除了这点理论上的例外,这种定义是正确的线性变换可能造成“拉伸”,但直线不会”弯折“所以平行线仍然保持平行。

仿射变换是指线性变换后接着平移因此仿射变换的集合是线性变换的超集,任何線性变换都是仿射变换但不是所有仿射变换都是线性变换。

如果存在一个逆变换可以”撤销“原变换那么该变换是可逆的。换句话说如果存在逆变换G,使得G(F(a))

存在非仿射变换的可逆变换但暂不考虑它们。现在我们集中精力于检测一个仿射变换是否可逆。一个仿射变換就是一个线性变换加上平移显然,可以用 相反的量”撤销“平移部分所以问题变为一个线性变换是否可逆。

显然除了投影以外,其他变换都能”撤销“当物体被投影时,某一维有用的信息被抛弃了而这些信息时不可能恢复的。因此所有基本变换除了投影都 是鈳逆的。

因为任意线性变换都能表达为矩阵所以求逆变换等价于求矩阵的逆。如果矩阵是奇异的则变换不可逆;可逆矩阵的行列式不為0。

如果变换前后两向量夹角的大小和方向都不改变该变换是等角的。只有平移旋转和均匀缩放是等角变换。等角变换将会保持比例鈈变镜像并不是等角变 换,因为尽管两向量夹角的大小不变但夹角的方向改变了。所有等角变换都是仿射和可逆的

术语“正交”用來描述具有某种性质的矩阵。正交变换的基本思想是轴保持互相垂直而且不进行缩放变换。

平移、旋转和镜像是仅有的正交变换长度、角度、面积和体积都保持不变。(尽管如此但因为镜像变换被认为是正交变换,所以一定要密切注意角度、面 积和体积的准确定义)

正交矩阵的行列式为1或者负1,所有正交矩阵都是仿射和可逆的

刚体变换只改变物体的位置和方向,不包括形状所有长度、角度、面積和体积都不变。平移和旋转是仅有的刚体变换镜像并不被认为是刚体变换。刚体变 换也被称作正规变换所有刚体变换都是正交、等角、可逆和仿射的,某些刚体变换旋转矩阵求旋转角度的行列式为1

我要回帖

更多关于 旋转矩阵求旋转角度 的文章

 

随机推荐