利用qwtplot3d绘制3维图形

本文根据http://blog.csdn.net/liyuanbhu/article/details/7585471,经亲测正确运行,于是将开发步骤拿出来和大家分享。

1) pro文件:

#-------------------------------------------------
#
# Project created by QtCreator 2017-07-30T21:16:12
#
#-------------------------------------------------

QT       += core gui opengl

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = qwt3d_readArray
TEMPLATE = app


SOURCES += main.cpp

HEADERS  +=


##############################################################

LIBS += -LC:/Qt/Qt5.5.0/5.5/msvc2012/lib -lqwtplot3dd
DEFINES  += QT_DLL QWT3D_DLL

CONFIG += opengl

2) main.cpp:

#include <QApplication>
#include <qwtplot3d/qwt3d_surfaceplot.h>

using namespace Qwt3D;

double** allocateData(int columns, int rows)
{
    double** data  = new double* [columns] ;
    for ( int i = 0; i < columns; ++i)
    {        data[i]  = new double [rows];    }
    return data;
}

void deleteData(double**data, int columns)
{
    for ( int i = 0; i < columns; i++)
    {         delete [] data[i];     }
    delete [] data;
}


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    SurfacePlot w;

    int x = 10, y = 20;
    double ** p = allocateData(10, 20);

    for(int k = 0; k < x; k++)
    {
        for(int l = 0; l < y; l++)
        {
            p[k][l] = l;
        }
    }
    w.loadFromData(p, x, y, 0, x, 0, y);

    deleteData(p, x);
    w.setRotation(30,0,15);
    w.setScale(1,1,1);
    w.setShift(0,0,0);
    w.setZoom(0.9);

    w.updateData();
    w.updateGL();
    w.show();

    return a.exec();
}

解释:

一、注意下面这句: p[k][l] = l;

k 是X方向的坐标,l 是Y方向坐标。

二、p必须是 double **类型,double[][]是不行的。

三、注意w.loadFromData(p,x,y,0,x,0,y);这句。最后的0,x表明X轴的量程,但并不是数组的列数!!你可以把量程改写为任何数字,显示的结果都是不变的,只不过坐标轴刻度变化而已。Y轴的情况也一样。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值