[QGLViewer]3D场景鼠标点击位置
重载鼠标事件:
void AxMapControl::mousePressEvent(QMouseEvent* e)
{
switch(currentTool)
{
case AX_DRAW_DIRECTION:
{
if (e->button() == Qt::LeftButton)
{
QPoint screenPt=e->pos();
qglviewer::Vec orig1, dir1;
camera()->convertClickToLine(screenPt, orig1, dir1);
double valueZ=0;
double a = ( valueZ- orig1.z) / dir1.z;
Pnt.z = valueZ;
Pnt.x = orig1.x + dir1.x * a;
Pnt.y = orig1.y + dir1.y * a;
//QMessageBox::information(this, "PickPoint", QString::number(Pnt.x) + "," + QString::number(Pnt.y));
}
break;
} }
QGLViewer::mousePressEvent(e);
}
重载绘制方法
void AxMapControl::draw()
{
if (pimpl->points.size()>0)
{
QMutexLocker locker(&pimpl->mutex_);
glColor3f(255/255.0, 69/255.0, 0.0);
draw_3d_points(pimpl->points);
}
if (pimpl->pointCloudOneFrame.size()>0)
{
QMutexLocker locker(&pimpl->mutex_);
glColor3f(255/255.0, 69/255.0, 0.0);
for (vector<Point3ds>::const_iterator it = pimpl->pointCloudOneFrame.begin();it != pimpl->pointCloudOneFrame.end(); ++it)
{
const Point3ds& p = *it;
if (p.size()>0)
{
draw_3d_points(p);
} }
}
if (!glImg.isNull())
{
glNormal3f(0.0, 0.0, 1.0);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 1.0-v_max);
glVertex2f(-u_max*ratio,-v_max);
glTexCoord2f(0.0, 1.0);
glVertex2f(-u_max*ratio, v_max);
glTexCoord2f(u_max, 1.0);
glVertex2f( u_max*ratio, v_max);
glTexCoord2f(u_max, 1.0-v_max);
glVertex2f( u_max*ratio,-v_max);
glEnd();
} if (currentTool==AX_DRAW_DIRECTION)
{
glBegin(GL_LINES);
glColor3f(255/255.0, 0/255.0, 0.0);
glVertex3fv(currentPose);
glVertex3fv(Pnt);
glEnd();
}
效果:

[QGLViewer]3D场景鼠标点击位置的更多相关文章
- Unity 弹出界面时屏蔽对3D场景的点击
注:这里的UI制作用的是NGUI插件 如题,在游戏中经常会遇到这种情况,场景中点击相关物体或者按钮弹出对应的2D界面,这时候除了2D界面上的可点击按钮等,应该屏蔽掉对3D场景的点击或者拖动事件. 在这 ...
- js 获取页面高度和宽度(兼容 ie firefox chrome),获取鼠标点击位置
<script> //得到页面高度 var yScroll = (document.documentElement.scrollHeight >document.documentEl ...
- u3d 鼠标点击位置,物体移动过去。 U3d mouse clicks position, objects move past.
u3d 鼠标点击位置,物体移动过去. U3d mouse clicks position, objects move past. 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱: ...
- 每天一个JavaScript实例-铺货鼠标点击位置并将元素移动到该位置
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- (二)Three光线检测-实现摄像机向鼠标点击位置滑动动画
(二)Three.js光线检测 摘要:使用three.js中的光线检测 Raycaster() ,实现一下效果: 通过点击处的坐标,修改摄像机位置,实现摄像机由远及近的过渡动态效果(由远景到近景) 1 ...
- C# winform 获取鼠标点击位置
说明:该篇随笔的代码内容并非出自本人,是在其他网站搜寻的,出处已经不记得了,本次随笔只为记录,目的帮助自己,帮助他人. 实现的原理也不做多的赘述,直接上代码. 第一个类是需要用到的Windows AP ...
- 3D场景鼠标点选择物体
对于以下几种选择: (1)点云: (2)线框: (3)网格: 针对以上准备三个函数: (1)获取点和线段最短距离函数: (2)获取线段和线段最短距离函数: (3)获取三角面片和线段最短距离函数: 算法 ...
- (原)python中matplot中获得鼠标点击的位置及显示灰度图像
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6182474.html 参考网址: http://matplotlib.org/examples/pyl ...
- 获取鼠标点击相对于Canva位置的2种方法
如果给Canvas添加 onmousedown事件,获取到的鼠标位置都是相对于当前文档的位置(x,y):
随机推荐
- SpringBoot(十五)-- 修改SpringBoot默认的错误页面
将以下代码放置到 main方法中.然后在resources 中的static中新建404.html.405.html,这里可以自定义错误编码,不局限于这两个. @Bean public Embedde ...
- 关于删除 hao123 主页设置的一点经验
:first-child { margin-top: 0px; } blockquote>:last-child { margin-bottom: 0px; } --> 说一说关于删除 h ...
- Shape使用
<shape> <!-- 实心 --> <solid android:color="#ff9d77"/> <!-- 渐变 --> & ...
- trace/trace2命令
send REPLICAT REP_1B trace2 /home/oracle/trace2.log send REPLICAT REP_1B trace /home/oracle/trace.lo ...
- cordova 插件 调用iOS社交化分享(ShareSDK:微信QQ分享)
1.github上已有的插件:https://github.com/nwpuhmz/ShareSDKPlugin 2.安装插件 cordova plugin add https://github.co ...
- 这些简单实用的Word技巧,你get了吗
快速选中多个对象 如果需要将某些文本设置成相同的格式,我们不需要一个个的设置,只要选中多个文本然后一起设置就可以了. 单击开始——选择编辑——选择——选择格式相似的文本 快速清除所有格式 那么当我们不 ...
- p740+5802+外置磁带机连线
扩展柜型号5802 主柜型号p740 下图是连接线说明 需要连12X 和 SPCN 单个磁带机SAS线两根连接单个PCI否则,磁带无法提供多个分区使用 通过HMC或者查看资源情况 HMC配置Lpar分 ...
- d4
# s = '132a4b5c'# s1 = s[0]+s[2]+s[1]# print(s1)#使用while和for循环分别打印字符串s=’asdfer’中每个元素.s = 'fkld'# for ...
- thymeleaf 标签的使用
1.html页面 2.<label class="control-label col-sm-1" for="vehiclesFormalities"> ...
- python web篇 创建数据库
python3 manage.py migrate ls sqlite3 使用单文件数据库,管理方便 运行测试 python manage.py runserver 输入http://127.0.0. ...