qt编写的点云显示工具可拖动缩放旋转

 

 开发环境:qtcreator4.8.2, qt版本5.12.2

本例程通过重写QGLWidget类实现点云的显示,并可对点云进行移动,缩放,旋转的操作。

按住鼠标左键移动可实现旋转,按住鼠标右键移动可实现点云的拖动,滚动滚轮实现点云的缩放。

点云创建过程如下:

GLuint GLBox::makeObject()
{
    GLuint list;

    list = glGenLists(1);

    glNewList(list, GL_COMPILE);

    qglColor(Qt::gray);//物体,点的颜色// Shorthand for glColor3f or glIndex

    //test
    glPointSize(2.0);
    glBegin(GL_POINTS);
    for(int i=0;i<100;i++)
    {
        for(int j=0;j<100;j++)
        {
            int x = j-50;
            int y = i-50;
            int z = (i*100+j)%3;
            glVertex3i(x,y,z);
        }
    }
    glEnd();

    //红色轴是X轴,绿色是Y轴,蓝色是Z轴
    glBegin(GL_LINES);
    glColor3f(1.0f,0.0,0.0);
    glVertex3f(0.0,0.0,0.0);
    glVertex3f(2,0.0,0.0);
    glEnd();
    glBegin(GL_LINES);
    glColor3f(0.0,1.0,0.0);
    glVertex3f(0.0,0.0,0.0);
    glVertex3f(0.0,2,0.0);
    glEnd();
    glBegin(GL_LINES);
    glColor3f(0.0,0.0,1.0);
    glVertex3f(0.0,0.0,0.0);
    glVertex3f(0.0,0.0,2);
    glEnd();
    //test
    glEndList();
    return list;
}

 点云显示代码如下:

void GLBox::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT);

    glLoadIdentity();
    glTranslatef(m_ptOffsetRBt.x(), -m_ptOffsetRBt.y(), -10.0);//平移矩阵
    glScalef(m_scale, m_scale, m_scale);//x,y,z分别为模型在x,y,z轴方向的缩放比。如glScalef(1.0f,1.0f,-1.0f);将模型关于z轴翻转了180°(即关于xy轴所在平面对称);

    glRotatef((float)(m_ptOffsetLBt.toPoint().y()%360), 1.0, 0.0, 0.0);
//    该函数用来设置opengl中绘制实体的自转方式,即物体如何旋转
//    angle:旋转的角度,单位为度;
//    x,y,z表示绕着那个轴旋转,如果取值都为0,则表示默认的绕x轴逆时针旋转。
//    x,y为0,z不为0时,表示绕z轴旋转;x,z为0,y不为0时,表示绕y轴旋转;y,z为0,x不为0,表示绕x轴旋转。
    glRotatef((float)(m_ptOffsetLBt.toPoint().x()%360), 0.0, 1.0, 0.0);
    //glRotatef(m_zRot, 0.0, 0.0, 1.0);

    glCallList(m_object);
}

源码链接:qt编写的点云显示工具可拖动缩放旋转-制造文档类资源-CSDN下载

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GreenHandBruce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值