裁减平面坐标的设定

来源:互联网 发布:ubuntu卸载wine 编辑:程序博客网 时间:2024/04/30 03:00
 

       通过函数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,利用新的三点确定裁剪面的方程

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 户口迁移行驶证怎么办 身份证改了驾照怎么办 迁户口后身份证怎么办 户口迁出后驾照怎么办 在异地学驾照怎么办 户口迁移后 驾照怎么办 无驾照开车违章怎么办 身份证地址错了怎么办 学生迁户口学籍怎么办 买新车临时牌怎么办 户口迁移换驾照怎么办 户口迁了身份证怎么办 户口迁移了医保怎么办 房屋卖了户口怎么办 驾照过期注销了怎么办 负全责不赔偿怎么办 青岛驾驶证过期了怎么办 驾驶证过了年检怎么办 驾驶证审证逾期怎么办 d驾驶证3年没捡怎么办 c1驾驶证3年没审怎么办 驾驶证换证外地怎么办 考驾驶证快到期怎么办 驾照到期人在国外怎么办 驾驶证3年没审怎么办c3 驾驶证几年没审怎么办 驾照体检过期了怎么办 b2驾照超过年检怎么办 驾驶证过审一年怎么办 驾照一年未年审怎么办 b驾照年审过期怎么办 摩托车驾驶证过期一年怎么办 驾驶证过期一年半怎么办 驾照过期了几天怎么办 驾照过期超过一年怎么办 考试驾照过期了怎么办 驾校考试过期了怎么办 驾驶证明过期了怎么办 驾驶证年过期了怎么办 驾照过期六个月怎么办 移动预约号码取消怎么办