日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[QGLViewer]3D场景鼠标点击位置

發布時間:2025/3/8 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [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场景鼠标点击位置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。