MathGL 绘图库在Linux上的安装和应用

1、简单的说,mathgl是一个高质量的绘图库,支持Linux和Windows操作系统。可以控制台使用,也可以集成到其他程序中,据说速度还可以。

2、开源、目前还在更新。

MathGL 绘图库在Linux上的安装和应用

3、安装,这里以Ubuntu18 为例。Debian操纵一致。

sudo apt install build-essential
sudo apt install libmgl-dev

4、验证和使用。

(1)C++的直接调用。过程就是新建CPP文件,输入代码,编译,运行。

#include <mgl2/mgl.h>

 int main() {
      mglGraph gr;
      gr.Title("MathGL Demo");
      gr.SetOrigin(0, 0);
      gr.SetRanges(0, 10, -2.5, 2.5);
      gr.FPlot("sin(1.7*2*pi*x) + sin(1.9*2*pi*x)", "r-2");
      gr.Axis();
     gr.Grid();
     gr.WriteFrame("mgl_example.png");
 }

运行代码并不会显示窗口,而是在代码目录生成一个名为 mgl_example.png 的图片,打开图片。

MathGL 绘图库在Linux上的安装和应用

(2)Qt中调用。这里仅展示一种方法,老王也还没深入研究。。。

新建Qt基本UI工程,然后修改为以下。

//添加图例int example(mglGraph *gr)
{

    gr->Rotate(60,40);
    gr->SetRanges(50,0,0,90,0,50);
    gr->Axis();
    gr->Box();
    gr->Grid();
    int val;
    mglPoint a, b;
    //for(int i = 0; i < 50; i++){

        for(int n = 0; n < 90;n++){
            val = rand()%15;
            a.Set(i,n,0);
            b.Set(i,n,val);
            if(val < 10){
                gr->Line(a,b,"b3",1);
            }
            if(val >= 10 && val <= 25){
                gr->Line(a,b,"g3",1);
            }
            if(val >25){
                gr->Line(a,b,"r3",1);
            }
        }
    //}
        i += 1;
        if(i > 50) i = 0;
}
//设置绘图MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    qgr = new QMathGL(ui->widget); //指定继承

    qgr->setDraw(example);   // 设置绘图,传入函数作为参数
    qgr->adjust();           // 自适应绘图
    qgr->setZoom(true);      //
    qgr->setRotate(true);    //设置可旋转

    qgr->update();
}

运行后可以看到一个3D的图表,这是老王的一个测试用例。

MathGL 绘图库在Linux上的安装和应用

这个3D的图标支持鼠标动作,可以放大缩小,视角变换。视频号 懂一点技术的老王 中可以看鼠标的响应效果。

MathGL 绘图库在Linux上的安装和应用

5、 基础部分就到这里。

原文链接: https://www.cnblogs.com/BinWin/p/15784832.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/184643

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 上午10:46
下一篇 2023年2月12日 上午10:46

相关推荐