裁减平面坐标的设定

 

       通过函数gluUnProject()得到三个坐标点P1,P2,P3确定裁剪平面的问题,如果你是要基于物体坐标系(世界坐标)做裁剪,那么请不用看后文了;

       如果你是在视觉坐标系下做裁剪那么请看后文,因为这三个点很有可能是在已经发生视图变换之后的坐标系下获取的反投影坐标,就要把这些坐标值转换成在模型视图变换后和投影变换之前的坐标值,也就是该坐标必须再经过与模型视图矩阵相乘变换才能用来作为裁剪面的三个点。然后根据这新的三点P1’,P2’,P3’确定一个平面方程,得到相应系数A,B,C和D。分三点说明:

       1.使用glGetDoublev(GL_MODELVIEW_MATRIX,modelViewMatrix)获取模型视图矩阵要注意在此函数前面应用已经使用的模型视图变换,保持坐标系对应吻合,从而得到正确的模型视图矩阵modelViewMatrix。modelViewMatrix是一个16个double元素的一维数组。对应到二维数组M就是modelViewMatrix [4j+i]对应于M[i][j]元素中,其中i,j=0=0,1,2,3。

       2.再通过根据1所得的modelViewMatrix [4j+i]把P1,P2,P3变换到相应的坐标空间,也就是

           P1’=P1 *M’,//注意是M的转置M'

           P2’=P2* M’,

           P3’=P3* M’

      注意相乘的规则是坐标点乘以矩阵的转置,如下所示(hx,hy,hz表示原坐标P值,new_x,new_y,new_z表示新坐标)

new_x=modelViewMatrix[0]*hx+modelViewMatrix[4]*hy+modelViewMatrix[8]*hz+modelViewMatrix[12];

new_y=modelViewMatrix[1]*hx+modelViewMatrix[5]*hy+modelViewMatrix[9]*hz+modelViewMatrix[13];

new_z=modelViewMatrix[2]*hx+modelViewMatrix[6]*hy+modelViewMatrix[10]*hz+modelViewMatrix[14];

   3,利用新的三点确定裁剪面的方程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值