Advertisement

Qt中按逆时针对坐标进行排序

阅读量:

具体描述该问题如下:

通过切片操作后,获得了一组无序的交点数据,这些数据表现为一组离散且无序的坐标点。目标是将这些点连接起来形成轮廓线,并在qwtplot控件中进行展示;

网络上存在大量相关的算法实现,但几乎所有的内容都集中于凸多边形坐标点的排序方法。其中一个重要前提条件是这些点不能出现三点共线的情况,否则最终输出的结果将无法满足逆时针排序的要求。

http://www.cnblogs.com/dwdxdy/p/3230156.html 即为针对凸多边形排序的实现案例;

然而,在我所处理的坐标点中,必然存在三点共线的情形,因此上述排序方式显然无法适用。那么是否可以考虑利用斜率这一参数来进行处理呢?

关键在于,不应自行编写复杂的排序函数,而应充分利用现有的排序工具qSort;

以多边形的重心作为参考基准,计算各坐标点相对于重心的角度值,并依据角度大小对坐标进行排序。

mainwindow.h

复制代码
 #ifndef MAINWINDOW_H

    
 #define MAINWINDOW_H
    
  
    
 #include <QMainWindow>
    
 #include <QDebug>
    
 #include <cmath> 
    
 #include <QtAlgorithms> //数据排序
    
  
    
 n

全部评论 (0)

还没有任何评论哟~