当前位置:   article > 正文

QPainter绘制雷达界面_qpainter绘制航迹卡顿

qpainter绘制航迹卡顿

功能实现

相较于上一版,这一版添加的功能有:
1、自适应窗口
2、扫描方式(圆周扫描、扇形扫描(指定起始角度和结束角度))
3、扫描方向(顺时针/逆时针)
4、目标点的批号
5、航迹线的绘制
6、方位,量程绘制
7、鼠标左键点击显示当前点相对于圆心的距离和方位
8、鼠标滚轮放大缩小。

9、封装接口。

定义的结构体

//枚举,扫描方式
enum ScanModeEnum{
    /// 圆周扫描
    CircleScan = 0,
    // 扇形扫描
    SectorScan
};
//枚举,扫描方向
enum ScanDirectionEnum{
    ClockWize = 0,                    //顺时针扫描
    AntiClockWize                   //逆时针扫描
};

//目标信息
struct  TargetInfo
{
    std::string sTargetId;          //批号
    std::string sTOA ;              //到达时间
    double dAzimuth ;               //方位
    double dPitch  ;                //俯仰
    double dDistance;               //距离
    double dFrequency ;             //射频
    double dPulseWidth ;            //脉宽
    double dPulseAmplitude ;       //脉幅(0.5-4。5)
    double dPRI ;                   //脉冲重复周期
    double dRCS ;                   //目标反射面积
    int  nAttr;                     //目标属性,0:我方;1:敌方;2:中立;3:不明

};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

定义的函数

//----------------------------------------------------
//  函数名称:Start
//  作用:开启雷达扫描定时器
//  参数:参数一:int类型,表示定时器间隔,默认为500ms
//-----------------------------------------------------
void Start(int nScanPeriod = 500);

//----------------------------------------------------
//  函数名称:Stop
//  作用:关闭雷达扫描定时器
//  参数:无参数
//-----------------------------------------------------
void Stop();

//----------------------------------------------------
//  函数名称:Init
//  作用:初始化雷达扫描基本数据
//  参数:参数一:int类型,表示最大探测距离,即雷达扫描图半径,默认300
//        参数二:int类型,表示等分数,即雷达扫描图圈数,默认5圈
//        参数三:int类型,扫描周期,默认500毫秒更新一次
//        参数四:int类型,扫描波束宽度,默认为10度
//        参数五:bool类型,是否显示轨迹,true表示显示轨迹
//-----------------------------------------------------
void Init(int nMaxDetectionDistance = 300,int nEqualParts = 5,int nScanPeriod = 500,
          int nBeamWidth = 10,bool bShowTrack = false);

//----------------------------------------------------
//  函数名称:SetShowTrack
//  作用:设置是否显示航迹(一个目标的各个坐标点之间的连线成为航迹)
//  参数:参数一:bool类型,是否显示轨迹,true表示显示轨迹
//-----------------------------------------------------
void SetShowTrack(bool bShowTrack = false);

//----------------------------------------------------
//  函数名称:SetScanPeriod
//  作用:设置扫描周期,停止-设置扫描周期-开始
//  参数:参数一:int类型,默认为500ms
//-----------------------------------------------------
void SetScanPeriod(int nScanPeriod = 500);

//----------------------------------------------------
//  函数名称:SetScanParams
//  作用:设置扫描参数 停止-设置扫描参数-开始
//  参数:参数一:ScanDirectionEnum类型,扫描方式
//        参数二:ScanModeEnum类型,扫描方向
//        参数三:int类型,扫描波束宽度,默认为10度
//        参数四:int类型,起始角,默认从0度开始
//        参数五:int类型,结束角,默认360度结束
//-----------------------------------------------------
void SetScanParams(ScanDirectionEnum scanDirection = ClockWize,ScanModeEnum scanMode = CircleScan,
                   int nBeamWidth = 10,int nStartAngle = 0,int nEndAngle = 360);

//----------------------------------------------------
//  函数名称:SetData
//  作用:设置单点坐标数据
//  参数:参数一:TargetInfo类型
//-----------------------------------------------------
void SetData(TargetInfo ti);

//----------------------------------------------------
//  函数名称:SetData
//  作用:设置多点坐标数据
//  参数:参数一:std::vector<TargetInfo>类型
//-----------------------------------------------------
void SetData(std::vector<TargetInfo>& ti);

//----------------------------------------------------
//  函数名称:SetColor
//  作用:设置航迹线颜色
//  参数:颜色的rgb数值
//-----------------------------------------------------
void SetColor(int r, int g, int b);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

效果图

扫描方式:圆周扫描

扫描方向:顺时针

显示目标航迹线,目标批号

在这里插入图片描述目标消失

在这里插入图片描述
扫描方式:扇形扫描

扫描方向:无(扇形扫描没有顺时针或逆时针)

扫描波束宽度:10度

扫描范围:0~90度

在这里插入图片描述
目标消失

在这里插入图片描述鼠标左键点击显示当前位置相对于圆心的距离和方位

在这里插入图片描述

gitee源码链接

https://gitee.com/hnSVN/radar_scanning_project

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/170628
推荐阅读
相关标签
  

闽ICP备14008679号