diff options
Diffstat (limited to 'src/gui/GLWidget.cc')
-rw-r--r-- | src/gui/GLWidget.cc | 232 |
1 files changed, 0 insertions, 232 deletions
diff --git a/src/gui/GLWidget.cc b/src/gui/GLWidget.cc deleted file mode 100644 index 0653ef2..0000000 --- a/src/gui/GLWidget.cc +++ /dev/null @@ -1,232 +0,0 @@ -#include <QtOpenGL> -#include <math.h> -#include <iostream> -#include "GLWidget.h" -#include "StraightElement.h" -#include "ElementRenderer.h" -#include "CurvedElement.h" -#include "Dipole.h" -#include "util.h" -#include "Vector3D.h" - -using namespace vhc; - - -int keys; - -void axes() { - glBegin(GL_LINES); - glColor3d(1, 0, 0); - glVertex3d(0, 0, 0); // origin of the line - glVertex3d(1, 0, 0); // ending point of the line - glEnd(); - glBegin(GL_LINES); - glColor3d(0, 1, 0); - glVertex3d(0, 0, 0); // origin of the line - glVertex3d(0, 1, 0); // ending point of the line - glEnd(); - glBegin(GL_LINES); - glColor3d(0, 0, 1); - glVertex3d(0, 0, 0); // origin of the line - glVertex3d(0, 0, 1); // ending point of the line - glEnd(); -} - -void grid() { - int size = 10; - glColor3d(0.5, 0.5, 0.5); - glBegin(GL_LINES); - for (int i = 0; i <= 2 * size; ++i) { - glVertex3d(1.0 * (i - size) / size, -1, 0); - glVertex3d(1.0 * (i - size) / size, 1, 0); - }; - glEnd(); - glBegin(GL_LINES); - for (int i = 0; i <= 2 * size; ++i) { - glVertex3d(-1, 1.0 * (i - size) / size, 0); - glVertex3d(1, 1.0 * (i - size) / size, 0); - }; - glEnd(); - -} - - -GLWidget::GLWidget (QWidget* parent) - : QGLWidget (parent), wireframe(false), camera(), center() -{ - keys = 0; - setMouseTracking(true); - resize (sizeHint ()); -} - -GLWidget::~GLWidget () {} - -QSize GLWidget::minimumSizeHint () const { - return QSize (50, 50); -} - -QSize GLWidget::sizeHint () const { - return QSize (1000, 800); -} - -void GLWidget::initializeGL () { - glClearColor (0, 0, 0, 1.0); - glEnable (GL_DEPTH_TEST); - //gluPerspective(65.0, 4.0/3.0, 1.0, 10000.0); - glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); - glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); -} - -void GLWidget::resizeGL (int width, int height) { - glViewport (0, 0, width, height); - glMatrixMode (GL_PROJECTION); - glLoadIdentity(); - gluPerspective(65.0, 4.0/3.0, 1.0, 10000.0); - glMatrixMode (GL_MODELVIEW); - setCursor(QCursor(Qt::CrossCursor)); -} - -void GLWidget::paintGL () { - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glLoadIdentity (); - camera.setView(); - glPushMatrix(); - glScaled(100, 100, 100); - grid(); - axes(); - glPopMatrix(); - - - center = QWidget::mapToGlobal(QPoint(this->size().width() / 2, this->size().height() / 2)); - QCursor::setPos(center); - - - glScaled (100.0, 100.0, 100.0); - - - if (wireframe) { - glPolygonMode(GL_FRONT, GL_LINE); - glPolygonMode(GL_BACK, GL_LINE); - } else { - glPolygonMode(GL_FRONT, GL_FILL); - glPolygonMode(GL_BACK, GL_FILL); - } - - //glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - //glColor4d(0,0,0.5, 0.2); - vhc::ElementRenderer* er = new vhc::ElementRenderer; - - vhc::StraightElement* se = new vhc::StraightElement(vhc::Vector3D::j, vhc::Vector3D::j + vhc::Vector3D::i, 0.2); - vhc::StraightElement* se2 = new vhc::StraightElement(vhc::Vector3D(2,0,0), vhc::Vector3D(2,-1,0), 0.2); - se->accept(*er); - //se.draw() - se2->accept(*er); - delete se; se = NULL; - delete se2; se2 = NULL; - - vhc::CurvedElement* ce = new vhc::Dipole(vhc::Vector3D(1,1,0), vhc::Vector3D::i * 2, 0.2, 1, vhc::Vector3D::Null); - //std::cout <<*ce << "\n"; - ce->accept(*er); - delete er; er = NULL; - - delete ce; ce = NULL; - -} - - - -void GLWidget::mousePressEvent (QMouseEvent* event) { -} - -void GLWidget::mouseReleaseEvent (QMouseEvent* event) { -} - - -void GLWidget::keyPressEvent (QKeyEvent* event) { - Vector3D mv = Vector3D::Null; - switch (event->key()) { - case Qt::Key_Escape: - qApp->quit(); - break; - case Qt::Key_A: - //mv = mv - Vector3D::j; - keys |= 1; - break; - case Qt::Key_W: - //mv = mv - Vector3D::i; - keys |= 2; - break; - case Qt::Key_D: - //mv = mv + Vector3D::j; - keys |= 4; - break; - case Qt::Key_S: - //mv = mv + Vector3D::i; - keys |= 8; - break; - case Qt::Key_Up: - camera.addPitch(2 * M_PI / 100); - break; - case Qt::Key_Down: - camera.addPitch(-2 * M_PI / 100); - break; - case Qt::Key_Right: - camera.addHeading(-2 * M_PI / 100); - break; - case Qt::Key_Left: - camera.addHeading(2 * M_PI / 100); - break; - case Qt::Key_R: - break; - case Qt::Key_Space: - wireframe = !wireframe; - break; - default: - break; - } - std::cout << event->text().toStdString() << std::endl; - std::cout << std::flush; - - if (keys & 1) mv = mv - Vector3D::j; - if (keys & 2) mv = mv - Vector3D::i; - if (keys & 4) mv = mv + Vector3D::j; - if (keys & 8) mv = mv + Vector3D::i; - - camera.move(mv); - updateGL(); - //repaint(); - - -} - -void GLWidget::keyReleaseEvent (QKeyEvent* event) { - switch (event->key()) { - case Qt::Key_A: - //mv = mv - Vector3D::j; - keys &= ~1; - break; - case Qt::Key_W: - //mv = mv - Vector3D::i; - keys &= ~2; - break; - case Qt::Key_D: - //mv = mv + Vector3D::j; - keys &= ~4; - break; - case Qt::Key_S: - //mv = mv + Vector3D::i; - keys &= ~8; - break; - default: - break; - } -} - -void GLWidget::mouseMoveEvent(QMouseEvent* event) { - int dheading = -QCursor::pos().x() + center.x(); - int dpitch = -QCursor::pos().y() + center.y(); - camera.addHeading(1.0 * dheading / 200); - camera.addPitch(1.0 * dpitch / 200); - updateGL(); - -} |