问题描述
我正在使用OpenGL + QT显示大量的点云。 附件中有一部分代码用来显示点云:
for (int i = 0; i < m_points.size(); ++i)
{
glVertex3d(m_points[i].GetX(),m_points[i].GetY(),m_points[i].GetZ());
}
glEnd();
glFlush();
一切正常,我也可以对其进行旋转,平移和缩放。
我的问题是现在如何通过使用鼠标单击来选择点的3D坐标,同时还要考虑缩放,旋转和平移。
我的想法是实现射线投射技术,但是我不确定这是最优化的方法。方法如下:
- 捕获鼠标单击坐标(X-Y归一化为[-1,1],所以我也猜成Z)
- 找到两个点A(X,Y,1)和B(X,Y,-1)
- 计算A和B之间的线
- 在点云中找到最接近AB线的点
还有其他人遇到过这种问题吗?您有什么建议或替代方法吗?
提前谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)