#include <math.h>
#include <qapplication.h>
#include <qwt3d_surfaceplot.h>
#include <qwt3d_function.h>
#include <qwt3d_plot.h>
#include <qwt3d_parametricsurface.h>
#include <qwt3d_enrichment_std.h>
#include <QMessageBox>
#include "mylineplot3d.h"
#include "line3d.h"
using namespace Qwt3D;
class Rosenbrock:public Function{
public:
Rosenbrock(SurfacePlot & pw):Function(pw){}
Rosenbrock(){}
double operator ()(double x,double y){
return x*y/2;
return x*sin(y)* log(x) + y* cos(x);
return log(sin(x) * cos(y));
return log((1-x)*(1-x) + 100 * (y - x*x)*(y - x*x)) / 8;
}
};
mylineplot3d::mylineplot3d()
{
myxMax = 80;
myyMax = 60;
myzMax = 60;
int xscal = myxMax/myzMax;
int yscal = myyMax/myzMax;
myCurxMax = 0.0;
myCurxMin = 0.0;
myCuryMax = 0.0;
myCuryMin = 0.0;
myCurzMax = 0.0;
myCurzMin = 0.0;
setPlotStyle(Qwt3D::LINE3D_STYLE);
//setPlotStyle(Qwt3D::NOPLOT);
coordinates()->setAutoScale();
setTitle("A Simple SurfacePlot Demonstration");
setIsolines(5);
Rosenbrock rosenbrock;
coordinates()->setGridLines(true,true,Qwt3D::LEFT|Qwt3D::BACK|Qwt3D::FLOOR);
rosenbrock.setMesh(5,5);
rosenbrock.setDomain(0,myxMax,0,myyMax);
rosenbrock.setMinZ(0);
rosenbrock.setMaxZ(myzMax);
rosenbrock.create(*this);
setShift(1,0,0);
setRotation(30,0,15);
setScale(xscal,yscal,1);
setShift(0.15,0,0);
setZoom(1);
int axesCount = coordinates()->axes.size();
for (unsigned i=0; i!=axesCount; ++i)
{
coordinates()->axes[i].setMajors(6);
coordinates()->axes[i].setMinors(3);
}
coordinates()->axes[X1].setLabelString("x");
coordinates()->axes[Y1].setLabelString("y");
coordinates()->axes[Z1].setLabelString("z"); // Omega - see http://www.unicode.org/charts/
setCoordinateStyle(BOX);
updateData();
updateGL();
}
mylineplot3d::~mylineplot3d()
{
}
void mylineplot3d::init()
{
}
void mylineplot3d::createLines()
{
}
void mylineplot3d::keyPressEvent(QKeyEvent * e)
{
int c = e->key();
if(e->key() == Qt::Key_Up)
{
setShift(1,0,0);
setRotation(30,0,15);
setScale(1,1,1);
setShift(0.15,0,0);
setZoom(0.9);
}
else if(c == 65)
{
printf("set scale %f %f %f\n ",xScale(),yScale()*1.2,zScale());
setScale(1,1,zScale() * 1.2);
}
}
void mylineplot3d::tick()
{
updateData();
updateGL();
}
void mylineplot3d::setCurMaxMin(double xmin,double xmax,double ymin,double ymax,double zmin,double zmax)
{
if (xmin < myCurxMin)
{
myCurxMin = xmin;
}
if (xmax > myCurxMax)
{
myCurxMax = xmax;
}
if (ymin < myCuryMin)
{
myCuryMin = ymin;
}
if (ymax > myCuryMax)
{
myCuryMax = ymax;
}
if (zmin < myCurzMin)
{
myCurzMin = zmin;
}
if (zmax > myCurzMax)
{
myCurzMax = zmax;
}
if ((myCurxMax - myxMax) > 1 )
{
myxMax += 10;
myyMax = myxMax;
Rosenbrock rosenbrock;
rosenbrock.setMesh(5,5);
rosenbrock.setDomain(-10,myxMax,-10,myyMax);
rosenbrock.setMinZ(0);
rosenbrock.setMaxZ(myzMax);
rosenbrock.create(*this);
double _yScale = myxMax / myzMax;
_yScale = (myxMax / myzMax) > _yScale? (myyMax / myzMax): _yScale;
setScale(1,1,_yScale);
}
if ((myCuryMax - myyMax) > 1)
{
myyMax += 10;
myxMax = myyMax;
Rosenbrock rosenbrock;
rosenbrock.setMesh(5,5);
rosenbrock.setDomain(-10,myxMax,-10,myyMax);
rosenbrock.setMinZ(0);
rosenbrock.setMaxZ(myzMax);
rosenbrock.create(*this);
double _yScale = myxMax / myzMax;
_yScale = (myxMax / myzMax) > _yScale? (myyMax / myzMax): _yScale;
setScale(1,1,_yScale);
}
if (myCurzMax > myzMax)
{
myzMax += 10;
Rosenbrock rosenbrock;
rosenbrock.setMesh(5,5);
rosenbrock.setDomain(-10,myxMax,-10,myyMax);
rosenbrock.setMinZ(0);
rosenbrock.setMaxZ(myzMax);
rosenbrock.create(*this);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
qwtplot3D_3Dcurve.zip (45个子文件)
qwtplot3D
qwtplot3D
line3d.h 742B
simpleplotgui.cpp 1KB
ILD.pro 1KB
simpleplotgui.ui 417B
simpleplotgui.h 505B
include
qwt3d_io.h 4KB
qwt3d_colorlegend.h 2KB
qwt3d_io_gl2ps.h 3KB
gl2ps.h 7KB
qwt3d_plot.h 13KB
qwt3d_surfaceplot.h 4KB
qwt3d_coordsys.h 4KB
qwt3d_scale.h 3KB
qwt3d_io_reader.h 874B
qwt3d_autoscaler.h 1KB
qwt3d_mapping.h 497B
qwt3d_portability.h 2KB
qwt3d_graphplot.h 398B
qwt3d_function.h 2KB
qwt3d_autoptr.h 1KB
qwt3d_axis.h 6KB
qwt3d_enrichment_std.h 3KB
qwt3d_color.h 2KB
qwt3d_gridmapping.h 943B
mylineplot3d.h 756B
qwt3d_drawable.h 1KB
qwt3d_helper.h 517B
qwt3d_global.h 2KB
qwt3d_volumeplot.h 403B
qwt3d_parametricsurface.h 2KB
qwt3d_enrichment.h 2KB
qwt3d_openglhelper.h 3KB
qwt3d_multiplot.h 399B
qwt3d_label.h 2KB
qwt3d_types.h 9KB
line3d.cpp 1KB
main.cpp 183B
mainwindow.ui 1KB
mainwindow.cpp 604B
mainwindow.h 416B
lib
qwtplot3d.lib 204KB
qwtplot3d.dll 10.5MB
libqwtplot3d.a 1.66MB
mylineplot3d.h 766B
mylineplot3d.cpp 4KB
共 45 条
- 1
RockLch
- 粉丝: 9
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页