裁减平面坐标的设定
来源:互联网 发布: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,利用新的三点确定裁剪面的方程
- 裁减平面坐标的设定
- 平面的坐标转换
- 经纬度到平面坐标的相互转换
- 经纬度到平面坐标的相互转换
- 平面坐标系之间点坐标的换算
- 计算两平面坐标点的距离
- 平面弧长极坐标公式的疑问
- OpenGL平面坐标与世界坐标的互转
- 裁减网格纸 找x轴与y轴 最大 的坐标差
- GPS坐标(大地坐标)转高斯平面坐标,并计算 GPS 坐标(大地坐标)两点间的距离
- 求平面点坐标
- 平面坐标点类
- 平面坐标类
- 平面坐标点类
- 平面坐标点类
- 平面坐标点类
- 平面坐标点类
- 项目三平面坐标
- Objective-c
- 超好用的图标搜索网站
- map和pair的配合使用
- windows 环境下 gem install mysql2 出错
- 使用Makefile自动编译iPhone程序
- 裁减平面坐标的设定
- 秒(s) 毫秒(ms) 微秒(μs) 纳秒(ns) 皮秒(ps)及Java获得
- vc中读写excel(数据库找不到搜索引擎对象)
- greenplum 在单机上安装
- c#访问xml文件中遍历指定节点名的要素
- 多个Activity 之间 通过 SharedPreferences 传值
- 诊断 Java 代码: 轻松掌握 Java 泛型
- java中Socket应用
- 关于C++ 字节对齐 (结构体)