三维旋转
根据叉乘 XYZ 轴 任意2轴可以得到第三个轴, x, yz叉乘, z xy叉乘, y 是zx叉乘得到的.所以旋转矩阵相反
欧拉角
罗德里格斯 旋转公式
视图/相机 转换
什么是view变换呢
找到一个好位置安排所有人站好 (model transformation)
找到一个好的角度去摆放相机(view transformation)
拍照(projection transform)
首先如何确定一个相机
位置 position
朝向 look-at
向上的向量 up direction
相机默认放在原点, 朝向-z, 向上的向量y轴, 约定俗成
相机从任意位置摆放在原点流程
平移到原点
旋转 朝向到-z 轴
旋转 向上到y 轴
x轴 自然就对齐啦
如何写成矩阵
这里首先是平移 再线性变换. 和之前矩阵转仿射的流程不一样, 那个是先线性变换, 再平移
这个是 g 要对齐-z轴, t 对齐y轴 .(g x t) 到x轴
这个把任意的一个轴旋转到固定的轴不好写. 但是反过来很容易,
先算逆矩阵
然后因为旋转矩阵是一个正交矩阵, 他的逆 = 转置。
投影变换
左边正交投影, 工业设计.
右边透视投影, 近大远小
正交投影
简单的理解流程
把相加放在原点, 朝向-z,向上y轴
丢掉z轴,
平移,旋转 结果矩形转换到 -1,1
正规流程
把一个空间中立方体 变成规范的立方体 -1,1
变换矩阵
透视投影
如何变换呢
把视锥体变换成空间中的立方体
然后按照正交投影
近平面上面的所有点不变, 远平面上面的点挤压成和近平面上平行的点.
根据相似三角形 n/z = y/y'
原始点 根据 一个变换矩阵可以得到中间的矩阵, 又因为, 这样一个点* 一个常量, 还是这个点, 所以这个地方乘以z.
如何推到出来第三行呢,
- 任意点在近平面没有发生变换
- 远平面的中心点也没有发生变换
n的平方 和x,y 没有关系.
远平面的重心, 变换之后 仍然没有变换, 所以可以带入公式中.
解出A,B, 这样转换矩阵的第三行也求出来啦.