101复习(2`变换)
变换
- 仿射变换:
- 线性变换
- 缩放
- S1 * x, S2 * y, S3 * z
- 旋转

- 2D旋转矩阵推导(只能绕虚拟z轴旋转)
- 两个单位向量ij,旋转矩阵为R(θ)
- 用R(θ)旋转两个单位向量,根据三角函数得到旋转后的向量
- 向量r可以用ij表示
- 注意:图中cos(θ)sin(θ)并不是标注的虚线,是虚垂线点到原点的那段距离
- 问题:如果使用非单位向量例如(0,2),(2,0)去推导,是否R(θ)的结果不同
- R(θ) * (0,2) == 2 * R(θ) * (0,1),仍然可以利用单位向量推导,最后通过2缩放向量长度,这样R(θ)结构不变
- 欧拉角——旋转算法:
- 3D旋转矩阵推导(可以绕无数个轴旋转)
- Gimbal——船体陀螺仪:
- 由三层嵌套的圆环(每个圆环有2个连接头(相当于坐标轴)和内侧相连),旋转轴,转子(具有质量增加惯性)
- 当船体发生了摇晃,哪个圆环连接头线段 和旋转轴平行,则此圆环绕旋转轴旋转,如果有外环带动外环旋转,无论怎样摇晃,旋转轴永远和世界坐标系的y轴平行
- 作用:旋转轴永远和世界坐标系的y轴平行,作为定轴参考,可以实时测量船体的姿态,保证风浪中的稳定性
- Gimbal——万向节死锁:
- 当船体发生了剧烈摇晃,90°,某一个圆盘的连接头线段将和另一个连接头线段平行
- 例如,船体绕x旋转90°(中环旋转),外内连接头平行,这时绕z旋转,由于没有和旋转轴平行的连接头线段,则失去了自身调节能力,旋转轴不再和世界坐标系的y轴平行
- 本质:机械结构,内环旋转影响外环轴旋转,当旋转90/-90度时,发生轴重叠
- 船体问题:陀螺仪发生万向节死锁,导致船体测量功能短暂失灵
- 欧拉角——万向节死锁:
- 罗德里格斯——旋转算法
- 四元数——旋转算法
- 复数:a + bi(实数+虚数)
- 四元数:q = w + xi + yj + zk(复数的扩展),w实部,xi + yj + zk虚部,ijk为虚数单位
- 四元数表示:
- 四元数运算:
- 四元数计算旋转:
- 定义旋转轴 v =(vx, vy, vz),旋转角度θ = 弧度制, 被旋转向量w = (wx, wy, wz)
- 表示四元数:q =(cosθ/2,sinθ/2 * vx,sinθ/2 * vy,sinθ/2 * vz)
- 表示四元数的共轭:q^-1 = (cosθ/2,-sinθ/2 * vx,-sinθ/2 * vy,-sinθ/2 * vz)
- 被旋转向量的四元数形式:qw = (0, wx, wy, wz) = 0 + wxi + wyj + wzk
- 应用旋转:qw` = q * qw * q^-1
- 新向量的四元数形式:qw` = (0, wx`, wy`, wz`) = 0 + wx`i + wy`j + wz`k
- 新向量非四元数形式:w` = (wx`, wy`, wz`);
- 欧拉角 vs 四元数:
- 欧拉角:
- 优点:直观;可表示>180度的旋转
- 缺点:万向节死锁,插值不平滑,旋转顺序重要性
- 四元数:
- 优点:计算效率高,解决万向节死锁, 插值平滑,内存消耗小
- 缺点:不直观,不可表示>180度的旋转
- 欧拉角:
- 缩放
- 平移变换
- 位移:
- x + L1, y + L2, z + L3
- 齐次坐标:为n维的点引入n+1个分量,值为1,使其支持平移变换
- 位移:
- 模型变换顺序
- SRT->TRSV
- 视图变换
- 投影变换
- 透视除法:
- 由于上述*z简化操作,获得-w——w的裁剪空间,我们应/w也就是/z,这样变换到NDC空间
- 视口变换
- 空间变换:
- 局部空间 -> M(SRT) -> 世界空间 -> V -> 观察空间 -> P -> 裁剪空间 -> /w -> NDC空间 -> 视口变换 -> 屏幕空间
- 真实步骤(以上有些步骤为了方便理解,有说的不准确的地方)
- 透视矩阵(带入法):xyz均匀放大,转换为齐次形式,齐次空间
- 正交矩阵:均匀压缩齐次空间
- /w:对于zview越大,xy越小(近大远小),近平面点不变*n/n,对于z,物体非线性的靠近f(非线性深度)
- -w——w的空间,w = -zview,那这个zview使用的哪个点的zview?每个点的zview,-w——w是针对每个点的空间
本文由作者按照 CC BY 4.0 进行授权














