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
相关文章:
QPainter绘制雷达界面
文章目录 功能实现定义的结构体定义的函数效果图gitee源码链接 功能实现 相较于上一版,这一版添加的功能有: 1、自适应窗口 2、扫描方式(圆周扫描、扇形扫描(指定起始角度和结束角度)) 3、扫描方向&#x…...
flutter:BottomNavigationBar和TabBar
区别 BottomNavigationBarr和TabBar都是用于创建导航栏的组件,但它们有一些区别。 位置不同:BottomNavigationBar通常位于屏幕底部,用于主要导航;而TabBar通常位于屏幕顶部或底部,用于切换不同的视图或页面。 样式不…...
【图论】Prim算法
一.介绍 Prim算法是一种用于解决最小生成树问题的贪心算法。最小生成树问题是指在一个连通无向图中找到一个生成树,使得树中所有边的权重之和最小。 Prim算法的基本思想是从一个起始顶点开始,逐步扩展生成树,直到覆盖所有顶点。具体步骤如下…...
第九十二回 在Flutter中解析JSON数据
文章目录 概念介绍解析方法convert库插件工具 示例代码经验总结 我们在上一章回中介绍了"对dio库进行封装"相关的内容,本章回中将介绍 如何在Flutter中解析JSON数据.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在前面章回中介绍了通…...
银河麒麟安装mysql数据库(mariadb)-银河麒麟安装JDK-银河麒麟安装nginx(附安装包)
银河麒麟离线全套安装教程(手把手教程) 1.银河麒麟服务器系统安装mysql数据库(mariadb) 2.银河麒麟桌面系统安装mysql数据库(mariadb) 3.银河麒麟服务器系统安装JDK 4.银河麒麟桌面系统安装JDK 5.银河麒麟…...
文件上传
js绕过 打开网页尝试上传一句话木马,发现只能上传图片文件 审计源代码,发现使用一个checkfile函数js对文件类型进行了屏蔽 于是我们修改网页代码,去除返回值的检查函数 checkFile() 上传成功,使用蚁剑连接 连接成功 .htaccess绕…...
tinkerCAD案例:22. Backpack Zipper Pull 背包拉链头
tinkerCAD案例:21. Custom Stamp 定制印章 原文 tinkerCAD案例:22. Backpack Zipper Pull 背包拉链头 Lesson Overview: 课程概述: Now we’re going to make a zipper pull! 现在我们要做一个拉链头! Your backpack, howev…...
Unity 性能优化四:UI耗时函数、资源加载、卸载API
UI耗时函数 1.1 Canvas.SendWillRenderCanvases 这个函数是由于自身UI的更新,产生的耗时 1. 这里更新的是vertex 属性,比如 color、tangent、position、uv,修改recttransform的position、scale,rotation并不会导致顶点属性改变…...
【Linux】用户相关内容
如果命令ll 出现以上信息,UID为具体的数字,代表之前UID为502的用户被删除了。 更改目录或文件所属用户和所属组 在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户。 更改所属用户 chown 用户名 文件名/目录名 更…...
基于多场景的考虑虑热网网损的太阳能消纳能力评估研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
【动态规划part10】| 121.买卖股票的最佳时机、122.买卖股票的最佳时机II
目录 🎈LeetCode121. 买卖股票的最佳时机 🎈LeetCode122.买卖股票的最佳时机II 🎈LeetCode121. 买卖股票的最佳时机 链接:121.买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定…...
java 页面html常用写法总结
(注意:本文章默认base html中已经引入bootstrap.min.css、style.css等css样式) input :输入标签 <#input required"必填" id"cycle" name"周期" underline"true" style"width:75%" itype&quo…...
阿里云服务器全方位介绍_优势_使用_租用费用详解
阿里云服务器全方位介绍包括云服务器ECS优势、云服务器租用价格、云服务器使用场景及限制说明,阿里云服务器网分享云服务器ECS介绍、个人和企业免费试用、云服务器活动、云服务器ECS规格、优势、功能及应用场景详细你说明: 目录 什么是云服务器ECS&…...
【Kafka】常用操作
1、基本概念 1. 消息: Kafka是一个分布式流处理平台,它通过消息进行数据的传输和存储。消息是Kafka中的基本单元,可以包含任意类型的数据。 2. 生产者(Producer): 生产者负责向Kafka主题发送消息。它将消息…...
【Spring框架】SpringBoot配置文件
目录 配置文件作用application.properties中午乱码问题:配置文件里面的配置类型分类SpringBoot热部署properties基本语法properties配置文件的优缺点:yml配置文件说明yml基本语法配置对象properties VS yml 配置文件作用 整个项⽬中所有重要的数据都是在…...
部署问题集合(十八)Windows环境下使用两个Tomcat
下载Tomcat Tomcat镜像下载地址:https://mirrors.cnnic.cn/apache/tomcat/进入如下地址:zip的是压缩版,exe是安装版 修改第二个Tomcat配置文件 第一步:编辑conf/server.xml文件,修改三个端口,有些版本改…...
数据结构问答8
查找 1. 一些基本概念 关键字:能唯一标识该元素 查找:给定值k,在含n个元素的表中找出关键字==k的元素。找到返回其位置信息,否则返回-1。 动、静态查找表:查找同时对表进行修改(插入、删除等),相应的表为动态,否则为静态。 内、外查找:整个查找过程在内存中进行…...
行为型设计模式之观察者模式【设计模式系列】
系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everythi…...
vue2企业级项目(四)
vue2企业级项目(四) 路由设计,过场动画设计 1、router 项目下载依赖 npm install --save vue-router3.5.3src目录下创建router/index.js import Vue from "vue"; import Router from "vue-router";Vue.use(Router);con…...
(树) 剑指 Offer 26. 树的子结构 ——【Leetcode每日一题】
❓剑指 Offer 26. 树的子结构 难度:中等 输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。(约定空树不是任意一个树的子结构) B 是 A 的子结构, 即 A 中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3/ \4 5/ \1 2给定的树 B&…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
