OpenGL 变换

1.向量:指几何关系,可以描述出具体的三维空间特征
2.矩阵:指代数,是加速解决向量问题的工具。矩阵能解决的问题很多,三维向量问题只是他能轻松解决的一种
3.向量和一维矩阵的+、-、*、/都差不多(相同之处)

  • 矩阵的乘法,标量要写在前面;向量的乘法,标量要写在后面
  • 向量与向量的加减(等同一维矩阵与一维矩阵的加减)
    4.向量与矩阵不同之处
  • 向量与向量的乘法=>Dot/Cross(点乘/叉乘)
    1)点乘:算投影
    2)叉乘:(左/右)手坐标空间下(左/右)手旋转的方向
  • 矩阵与矩阵的乘法 =>矩阵行列乘法
  • 向量与矩阵的乘法 =>把向量看成一维矩阵(列为主的矩阵:column matrix)
  • 例外:GLSL的vec4 * vec4是逐元乘法(componet wise)(数学上没有,GLSL特定的运算)
    5.单位矩阵:单位矩阵是一个除了对角线以外都是0的N×N矩阵。



    单位矩阵与向量相乘后结果是这个向量,保持不变
    6.缩放矩阵
    分别在S1,S2,S3的位置写上对于x,y,z位置的缩放系数


7.位移矩阵
分别在TX,TY,TZ的位置写上要移动的值



8.齐次坐标:向量的w分量也叫做齐次坐标。

  • 齐次坐标允许我们在3D向量上进行位移。
  • 如果齐次坐标是0,则是方向向量
  • 如果齐次坐标是1,则是位移向量
    9.旋转矩阵
  • 弧度转角度:角度 = 弧度 * (180.0f / PI)
  • 角度转弧度:弧度 = 角度 * (PI / 180.0f)
  • PI约等于3.14159265359
  • 旋转矩阵在3D空间中每个单位轴都有不同定义,旋转角度用θ表示:




  • 万向节死锁:当最外侧的轴和最内侧的轴重叠,中间的轴会卡住。
  • 避免万向节死锁的真正解决方案是使用四元数

你可能感兴趣的:(OpenGL 变换)