qwt的极坐标画雷达方向图

qwt的极坐标画天线方向图
请先看这位博主的专业文章,上面有权威讲解
在这里插入图片描述
方向图 曲线方程:matlab,引用博主的公式

 f=3e10;
 lamda=(3e8)/f;
 beta=2.*pi/lamda; 
 n=2; 
 t=0:0.01:2*pi;
 d=lamda/4; 
 W=beta.*d.*cos(t);
 z1=((n/2).*W)-n/2*beta*d;
 z2=((1/2).*W)-1/2*beta*d;
 F1=sin(z1)./(n.*sin(z2));
 K1=abs(F1);
 polar(t,K1);

开始绘画
qwt的极坐标:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QApplication>
#include <qwt_plot.h>
#include <qwt_polar_curve.h>
#include <qwt_polar_grid.h>
#include <qwt_polar_marker.h>
#include <qwt_polar_canvas.h>
#include <qwt_polar_renderer.h>
#include "PolarData.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
//整个if(1)在设置坐标
if(1)
{
        // 设置标题
       ui->qwtPolarPlot->setTitle(QStringLiteral("qwtPolarPlot"));
        //  设置背景颜色
       ui->qwtPolarPlot->setPlotBackground (QBrush( Qt::yellow, Qt::SolidPattern ));
           // 设置网格效果属性
       QwtPolarGrid *grid = new QwtPolarGrid();
       grid->setFont(QFont("Microsoft YaHei UI Light", 16, QFont::Bold));
       grid->setPen(QPen(Qt::blue, 1, Qt::SolidLine));

       // 设置坐标数值样式
       grid->setAxisPen(QwtPolar::AxisTop,QPen(Qt::red));
       grid->setAxisPen(QwtPolar::AxisRight,QPen(Qt::black));
       grid->attach(ui->qwtPolarPlot);

       // 添加数值(不设置网格,看不到效果)
       //圆环的角度范围,0-360度,间隔30度
       ui->qwtPolarPlot->setScale(QwtPolar::ScaleAzimuth, 0, 360, 30);  // 圆环数值范围
       //圆环半径0-100,间隔5
       ui->qwtPolarPlot->setScale(QwtPolar::ScaleRadius, 0, 100, 5);     // 半径范围
       //显示网格
       grid->showGrid(QwtPolar::AxisRight,false);
      //显示坐标轴
       grid->showAxis(QwtPolar::AxisLeft,true);
       grid->showAxis(QwtPolar::AxisTop,true);
       grid->showAxis(QwtPolar::AxisBottom,false);
  }
//整个if(2)在绘制第一条方向图
if(2)
{
      // 画第一条方向图
       QwtPolarCurve *polarCurve = new QwtPolarCurve();
       // polarCurve->setPen(QPen(Qt::darkGray,5));
       polarCurve->setPen(QPen(Qt::red,4));
      //PolarData存放第一条曲线
       //这个类PolarData,存放第二条方向图的数据
      这里这里这里就是下面那个类
       PolarData *data = new PolarData();
       polarCurve->setData(data);
       polarCurve->attach(ui->qwtPolarPlot);
}
//整个if(3)在绘制第二条方向图
if(3)
{
      // 画第二条方向图
        QwtPolarCurve *polarCurve1 = new QwtPolarCurve();
        polarCurve1->setPen(QPen(Qt::darkGray,5));
        polarCurve1->setPen(QPen(Qt::green,4));
      //这个类PolarData1,存放第二条方向图的数据
      这里这里这里就是下面那个类
        PolarData1 *data1 = new PolarData1();
        polarCurve1->setData(data1);
        
        polarCurve1->attach(ui->qwtPolarPlot);
}
}
MainWindow::~MainWindow()
{
    delete ui;
}

要新建一个类存放数据:重写3个虚函数
每画一条曲线,就新建一个类

#ifndef POLARDATA_H
#define POLARDATA_H
#include <qwt_plot.h>
#include <qwt_polar_curve.h>
#include <qwt_polar_grid.h>
#include <qwt_polar_marker.h>
#include <qwt_polar_canvas.h>
#include <qwt_polar_renderer.h>
#include <QVector>
#include <QMap>
#include<cmath>
#include<QtMath>
#include <QDebug>
//第一条方向图
class PolarData:public QwtSeriesData<QwtPointPolar>
{
  public:
	//这里的size是角度最大360
    virtual size_t size() const
    {
        return 360;
    }
	//这里很重要,在这里填充数据
    virtual QwtPointPolar sample(size_t size) const
    {
    	//下面是曲线
        double data;
        data = (size)/180.0 *M_PI;
        float t=data;

        double lamda=0.01;
        double beta=200*M_PI;
        int  n=10;                 //天线阵元数目
        double d=lamda/4;  //0.01/4         //假设阵元间距为波长的四分之一

        double  W=beta*d*cos(t);
        double  z1=5*(W-0.5*M_PI);
        double  z2=0.5*(W-0.5*M_PI);

        double F1=sin(z1)/(10*sin(z2));
        F1=abs(F1);         //函数对数组元素进行绝对值处理的函数
        int K3=F1*100; //我去掉了小数点取整

		//极坐标坐标点
        return QwtPointPolar(size,K3);
    }

    virtual QRectF boundingRect() const
    {
        return QRectF(5.0,5.0,10,10);
    }

};
//第二条方向图
class PolarData1:public QwtSeriesData<QwtPointPolar>
{
  public:

    virtual size_t size() const
    {
        return 540;
    }

    virtual QwtPointPolar sample(size_t size) const
    {
        double data;
        data = (size-180)/180.0 *M_PI;
        float t=data;

        double lamda=0.01;
        double beta=200*M_PI;
        int  n=16;                 //天线阵元数目
        double d=lamda/4;  //0.01/4         //假设阵元间距为波长的四分之一

        double  W=beta*d*cos(t);
        double  z1=5*(W-0.5*M_PI);
        double  z2=0.5*(W-0.5*M_PI);

        double F1=sin(z1)/(10*sin(z2));
        F1=abs(F1);         //函数对数组元素进行绝对值处理的函数
        int K3=F1*100; //我去掉了小数点取整
        return QwtPointPolar(size,K3);
    }

    virtual QRectF boundingRect() const
    {
        return QRectF(5.0,5.0,10,10);
    }

};
#endif // POLARDATA_H

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

node.js漏洞总结

js开发的web应用和php/Java最大的区别就是js可以通过查看源代码的方式查看到编写的代码&#xff0c;但是php/Java的不能看到&#xff0c;也就是说js开发的web网页相当于可以进行白盒测试。 流行的js框架有&#xff1a; 1. AngularJS 2. React JS 3. Vue 4. jQuery 5. Backbone…

ChatGPT 和文心一言 | 两大AI助手哪个更胜一筹

欢迎来到英杰社区&#xff1a; https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区&#xff1a; https://bbs.csdn.net/topics/617897397 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff…

C++ qt标题栏组件绘制

本博文源于笔者在学习C qt制作的标题栏组件&#xff0c;主要包含了&#xff0c;最小化&#xff0c;最大化&#xff0c;关闭。读者在看到这篇博文的时候&#xff0c;可以直接查看如何使用的&#xff0c;会使用了&#xff0c;然后进行复制粘贴源码部分即可。 问题来源 想要制作…

JS-M端事件

移动端也有自己独特的地方。比如触屏事件touch&#xff08;也称触摸事件&#xff09;&#xff0c;Android和IOS都有。 1&#xff09;touch对象代表一个触摸点。触摸点可能是一根手指&#xff0c;也可能是一根触摸笔。触屏事件可响应用户手指&#xff08;或触控笔&#xff09;对…

mysql高可用设计,主库挂了怎么办

实际上高可用就是系统能提供的一种无故障服务能力&#xff0c;就是避免宕机出现不能服务的场景。 首先来说对于无状态服务的高可用设计是比较简单的&#xff0c;发现有不能用的就直接停了换别的服务器就行&#xff0c;比如Nginx。这里说一下无状态服务就是不需要记录你的状态、…

redo log

问&#xff1a;redo log是什么&#xff1f;拿来干嘛的&#xff1f; 现象&#xff1a;如果提交一个事务&#xff0c;就刷新一次磁盘。那么会存在如下问题&#xff1a; 1、单改一条记录&#xff0c;至少都是刷新一个页&#xff0c;造成大量的磁盘I/O浪费 2、随机I/O比连续I/O慢&a…

智能洗地机哪款好用?全能型洗地机推荐

家庭清洁产品是我们生活中熟悉的存在&#xff0c;对于注重清洁的家庭来说&#xff0c;在选择清洁用品时不可避免地会考虑洗地机。相比传统的拖把&#xff0c;使用洗地机确实给人更好的体验。从理论上来说&#xff0c;洗地机作为一种吸尘和拖地一体的清洁工具&#xff0c;能够应…

智能照明控制系统智能化管理

传统的照明控制系统和智能照明控制系统之间的区别&#xff1a; 传统的照明控制系统开关方式比较单一只有“开”和“关”&#xff1a;但是智能那个照明控制系统可以采用“调光模式”通过光源的调光适应不同使用场合下的不同的灯光效果&#xff0c;能够营造出不同场景的氛围感。…

(2024,-DAE,去噪 DM,去噪 AE,影响 SSRL 性能的关键成分,PCA 潜在空间)解构自监督学习的去噪扩散模型

Deconstructing Denoising Diffusion Models for Self-Supervised Learning 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 4. 解构去噪扩散模型 4.1. 用于自监督学习的重新…

【Java面试】redis

目录 Redis 介绍Reids常用5种数据类型一个字符串类型的值能存储最大容量是多少&#xff1f;Redis 有哪些适合的场景&#xff1f;Redis的并发竞争问题如何解决?什么是缓存穿透&#xff1f;如何避免&#xff1f;什么是缓存雪崩&#xff1f;何如避免&#xff1f;Redis 中设置过期…

VISA 通过USB的接口控制 万用表,指令说明

//申明一个万用表设备&#xff0c;以及初始化配置 var session (Ivi.Visa.IMessageBasedSession)Ivi.Visa.GlobalResourceManager.Open(ID_34461A); session.FormattedIO.WriteLine("CONF:VOLT:DC"); session.FormattedIO.WriteLine("VOLT:DC:NPLC 10"); …

Linux的文件系统、软硬链接、动静态库

前要&#xff1a;本次我想给您带来关于 IO 和文件的知识&#xff0c;而文件在本系列中分为内存上的文件和磁盘上的文件。 1.文件概念 1.1.文件读写 在谈及系统接口之前&#xff0c;我们先来从 C 语言的角度来谈及一些前要知识&#xff0c;以辅助我们后续来理解系统 IO。 我们…

Web3:B站chainlink课程Lesson5遇到的小坑汇总

ethers代码 我用的ethers.js 6 &#xff0c;和视频里一样用的是5的不用看代码部分 ethers.providers.JsonRpcProvider("server") //无了 ethers.JsonRpcProvider("server") //现在的wallet.getTransactionCount() //无了 wallet.getNonce() //现在的Big…

【代码】使用预训练的语义分割网络

P274书上的代码&#xff0c;这里是从ipynb文件中按顺序复制来的&#xff1a; 使用到的图片如下&#xff1a; 代码&#xff1a; import numpy as np import pandas as pd import matplotlib.pyplot as plt import PIL import torch from torchvision import transforms impor…

【算法与数据结构】377、LeetCode组合总和 Ⅳ

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;本题明面上说是组合&#xff0c;实际上指的是排列。动态规划排列组合背包问题需要考虑遍历顺序。 d p …

CentOS7服务器的安装配置连接客户端Xshell进行使用

目录 一. CentOS7的安装【在虚拟机中】 二. 查看设置IP地址 三. 安装并连接客户端软件Xshell 3.1 安装Xshell 3.2 xshell连接centos7服务器 四. 切换国内源 一. CentOS7的安装【在虚拟机中】 首先创建一个虚拟机&#xff0c; 这个没什么好说的&#xff0c;基本上都是下…

【linux-虚拟化】 SR-IOV技术

文章目录 参考1. 什么是 SR-IOV?1.2. 将 SR-IOV 网络设备附加到虚拟机1.3. SR-IOV 分配支持的设备 参考 管理 SR-IOV 设备 1. 什么是 SR-IOV? 单根 I/O 虚拟化(SR-IOV)是一种规范&#xff0c;它允许单个 PCI Express(PCIe)设备向主机系统呈现多个独立的 PCI 设备&#xff…

【免费分享】全国道路网(分级)矢量数据

纯爱好 个人分享 数据详情 全国道路网&#xff08;分级&#xff09;矢量数据 地址&#xff1a;资源下载-数字地球开放平台 (geovisearth.com) 数据属性 数据名称&#xff1a;全国道路网&#xff08;分级&#xff09;矢量数据 道路类型分类&#xff1a;高速、国道、省道、铁…

科技云报道:金融大模型落地,还需跨越几重山?

科技云报道原创。 时至今日&#xff0c;大模型的狂欢盛宴仍在持续&#xff0c;而金融行业得益于数据密集且有强劲的数字化基础&#xff0c;从一众场景中脱颖而出。 越来越多的公司开始布局金融行业大模型&#xff0c;无论是乐信、奇富科技、度小满、蚂蚁这样的金融科技公司&a…

SpringMVC 环境搭建入门

SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架&#xff0c;属于SpringFrameWork 的后续产品&#xff0c;已经融合在 Spring Web Flow 中。 SpringMVC 已经成为目前最主流的MVC框架之一&#xff0c;并且随着Spring3.0 的发布&#xff0c;全面…