OpenGL的gluLookAt()

void    gluLookAt(  
      GLdouble   eyex,              
      GLdouble   eyey,              
      GLdouble   eyez,              
      GLdouble   centerx,        
      GLdouble   centery,        
      GLdouble   centerz,        
      GLdouble   upx,                
      GLdouble   upy,                
      GLdouble   upz                  
  );   


一个三维物体从模型空间到图象空间,一般要经过如下的变换:  
     
                        A                                     B                                         C                                       D  
  模型上的点-->世界坐标系中点-->视点坐标系中的点--->图象坐标系中的点-->屏幕上的点  
   
  其中用到的变换矩阵为:  
  A:模型变换矩阵  
  B:视点变换矩阵  
  C:投影变换矩阵  
  D:视口变换矩阵  
   
  其中的UP矢量是在B矩阵中用到,设视线方向矢量为N(nx,ny,nz),Up矢量为V'(vx,vy,vz),用公式V=V'-(V'*N)N,计算 出视点坐标系的y轴方向,再定义一个矢量U(ux,uy,uz),U=N×V,这三个矢量分别对应视点坐标系的x,y和z轴,这样就建立了视点坐标系。用 这三个矢量构造齐次矩阵  
            |ux     vx     nx   0|  
            |uy     vy     ny   0|                                                  
  B   =   |                                                                
            |uz     vz     nz   0|                                  
            |0       0       0     1|  
  利用B矩阵可以将世界坐标系中的点变换到视点坐标系中。从B可以看到Up矢量是你所指定矩阵的(a1   a5   a9)。      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值