OpenGL取景变换(视图变换)矩阵推导
标签(空格分隔): OpenGL VR 游戏开发
前言
关于取景变换(视图变换)矩阵的推导本人查过许多资料, 包过关于openGL的和数学方面, 数学方面的资料很严谨, 推导过程环环相扣, 但是数书知识毕竟是理论, 怎么将理论变成实现的代码, 数学知识是不涉及的. 代码原理方面的知识只能查找openGL或图形学相关的资料, 但是这些资料有个缺点就是涉及数学原理的地方不会写的很清楚, 很多东西都是一笔带过, 没有那种环环相扣的严谨性, 所以到最后就发现查了很多资料都发现推导过程是脱节的, 代码不是从数学知识平滑过渡过来的.
本文旨在结合数学知识一步一步的推导出取景变换的变换矩阵, 从最基本的向量相乘到最终的代码实现.
使用线性变换推导基本坐标变换公式
先从简单的情况入手, 让两个坐标系的原点相同, 基向量不同, 设世界坐标系 W 为
u=xui+yuj+zukv=xvi+yvj+zvkn=xni+ynj+znk
即:
(u,v,n)=(i,j,k)⎛⎝⎜⎜⎜xuyuzuxvyvzvxnynzn⎞⎠⎟⎟⎟
令:
A=⎛⎝⎜⎜⎜xuyvznxvyvznxnyvzn⎞⎠⎟⎟⎟
则有 V=WA , 由线性代数知识得知, A 称为从
(i,j,k)=(u,v,n)A−1
称之为坐标转换公式.
设世界坐标系中 W 的一点