详解 OpenGL 的坐标系、投影和几何变换
按:我也是在迷茫中走过来的,初学 OpenGL 时,略微了解了一些有关变换的基本知识,但是却不知
道具体的使用方法,因此经常需要在布置场景时反复调整各种参数。当我终于有一天明白了它们的用法时,
就觉得应该把这些心得体会写下来,让那些和我一样曾经迷茫过的人能够迅速地找到出路。本文的读者对
象为那些初学 OpenGL,了解了一些坐标系、几何变换等基本知识,但是又不知道具体应该如何运用这些操
作的人。如果你对 OpenGL 一无所知,建议你先去学学 OpenGL 的基本知识。
1 坐标系
OpenGL 中使用的坐标系有两种,分别为世界坐标系和屏幕坐标系。世界坐标系即 OpenGL 内部处理时
使用的三维坐标系,而屏幕坐标系即为在计算机屏幕上绘图时使用的坐标系。
通常,OpenGL 所使用的世界坐标系为右手型,如下图所示。
从计算机屏幕的角度来看,
x
轴正方向为屏幕从左向右,
y
轴正方向为屏幕从下向上,z 轴正方向为
屏幕从里向外。而进行旋转操作时需要指定的角度
θ
的方向则由右手法则来决定,即右手握拳,大拇指直
向某个坐标轴的正方向,那么其余四指指向的方向即为该坐标轴上的
θ
角的正方向(即
θ
角增加的方向),
在上图中用圆弧形箭头标出。
2 投影
将世界坐标系中的物体映射到屏幕坐标系上的方法称为投影。投影的方式包括平行投影和透视投影两
种。
平行投影的投影线相互平行,投影的结果与原物体的大小相等,因此广泛地应用于工程制图等方面。
透视投影的投影线相交于一点,因此投影的结果与原物体的实际大小并不一致,而是会近大远小。因
此透视投影更接近于真实世界的投影方式。
A
B
A'
B'
平行投影
投影面(屏幕)
A
B
A'
B'
透视投影
投影面(屏幕)
投影中心
x
z
y
0