13-Qt5数学三维绘图

13-Qt5数学三维绘图

1. 第三方库:mathgl

本期视频主要介绍使用mathgl库进行数学函数绘制,主要是三维函数绘图,网上还有关于QPlotQwt3D的教程,但是这个第三方库太旧已经很久没有更新了,使用时有很多问题,最终选择了mathgl

  • 下载地址:http://mathgl.sourceforge.net/doc_en/Download.html

    Windows系统环境使用的话直接下载LGPL版本调用动态库即可(支持Qt5.12.4,mingw7.3.0 64位版本),笔者试着像GSLOpenCV4那样手动编译,但是失败了,最后还是选择使用官方自己提供的动态库,如果是在Linux环境下是可以直接编译运行使用的。

  • 添加bin目录至环境变量

2.Qt工程导入mathgl

  • 复制mathgl文件夹至工程目录路径下

  • 编写.pri文件:

    # 宏定义项,指明采用maghtl
    
    DEFINES += MATHGL_DLL
    
    # 指明maghtl库所对应的头文件所在目录
    INCLUDEPATH += $$PWD/include
    
    # 链接静态库
    #CONFIG += static
    # 指明依赖库关系
    LIBS += -L$$PWD/lib/ -lmgl-qt5 -lmgl
    
  • pro文件导入mathgl.pri

  • 编写mainwindow.cpp代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QScrollArea>
#include <mgl2/qmathgl.h>
#include "mgl2/qt.h"
#include <QDebug>
#include <QLineEdit>

const char *expr;   // here `expr` is a global variable

int example(mglGraph *gr)
{
    gr->Rotate(20,40);
    gr->SetRanges(-3,3,-3,3,-1,1);
    //    gr->FSurf("sin((x^2+y^2))/sqrt(x^2+y^2+1)");
    //    qDebug() << expr << endl;
    gr->FSurf(expr);
    //    gr->Drop(mglPoint(0,0,3),mglPoint(0,0,-1),0.7,"b");
    gr->Box();
    gr->Axis();
    gr->Rotate(50,60);
    gr->Title("Sample Plot!","", -1);   // -1 is the font size of title
    return 0;
}

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QMGL = new QMathGL(ui->widget);
}


MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString str = ui->lineEdit->text();
    QByteArray byte = str.toLocal8Bit();
    expr = byte.data();     // update the variable `expr`, convert QString to const chat
    //    QMGL = new QMathGL(ui->widget);
    QMGL->setDraw(example);
    QMGL->adjust();
    //    QMGL->setGrid(true);
    QMGL->setZoom(true);
    QMGL->setRotate(true);
    QMGL->update();
}
  • 需要改为Release发布方式,因为调用的动态库是Release模式的,否则会报错

如果小伙伴们对文章内容有不理解的地方可以查看博主制作的相对应视频教程哦:
https://www.bilibili.com/video/av65138381

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值