当前位置: 首页 > news >正文

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源码链接 功能实现 相较于上一版&#xff0c;这一版添加的功能有&#xff1a; 1、自适应窗口 2、扫描方式&#xff08;圆周扫描、扇形扫描&#xff08;指定起始角度和结束角度&#xff09;&#xff09; 3、扫描方向&#x…...

flutter:BottomNavigationBar和TabBar

区别 BottomNavigationBarr和TabBar都是用于创建导航栏的组件&#xff0c;但它们有一些区别。 位置不同&#xff1a;BottomNavigationBar通常位于屏幕底部&#xff0c;用于主要导航&#xff1b;而TabBar通常位于屏幕顶部或底部&#xff0c;用于切换不同的视图或页面。 样式不…...

【图论】Prim算法

一.介绍 Prim算法是一种用于解决最小生成树问题的贪心算法。最小生成树问题是指在一个连通无向图中找到一个生成树&#xff0c;使得树中所有边的权重之和最小。 Prim算法的基本思想是从一个起始顶点开始&#xff0c;逐步扩展生成树&#xff0c;直到覆盖所有顶点。具体步骤如下…...

第九十二回 在Flutter中解析JSON数据

文章目录 概念介绍解析方法convert库插件工具 示例代码经验总结 我们在上一章回中介绍了"对dio库进行封装"相关的内容&#xff0c;本章回中将介绍 如何在Flutter中解析JSON数据.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在前面章回中介绍了通…...

银河麒麟安装mysql数据库(mariadb)-银河麒麟安装JDK-银河麒麟安装nginx(附安装包)

银河麒麟离线全套安装教程&#xff08;手把手教程&#xff09; 1.银河麒麟服务器系统安装mysql数据库&#xff08;mariadb&#xff09; 2.银河麒麟桌面系统安装mysql数据库&#xff08;mariadb&#xff09; 3.银河麒麟服务器系统安装JDK 4.银河麒麟桌面系统安装JDK 5.银河麒麟…...

文件上传

js绕过 打开网页尝试上传一句话木马&#xff0c;发现只能上传图片文件 审计源代码&#xff0c;发现使用一个checkfile函数js对文件类型进行了屏蔽 于是我们修改网页代码&#xff0c;去除返回值的检查函数 checkFile() 上传成功&#xff0c;使用蚁剑连接 连接成功 .htaccess绕…...

tinkerCAD案例:22. Backpack Zipper Pull 背包拉链头

tinkerCAD案例&#xff1a;21. Custom Stamp 定制印章 原文 tinkerCAD案例&#xff1a;22. Backpack Zipper Pull 背包拉链头 Lesson Overview: 课程概述&#xff1a; Now we’re going to make a zipper pull! 现在我们要做一个拉链头&#xff01; Your backpack, howev…...

Unity 性能优化四:UI耗时函数、资源加载、卸载API

UI耗时函数 1.1 Canvas.SendWillRenderCanvases 这个函数是由于自身UI的更新&#xff0c;产生的耗时 1. 这里更新的是vertex 属性&#xff0c;比如 color、tangent、position、uv&#xff0c;修改recttransform的position、scale&#xff0c;rotation并不会导致顶点属性改变…...

【Linux】用户相关内容

如果命令ll 出现以上信息&#xff0c;UID为具体的数字&#xff0c;代表之前UID为502的用户被删除了。 更改目录或文件所属用户和所属组 在Linux中&#xff0c;创建一个文件时&#xff0c;该文件的拥有者都是创建该文件的用户。 更改所属用户 chown 用户名 文件名/目录名 更…...

基于多场景的考虑虑热网网损的太阳能消纳能力评估研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

【动态规划part10】| 121.买卖股票的最佳时机、122.买卖股票的最佳时机II

目录 &#x1f388;LeetCode121. 买卖股票的最佳时机 &#x1f388;LeetCode122.买卖股票的最佳时机II &#x1f388;LeetCode121. 买卖股票的最佳时机 链接&#xff1a;121.买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定…...

java 页面html常用写法总结

​(注意&#xff1a;本文章默认base html中已经引入bootstrap.min.css、style.css等css样式) input &#xff1a;输入标签 <#input required"必填" id"cycle" name"周期" underline"true" style"width:75%" itype&quo…...

阿里云服务器全方位介绍_优势_使用_租用费用详解

阿里云服务器全方位介绍包括云服务器ECS优势、云服务器租用价格、云服务器使用场景及限制说明&#xff0c;阿里云服务器网分享云服务器ECS介绍、个人和企业免费试用、云服务器活动、云服务器ECS规格、优势、功能及应用场景详细你说明&#xff1a; 目录 什么是云服务器ECS&…...

【Kafka】常用操作

1、基本概念 1. 消息&#xff1a; Kafka是一个分布式流处理平台&#xff0c;它通过消息进行数据的传输和存储。消息是Kafka中的基本单元&#xff0c;可以包含任意类型的数据。 2. 生产者&#xff08;Producer&#xff09;&#xff1a; 生产者负责向Kafka主题发送消息。它将消息…...

【Spring框架】SpringBoot配置文件

目录 配置文件作用application.properties中午乱码问题&#xff1a;配置文件里面的配置类型分类SpringBoot热部署properties基本语法properties配置文件的优缺点&#xff1a;yml配置文件说明yml基本语法配置对象properties VS yml 配置文件作用 整个项⽬中所有重要的数据都是在…...

部署问题集合(十八)Windows环境下使用两个Tomcat

下载Tomcat Tomcat镜像下载地址&#xff1a;https://mirrors.cnnic.cn/apache/tomcat/进入如下地址&#xff1a;zip的是压缩版&#xff0c;exe是安装版 修改第二个Tomcat配置文件 第一步&#xff1a;编辑conf/server.xml文件&#xff0c;修改三个端口&#xff0c;有些版本改…...

数据结构问答8

查找 1. 一些基本概念 关键字:能唯一标识该元素 查找:给定值k,在含n个元素的表中找出关键字==k的元素。找到返回其位置信息,否则返回-1。 动、静态查找表:查找同时对表进行修改(插入、删除等),相应的表为动态,否则为静态。 内、外查找:整个查找过程在内存中进行…...

行为型设计模式之观察者模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…...

vue2企业级项目(四)

vue2企业级项目&#xff08;四&#xff09; 路由设计&#xff0c;过场动画设计 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. 树的子结构 难度&#xff1a;中等 输入两棵二叉树 A 和 B&#xff0c;判断 B 是不是 A 的子结构。(约定空树不是任意一个树的子结构) B 是 A 的子结构&#xff0c; 即 A 中有出现和B相同的结构和节点值。 例如: 给定的树 A: 3/ \4 5/ \1 2给定的树 B&…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

Monorepo架构: Nx Cloud 扩展能力与缓存加速

借助 Nx Cloud 实现项目协同与加速构建 1 &#xff09; 缓存工作原理分析 在了解了本地缓存和远程缓存之后&#xff0c;我们来探究缓存是如何工作的。以计算文件的哈希串为例&#xff0c;若后续运行任务时文件哈希串未变&#xff0c;系统会直接使用对应的输出和制品文件。 2 …...

数据库——redis

一、Redis 介绍 1. 概述 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的、高性能的内存键值数据库系统&#xff0c;具有以下核心特点&#xff1a; 内存存储架构&#xff1a;数据主要存储在内存中&#xff0c;提供微秒级的读写响应 多数据结构支持&…...