Chinaunix首页 | 论坛 | 博客
  • 博客访问: 400039
  • 博文数量: 158
  • 博客积分: 1227
  • 博客等级: 少尉
  • 技术积分: 946
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-20 16:19
文章分类
文章存档

2016年(1)

2015年(1)

2012年(107)

2011年(49)

分类: IT业界

2012-04-11 14:26:56

原文地址:http://lybhu.blog.sohu.com/158354108.html
下面给出一个根据曲面数据点画出曲面的例子。
关键点在于
(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();
}


阅读(2294) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~