You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
2.9 KiB

#include <qlayout.h>
#include <qslider.h>
#include <qcheckbox.h>
#include <qradiobutton.h>
#include "enrichmentmainwindow.h"
#include "enrichments.h"
#include "../../../include/qwt3d_function.h"
using namespace Qwt3D;
class Hat : public Function
{
public:
Hat(SurfacePlot& pw)
:Function(pw)
{
}
double operator()(double x, double y)
{
double ret = 1.0 / (x*x+y*y+0.5);
return ret;
}
QString name() const {return "$\\frac{1}{x^2+y^2+\\frac{1}{2}}$";}
};
Hat* hat;
EnrichmentMainWindow::EnrichmentMainWindow( QWidget* parent )
: DummyBase( parent )
{
#if QT_VERSION < 0x040000
setCaption("enrichment");
QGridLayout *grid = new QGridLayout( frame, 0, 0 );
#else
setupUi(this);
QGridLayout *grid = new QGridLayout( frame);
#endif
plot = new SurfacePlot(frame);
grid->addWidget( plot, 0, 0 );
plot->setTitle("Bar Style (Vertex Enrichment)");
plot->setTitleFont("Arial",12);
plot->setZoom(0.8);
plot->setRotation(30,0,15);
plot->setCoordinateStyle(BOX);
bar = (Bar*)plot->setPlotStyle(Bar(0.007,0.5));
hat = new Hat(*plot);
hat->setMesh(23,21);
hat->setDomain(-1.8,1.7,-1.6,1.7);
hat->create();
for (unsigned i=0; i!=plot->coordinates()->axes.size(); ++i)
{
plot->coordinates()->axes[i].setMajors(5);
plot->coordinates()->axes[i].setMinors(4);
}
//plot->setMeshLineWidth(1);
plot->coordinates()->setGridLinesColor(RGBA(0,0,0.5));
plot->coordinates()->setLineWidth(1);
plot->coordinates()->setNumberFont("Courier",8);
plot->coordinates()->adjustNumbers(5);
setColor();
plot->updateData();
plot->updateGL();
levelSlider->setValue(50);
level_ = 0.5;
width_ = 0.007;
connect( levelSlider, SIGNAL(valueChanged(int)), this, SLOT(setLevel(int)) );
//connect( barBtn, SIGNAL(clicked()), this, SLOT(barSlot()) );
//connect( sliceBtn, SIGNAL(clicked()), this, SLOT(sliceSlot()) );
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_LINE_SMOOTH);
}
EnrichmentMainWindow::~EnrichmentMainWindow()
{
delete hat;
}
void EnrichmentMainWindow::setColor()
{
Qwt3D::ColorVector cv;
RGBA rgb;
int i = 252;
int step = 4;
while (i>=0)
{
rgb.r = i/255.; rgb.g=(i-60>0) ? (i-60)/255.:0;rgb.b=0;
// rgb.a = 0.2;
cv.push_back(rgb);
if (!--step)
{
i-=4;
step=4;
}
}
StandardColor* col = new StandardColor(plot);
col->setColorVector(cv);
plot->setDataColor(col);
}
void EnrichmentMainWindow::setLevel(int i)
{
level_ = 1 - i / 100.;
bar->configure(width_,level_);
plot->updateData();
plot->updateGL();
}
void EnrichmentMainWindow::setWidth(int i)
{
width_ = i / 20000.;
bar->configure(width_,level_);
plot->updateData();
plot->updateGL();
}
void EnrichmentMainWindow::barSlot()
{
Bar b(width_,level_);
bar = (Bar*)plot->setPlotStyle(b);
plot->updateData();
plot->updateGL();
}