diff options
Diffstat (limited to 'src/gui/ElementRenderer.cc')
-rw-r--r-- | src/gui/ElementRenderer.cc | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/gui/ElementRenderer.cc b/src/gui/ElementRenderer.cc index 14d7fc6..5066a5d 100644 --- a/src/gui/ElementRenderer.cc +++ b/src/gui/ElementRenderer.cc @@ -5,11 +5,9 @@ * Author: jakob */ -#include <iostream> #include <QtOpenGL> #include <math.h> #include "ElementRenderer.h" -#include "CurvedElement.h" #include "StraightElement.h" #include "Dipole.h" #include "Quadrupole.h" @@ -21,14 +19,17 @@ namespace vhc { ElementRenderer::ElementRenderer() { - } ElementRenderer::~ElementRenderer() { } -void ElementRenderer::drawStraight(StraightElement* straight) { +void ElementRenderer::render(const Element& element) const { + element.accept(*this); +} + +void ElementRenderer::drawStraight(const StraightElement* straight) const { glPushMatrix(); glTranslated(straight->getEntryPosition().getX(), straight->getEntryPosition().getY(), straight->getEntryPosition().getZ()); Vector3D axis = Vector3D::k.cross(straight->getDiagonal()); @@ -44,12 +45,12 @@ void ElementRenderer::drawStraight(StraightElement* straight) { } -void ElementRenderer::visit(StraightElement* straight) { +void ElementRenderer::visit(const StraightElement* straight) const { glColor4d(0.4, 0.4, 0.4, 0.9); drawStraight(straight); } -void ElementRenderer::visit(Quadrupole* quadrupole) { +void ElementRenderer::visit(const Quadrupole* quadrupole) const { if (quadrupole->getFocusingCoefficient() > 1) glColor4d(0.4, 0, 0, 0.9); else @@ -58,7 +59,7 @@ void ElementRenderer::visit(Quadrupole* quadrupole) { } -void ElementRenderer::visit(Dipole* dipole) { +void ElementRenderer::visit(const Dipole* dipole) const { glColor4d(0.2, 0, 0.4, 0.9); glPushMatrix(); glTranslated(dipole->getCurvatureCenter().getX(), dipole->getCurvatureCenter().getY(), dipole->getCurvatureCenter().getZ()); @@ -66,9 +67,6 @@ void ElementRenderer::visit(Dipole* dipole) { Vector3D axis = Vector3D::i.cross(d); double angle = asin(axis.norm() / d.norm()); - std::cout << "axis: " << axis << "\n"; - std::cout << "angle: " << angle * 180 / M_PI << "\n"; - std::cout << "for element " << *dipole << "\n"; if (d != -Vector3D::i) glRotated(angle * 180 / M_PI, axis.getX(), axis.getY(), axis.getZ()); else |