OpenGL中鼠标点取
来源:互联网 发布:windows arp攻击 编辑:程序博客网 时间:2024/05/01 22:00
OpenGL中鼠标点取
(2008-07-27 00:29:19)转载
标签:
杂谈
分类:计算机图形学class
class
LineSegment
//
GLdouble
GLdouble
GLint
glGetDoublev
glGetDoublev
glGetIntegerv
GLdouble
//
gluUnProject(
modelview,
&world_x,
Point3f
//
gluUnProject(
modelview,
&world_x,
Point3f
return
}
如果你是使用Win32平台进行开发,那么应当注意传入正确的参数.因为无论是使用Win32
我们可以看到代码被注释分为了三个部分:获取当前矩阵及视区,获取近裁剪面的交点,获取远裁剪面的交点.
我们通过OpenGL提供的查询函数轻松得到当前的ModelView和Projection矩阵,以及当前的Viewport(视区,也就是窗口的客户端区域,如果整个窗口区域用于OpenGL渲染的话).
获得两个裁剪面上的交点的代码基本上是一样的,唯一的不同点是我们前面曾经详细地讨论过的窗口的Z坐标.不错,这个坐标表示的就是"深浅"的概念.它的值从点P'到点P的变化是从0.0f逐渐增至1.0f.此处类似于OpenGL的深度测试机制.
在得到两个交点之后,我们使用它们通过返回语句直接构建一条线段.在这里仅仅作为实例代码,故简捷清晰地直接返回线段对象,而没有通过引用参数来提高效率.
此时用户可以使用这个函数来判断所选择的对象了.只需在需要的地方判断对象是否与此线段相交即可判断对象是否被选中,还可以通过进一步计算其交点位置来得到详细的交点信息.这些计算均是常见的计算机图形学与三维数学计算,比如线段与三角形求交,线段与面求交,线段与球体求交,线段与柱体或锥体求交,等等. 请参考所列出的计算机图形学书籍.
五,结论(Conclusion)
在本文中,我们介绍了一种行之有效的三维坐标拾取方法,主要使用GLU库中的实用工具实现.这种方法速度快,效率高,能在不必重新绘制对象的前提下完成拣选工作.对比OpenGL自带的拣选机制来看,RIP的确在各种方面均有一定的优势.
六,参考文献(Reference)
【1】《OpenGL
OpenGL
【2】《OpenGL
OpenGL
【3】《Computer
Donald
【4】《Computer
F.S.
Win32
OpenGL
0 0
- OpenGL中鼠标点取
- OpenGL中鼠标拾取
- opengl中鼠标拾取操作分析
- opengl中鼠标移动、单击、滚轮事件
- 鼠标取点——ginput()和getpts()详解
- Opencv鼠标响应(框选以及取点)
- 电子词典中鼠标取词的原理
- OpenGL中与鼠标的交互——点击鼠标左键,在鼠标处画点
- opencv中CvSeq的取点用法
- 对导入的图像,随机用鼠标在图像中取一个点,算这个点到点A、B、C、D四个点距离最小者,返回该最小距离
- matlab 用鼠标取ROI区域边界点坐标的一个小程序
- OpenGL中的鼠标控制
- OpenGL鼠标响应事件
- OpenGL-鼠标交互
- OpenGL-鼠标交互
- OpenGL鼠标旋转物体
- opengl 键盘和鼠标
- OpenGL鼠标轨迹球
- MAT Memory Analyzer Tool 插件安装(图解)
- 快速卸载ie9 ie10 ie11的方法
- Android InstanceState
- Eclipse编辑jsp不显示预览效果页面
- 分布式文件系统HDFS简介
- OpenGL中鼠标点取
- 用VS2012编译LibPng
- IOS kvo
- LuManager忘记后台登陆密码怎么办?
- Double Data Rate (DDR1)
- 分布式数据库HBase简介
- 学习的东西
- muduo源码分析--EventLoop 类的实现
- PHP oci8连接oracle数据库出现"ORA-24408: could not generate unique server group name"的解决办法