三维变换

OpenGL有MC、WC、VC、PC、NC、DC这几大坐标系。

MC(Model Coordinate):          模型坐标系

WC(World Coordinate):          世界坐标系

VC(view Coordinate):              视图坐标系

PC(Projection Coordinate):    投影坐标系

NC(Normalized Coordinate): 归一化坐标系

DC(Device Coordinate):         设备坐标系















图一的箭尾到箭头表示前者的对象定义于后者。于是上述的图形可以有以下的解释:

Obj->MC:对于一个obj而言,它可以在MC中定义,定义的格式为一个列数为3的矩阵,行数可以自行选择。

Obj->WC:与Obj->MC有同样的意思。它们表明,Obj->MC并不一定是必须的,Obj->WC也是对Obj的一种定义方法。

MC->WC:MC中的参数定义于WC中,这些参数为,通过这些参数可以定义MCS。

VC->WC:与MC->WC有同样的意思,只不过VC中的有些向量多了一层意思,对于VCS中的Z轴向量,它同时也作为观察向量。

作为程序员,通常不会过多地考虑定义于MC中Obj的坐标与Obj在VC中的坐标的值是多少,因为没有一个显式的公式或矩阵可以回答这一问题,程序员所做的工作就是定义上述的几大参数,之后的一些就交由流水线来完成了。




 




 









图二中的双向箭头表示,一个对象的坐标在两个坐标系之间可以实现相互映射,或一一映射,而不损失信息。单向箭头表示,从箭尾到箭头断有些坐标值将被扭曲,扔掉,不能实现一一映射。

MC,WC,VC部分需要在GL_MODELVIEW的矩阵模式下进行各种矩阵设置。而VC->PC部分则需要在GL_PROJECTION的矩阵模式下进行各种参数设置。




你可能感兴趣的:(OpenGL)