ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图形学学习笔记二:观测变换

2020-12-22 22:01:09  阅读:200  来源: 互联网

标签:cos 变换 图形学 笔记 旋转 alpha array sin


文章目录


一、旋转

三维空间中绕坐标轴旋转

R x ( α ) = ( 1 0 0 0 0 cos ⁡ α − sin ⁡ α 0 0 sin ⁡ α cos ⁡ α 0 0 0 0 1 ) R y ( α ) = ( cos ⁡ α 0 sin ⁡ α 0 0 1 0 0 − sin ⁡ α 0 cos ⁡ α 0 0 0 0 1 ) R z ( α ) = ( cos ⁡ α − sin ⁡ α 0 0 sin ⁡ α cos ⁡ α 0 0 0 0 1 0 0 0 0 1 ) \begin{array}{l}\mathbf{R}_{x}(\alpha)=\left(\begin{array}{cccc}1 & 0 & 0 & 0 \\0 & \cos \alpha & -\sin \alpha & 0 \\0 & \sin \alpha & \cos \alpha & 0 \\0 & 0 & 0 & 1\end{array}\right) \\\mathbf{R}_{y}(\alpha)=\left(\begin{array}{cccc}\cos \alpha & 0 & \sin \alpha & 0 \\0 & 1 & 0 & 0 \\-\sin \alpha & 0 & \cos \alpha & 0 \\0 & 0 & 0 & 1\end{array}\right) \\\mathbf{R}_{z}(\alpha)=\left(\begin{array}{cccc}\cos \alpha & -\sin \alpha & 0 & 0 \\\sin \alpha & \cos \alpha & 0 & 0 \\0 & 0 & 1 & 0 \\0 & 0 & 0 & 1\end{array}\right)\end{array} Rx​(α)=⎝⎜⎜⎛​1000​0cosαsinα0​0−sinαcosα0​0001​⎠⎟⎟⎞​Ry​(α)=⎝⎜⎜⎛​cosα0−sinα0​0100​sinα0cosα0​0001​⎠⎟⎟⎞​Rz​(α)=⎝⎜⎜⎛​cosαsinα00​−sinαcosα00​0010​0001​⎠⎟⎟⎞​​

其中绕y轴旋转比较特殊,可以通过向量叉乘去理解,x与y叉乘得到z,y与z叉乘得到x。这两个都是符合叉乘,通过另外另外两个轴右手逆时针旋转得到。而y是z与x叉乘的结果,这两个轴的右手旋转方向和转动方向相反,取负号。

三维空间中绕任意轴旋转

对于任意一个旋转 R x y z ( α , β , γ ) R_{xyz}(α,β,γ) Rxyz​(α,β,γ),可以由 R_x(α) 、R_y(β) 和 R z ( γ ) R_z( \gamma) Rz​(γ) 组成。其中,α 、β 和 γ 称为欧拉角(Euler Angles)。通过下图中的操作,可将飞机的头朝向任意方向。
罗德里格斯公式(Rodrigues’ Rotation Formula)
在三维旋转理论中,对于给定旋转轴和旋转角度,以Olinde Rodrigues命名的罗德里格斯公式是用于在空间旋转向量的高效算法。
旋转轴为 n 轴,旋转角为 α .默认旋转轴过原点(若不过原点,可想将其移至原点,然后做线性变换后,在将其平移至原位置)。其中,罗德里格斯公式如下:

在这里插入图片描述

二、观测变换(View/Camera Transformation)

在这里插入图片描述
上述三种变换即为MVP变换。
视图变换View Transformation
    视图变换是在摆一个照相机。如何才能确定一个相机的摆放

1 定义的三个要素

  • 位置
  • 观测的方向
  • 向上方向(正立,倒立的像)
    在这里插入图片描述

2 进行视图变换

约定:相机在原点,向上指向 Y,看向 Z 方向。
在这里插入图片描述

3 相机转换步骤

将相机转换到原点的标准方向
在这里插入图片描述
先将其平移至原点。
再求旋转,先求得其逆变换再求逆,既可以得到变换矩阵(由于旋转变换矩阵为正交矩阵,其逆就是其转置)
在这里插入图片描述
总结在这里插入图片描述

投影变换(Rrojection Transformation)

在这里插入图片描述

1 投影变换的分类

在这里插入图片描述
其中,人眼成像类似于透视投影(右图);正交投影(左图)常用于工程制图。

透视投影是在一个点投射成四棱锥形成;正交显示若将相机放于无限远,远、近平面将无限接近。

在这里插入图片描述

2、正交投影

( 一 )3D化2D方法:

下图将去除z轴,投影移至 [ − 1 , 1 ] 2 [-1,1]^2 [−1,1]2,约定俗成。
在这里插入图片描述

( 一 )3D方法:

定义一个空间中的立方体,将其映射成标准立方体 [ − 1 , 1 ] 3 [−1,1]^3 [−1,1]3中。“先平移再缩放”。
z轴用远和近表示
在这里插入图片描述
变换矩阵
在这里插入图片描述
坐标系选择不同,会导致结果不同。

三 透视投影

  1. 越远的对象越远
  2. 平行线不再相交

如何进行透视投影?(难点)

简单说,就是把这个Frustum的远平面f挤成同近平面n一样大的平面,然后进行正交投影。
约定:
3. 近平面不变
4. 远平面f的中心点不变
5. Z值仍为f
在这里插入图片描述
关于远平面挤压后坐标的变化,(通过相似三角形算出)等值关系:
在这里插入图片描述
在齐次坐标中,利用上述相似关系
y ′ = n z y x ′ = n z x  (similar to y’)  y^{\prime}=\frac{n}{z} y \quad x^{\prime}=\frac{n}{z} x \text { (similar to y') } y′=zn​yx′=zn​x (similar to y’) 
( x y z 1 ) ⇒ ( n x / z n y / z  unknown  1 )  mult.   by  z = = ( n x n y  still unknown  z ) \left(\begin{array}{l}x \\y \\z \\1\end{array}\right) \Rightarrow\left(\begin{array}{c}n x / z \\n y / z \\\text { unknown } \\1\end{array}\right)^{\begin{array}{l}\text { mult. } \\\text { by } z \\==\end{array}}\left(\begin{array}{c}n x \\n y \\\text { still unknown } \\z\end{array}\right) ⎝⎜⎜⎛​xyz1​⎠⎟⎟⎞​⇒⎝⎜⎜⎛​nx/zny/z unknown 1​⎠⎟⎟⎞​ mult.  by z==​⎝⎜⎜⎛​nxny still unknown z​⎠⎟⎟⎞​
上述变换可以用矩阵表示如下,可以确定出变换矩阵的三行
在这里插入图片描述
如何去确定剩下的一行呢?通过以下
1. 利用近平面的点不变性 近平面上的点在经过上述变换后坐标不变
计算出第三行的前两个问号,得出一个等式 A n + B = n 2 An+B=n^2 An+B=n2:
在这里插入图片描述
2. 利用远平面的点,Z坐标值不变性,得出一个等式 A n + B = f 2 An+B=f^2 An+B=f2:
在这里插入图片描述
联立上两式即可得
在这里插入图片描述
Question:对于中间任意一点(x,y,z),在经过挤压后(将其变为立方体后),变换后的Z值会靠近远平面还是靠近近平面?
Answer:会更大一些,乘以变换矩阵即可得到结果。

标签:cos,变换,图形学,笔记,旋转,alpha,array,sin
来源: https://blog.csdn.net/weixin_42479032/article/details/111565307

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有