主要内容引自:
Addison.Wesley.OpenGL.SuperBible.5th.Edition.Jul.2010
CHAPTER 4
Basic Transformations:
A Vector/Matrix Primer
OpenGL的坐标变换其实主要是理解各种矩阵变换,其实在各个领域都在用矩阵变换,OpenGL用到的只是3维(后扩展到4维)的矩阵变换。
1.向量
在OpenGL里的向量定义有两种方式:
typedef float M3DVector3f[3]; //只有XYZ坐标
typedef float M3DVector4f[4];//XYZ坐标加上缩放因子
向量运算主要有两种形式:
Dot Product:点积,单位向量的点积可以表示两个向量的夹角。
Cross Product:差积,可以计算出和两个单位向量垂直的第三个向量,这样只需给出某个坐标系的两个坐标轴方向,自然可以计算出第三个坐标轴方向。记得在电磁场理论里也用叉积来计算由电流产生的磁场。
2.变换
有如下几种变换:
Viewing: Specifies the location of the viewer or camera 观察变换:定义观察者位置或摄像头位置
Modeling: Moves objects around the scene 物体变换:在场景中移动物体。
Modelview: Describes the duality of viewing and modeling transformations 描述观察变换和物体变换的对偶性,因为他们本来就是相对移动的。
Projection: Sizes and reshapes the viewing volume 投影变换:改变观察空间的大小和形状。
Viewport: A pseudo-transformation that scales the final output to the window 观察窗口变换:从投影结果到窗口系统的变换。
待续......