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.
103 lines
2.6 KiB
103 lines
2.6 KiB
13 years ago
|
#include <qapplication.h>
|
||
|
#include <qsplitter.h>
|
||
|
#include <qtimer.h>
|
||
|
|
||
|
#include "autoswitch.h"
|
||
|
|
||
|
using namespace Qwt3D;
|
||
|
|
||
|
//--------------------------------------------------------------------
|
||
|
// autoswitch.cpp
|
||
|
//
|
||
|
// Demonstrates autoswitching axes with a cutted saddle as data
|
||
|
//--------------------------------------------------------------------
|
||
|
|
||
|
Plot::Plot(QWidget* pw, int updateinterval)
|
||
|
:SurfacePlot(pw)
|
||
|
{
|
||
|
setRotation(30,0,15);
|
||
|
setShift(0.1,0,0);
|
||
|
setZoom(0.8);
|
||
|
coordinates()->setNumberFont("Courier",8);
|
||
|
|
||
|
for (unsigned i=0; i!=coordinates()->axes.size(); ++i)
|
||
|
{
|
||
|
coordinates()->axes[i].setMajors(7);
|
||
|
coordinates()->axes[i].setMinors(4);
|
||
|
}
|
||
|
|
||
|
|
||
|
coordinates()->axes[Qwt3D::X1].setLabelString("x");
|
||
|
coordinates()->axes[Y1].setLabelString("y");
|
||
|
coordinates()->axes[Z1].setLabelString("z");
|
||
|
coordinates()->axes[X2].setLabelString("x");
|
||
|
coordinates()->axes[Y2].setLabelString("y");
|
||
|
coordinates()->axes[Z2].setLabelString("z");
|
||
|
coordinates()->axes[X3].setLabelString("x");
|
||
|
coordinates()->axes[Y3].setLabelString("y");
|
||
|
coordinates()->axes[Z3].setLabelString("z");
|
||
|
coordinates()->axes[X4].setLabelString("x");
|
||
|
coordinates()->axes[Y4].setLabelString("y");
|
||
|
coordinates()->axes[Z4].setLabelString("z");
|
||
|
|
||
|
|
||
|
QTimer* timer = new QTimer( this );
|
||
|
connect( timer, SIGNAL(timeout()), this, SLOT(rotate()) );
|
||
|
|
||
|
timer->start(updateinterval);
|
||
|
|
||
|
}
|
||
|
|
||
|
void Plot::rotate()
|
||
|
{
|
||
|
int prec = 3;
|
||
|
|
||
|
setRotation(
|
||
|
(int(prec*xRotation() + 2) % (360*prec))/double(prec),
|
||
|
(int(prec*yRotation() + 2) % (360*prec))/double(prec),
|
||
|
(int(prec*zRotation() + 2) % (360*prec))/double(prec)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
|
||
|
int main(int argc, char **argv)
|
||
|
{
|
||
|
QApplication a(argc, argv);
|
||
|
#if QT_VERSION < 0x040000
|
||
|
QSplitter* spl = new QSplitter(QSplitter::Horizontal);
|
||
|
#else
|
||
|
QSplitter* spl = new QSplitter(Qt::Horizontal);
|
||
|
#endif
|
||
|
Plot* plot1 = new Plot(spl,30);
|
||
|
plot1->setFloorStyle(FLOORISO);
|
||
|
plot1->setCoordinateStyle(BOX);
|
||
|
Saddle saddle(*plot1);
|
||
|
saddle.create();
|
||
|
plot1->setTitle("Autoswitching axes");
|
||
|
plot1->setBackgroundColor(RGBA(1,1, 157./255));
|
||
|
plot1->makeCurrent();
|
||
|
plot1->updateData();
|
||
|
plot1->updateGL();
|
||
|
|
||
|
|
||
|
Plot* plot2 = new Plot(spl,80);
|
||
|
plot2->setZoom(0.8);
|
||
|
Hat hat(*plot2);
|
||
|
hat.create();
|
||
|
plot2->setPlotStyle(HIDDENLINE);
|
||
|
plot2->setFloorStyle(FLOORDATA);
|
||
|
plot2->setCoordinateStyle(FRAME);
|
||
|
plot2->setBackgroundColor(RGBA(1,1, 157./255));
|
||
|
plot2->makeCurrent();
|
||
|
plot2->updateData();
|
||
|
plot2->updateGL();
|
||
|
|
||
|
|
||
|
#if QT_VERSION < 0x040000
|
||
|
a.setMainWidget(spl);
|
||
|
#endif
|
||
|
spl->resize(800,400);
|
||
|
spl->show();
|
||
|
return a.exec();
|
||
|
}
|