现在通过gluProject()函数得到了已知点云在经过矩阵变换后的winx,winy,winz,在屏幕上做已封闭曲线圈出了一系列点,目前我采用平面的判别方法将曲线包围的点找出,但是由于三维点云中有可能有不同的点会投影到屏幕上同一个 winx,winy。如果我只想取到最上层的那一系列点,即被遮挡部分的点略去,应通过什么方法呢?

解决方案 »

  1.   


    做法 
    1 在世界坐标中作射线,射线端点为opengl实景体对应于鼠标的那个点,方向为垂直于视线的方向(方向多数这样的,特殊情况例外)
    2  求射线与云点的距离,若距离小于指定值,算是选中。 
    3  对选中的点在求到射线端点的距离
    4 若有多选 距离小的就是
      

  2.   

    晕倒 不现实的话 考虑设计硬件电路实现把  
    把上百万个点 gluProject一下 从三维空间到显示器现实???要改变效率 也不是这个地方改进算法。指定值就是经验值 考虑点直径的大小等。