qwtplot3d 学习笔记 2

本文提供了一个使用QWT3D库根据曲面数据点绘制曲面的实例,包括数据分配、加载、缩放和显示过程。

本文最初写于 2010-08-20 于 sohu 博客,这次博客搬家一起搬到这里来。

版权所有,转载请注明出处。

 

下面给出一个根据曲面数据点画出曲面的例子。
关键点在于

loadFromData (double **data, unsigned int columns, unsigned int rows, double minx, double maxx, double miny, double maxy);
另外,
double** allocateData(int columns, int rows);
void deleteData(double**data, int columns) ;
这两个辅助函数是从QWT3D 的源代码找来的。原来是 NativeReader 类中的函数。很有用,就被拿出来了。

下面是代码:

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; 
} 
  
class Plot : public SurfacePlot 
{
public:    Plot();
};


Plot::Plot()
{
    int i,j;
    double x, y, z;
    double** data = allocateData(100, 100);
    for(i = 0; i< 100; i++)
    {
        for(j = 0; j< 100;j++)
        {
             x = (i - 50) / 5.0;
             y = (j - 50) / 5.0;
             z = hypot(x, y);
             data[i][j] = cos(z);
        }
    }
    loadFromData (data, 100, 100, -10, 10, -10, 10);
    deleteData(data, 100);
    setScale(1,1,5);
    setCoordinateStyle(BOX);
    updateData();
    updateGL();
}

int main(int argc, char **argv)
{
    QApplication a(argc, argv);
    Plot plot;
    plot.resize(800,600);
    plot.show();
    return a.exec();
}


评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值