QPainter绘制雷达界面

文章目录

  • 功能实现
  • 定义的结构体
  • 定义的函数
  • 效果图
  • gitee源码链接

功能实现

相较于上一版,这一版添加的功能有:
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:不明};

定义的函数

//----------------------------------------------------
//  函数名称: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);

效果图

扫描方式:圆周扫描

扫描方向:顺时针

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

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

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

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

扫描波束宽度:10度

扫描范围:0~90度

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

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

在这里插入图片描述

gitee源码链接

https://gitee.com/hnSVN/radar_scanning_project

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/13603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:ELK:日志分析系统(使用elasticsearch集群)

原理 1. 将日志进行集中化管理&#xff08;beats&#xff09; 2. 将日志格式化&#xff08;logstash&#xff09; 将其安装在那个上面就对那个进行监控 3. 对格式化后的数据进行索引和存储&#xff08;elasticsearch&#xff09; 4. 前端数据的展示&#xff08;kibana&…

11. Mybatis 的增删查改【万字详解】

目录 1. 数据的查找 select 1.1 查询所有数据 1.2 通过 id 进行查找 2. 插入数据 insert 3. 修改数据 update 4. 删除数据 delete 5. $ 和 # 的区别 5.1 SQL 注入 用户登录 6. Spring Boot 打印 SQL 日志 7. order by 排序 8. like 查询 9. 通过页面返回数据 10. …

【算法基础:动态规划】5.3 计数类DP(整数拆分、分拆数)

文章目录 例题&#xff1a;900. 整数划分解法1——完全背包解法2——分拆数⭐⭐⭐ 例题&#xff1a;900. 整数划分 https://www.acwing.com/problem/content/902/ 解法1——完全背包 容量是 n&#xff0c;物品的大小和价值是 1 ~ n 中的所有数字。 import java.util.*;pub…

【JAVASE】循环结构

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 循环 1. 循环结构1.1 while 循环1.2 bre…

招商银行秋招攻略和考试内容详解

招商银行秋招简介 招商银行是一家股份制商业银行&#xff0c;银行的服务理念已经深入人心&#xff0c;在社会竞争愈来愈烈的今天&#xff0c;招商银行的招牌无疑是个香饽饽&#xff0c;很多人也慕名而至&#xff0c;纷纷向招商银行投出了简历。那么秋招银行的秋招开始时间是多…

支持向量机(iris)

代码&#xff1a; import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn import svm import numpy as np# 定义每一列的属性 colnames [sepal-length, sepal-width, petal-length, petal-width, class] # 读取数据 iris pd.read_csv(data\\i…

消息队列总结(4)- RabbitMQ Kafka RocketMQ高性能方案

1.RabbitMQ的高性能解决方案 1.1 发布确认机制 RabbitMQ提供了3种生产者发布确认的模式&#xff1a; 简单模式&#xff08;Simple Mode&#xff09;&#xff1a;生产者发送消息后&#xff0c;等待服务器确认消息已经被接收。这种模式下&#xff0c;生产者发送消息后会阻塞&am…

论文笔记--Skip-Thought Vectors

论文笔记--Skip-Thought Vectors 1. 文章简介2. 文章概括3 文章重点技术3.1 Skip Thought Vectors3.2 词表拓展 4. 文章亮点5. 原文传送门6. References 1. 文章简介 标题&#xff1a;Skip-Thought Vectors作者&#xff1a;Ryan Kiros, Yukun Zhu, Ruslan Salakhutdinov, Rich…

JavaSE复盘2

Collection接口的接口对象集合&#xff08;单列集合&#xff09; List接口&#xff1a;元素按照先后有序保存&#xff0c;可重复 LinkList接口实现类&#xff0c;链表&#xff0c;随机访问&#xff0c;没有同步&#xff0c;线程不安全ArrayList接口实现类&#xff0c;数组&…

element时间选择器的默认值

概览&#xff1a;vue使用element组件&#xff0c;需要给时间选择器设置默认值&#xff0c;场景一&#xff1a;默认时间选择器&#xff0c;场景二&#xff1a;时间范围选择器&#xff0c;开始时间和结束时间。 一、默认时间选择器 实现思路&#xff1a; element组件的v-model绑…

忘记安卓图案/密码锁如何解锁?

如何解锁Android手机图案锁&#xff1f;如何删除忘记的密码&#xff1f;Android 手机锁定后如何重置&#xff1f;这是许多智能手机用户在网上提出的几个问题。为了回答这些问题&#xff0c;我们想出了一些简单有效的方法来解锁任何设备而不丢失数据。 忘记手机密码可能会令人恐…

web服务器(Tomcat)

目录 一、web服务器 1. 常见web服务器 2. web服务器简介 二、 Apache Tomcat服务器 1. Tomcat服务器简介 2. Tomcat服务器基本使用 3. 启动tomcat常见问题 &#xff08;1&#xff09;启动tomcat控制台乱码 &#xff08;2&#xff09;启动tomcat闪退问题 &#xff08;…

爬虫003_pycharm的安装以及使用_以及python脚本模版设置---python工作笔记021

这里我们用ide,pycharm来编码,看一看如何下载 这里我们下载这个社区办,这个是免费的,个人版是收费的 然后勾选以后 安装以后我们来创建一个项目 这里可以选择python的解释器,选择右边的... 这里我们找到我们自己安装的python解释器

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境4

7、使用串口工具 &#xff08;1&#xff09;连接硬件 连接 Type C 线&#xff0c; 一端电脑一端开发板 查看设备是否已经正确识别&#xff1a; 在 Windows 下可以打开设备管理器来查看 如果没有发现设备&#xff0c; 需要确认有没有装驱动以及接触是否良好 &#xff08;2&a…

【JVM】详解JVM的五大内存模型、可能出现的异常以及堆栈引用易错点

文章目录 1、堆(线程共享)2、方法区(线程共享)3、虚拟机栈&#xff08;线程私有&#xff09;4、本地方法栈(线程私有)5、程序计数器(线程私有)6、易错点 源自&#xff1a;深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践&#xff08;第3版&#xff09; 周志明 1、堆(线程…

C语言第十一课--------操作符的使用与分类-------基本操作

作者前言 作者介绍&#xff1a; 作者id&#xff1a;老秦包你会&#xff0c; 简单介绍&#xff1a; 喜欢学习C语言和python等编程语言&#xff0c;是一位爱分享的博主&#xff0c;有兴趣的小可爱可以来互讨 个人主页::小小页面 gitee页面:秦大大 一个爱分享的小博主 欢迎小可爱们…

css 书写规范!其他人总结!

CSS书写顺序 1.位置属性(position, top, right, z-index, display, float等) 2.大小(width, height, padding, margin) 3.文字系列(font, line-height, letter-spacing, color- text-align等) 4.背景(background, border等) 5.其他(animation, transition等) CSS书写规范 使用…

MyBatis-Plus自定义sql注入器

文章目录 一、前言二、MyBatis-Plus自定义sql注入器功能实现2.1、编写自定义sql类2.2、将自定义sql添加到BaseMapper中2.3、编写自己的sql注入器 一、前言 在日常开发过程中&#xff0c;我们可能会发现 MyBatis-Plus 提供的那些自带的 sql 语句无法满足我们的开发需求&#xf…

web自动化测试进阶篇05 ——— 界面交互场景测试

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

【Ajax】笔记-同源策略

同源策略(Same-Origin Policy)&#xff0c;是浏览器的一种安全策略 同源&#xff08;即url相同&#xff09;&#xff1a;协议、域名、端口号 必须完全相同。&#xff08;请求是来自同一个服务&#xff09; 跨域&#xff1a;违背了同源策略&#xff0c;即跨域。 ajax请求是遵循…