summaryrefslogtreecommitdiff
path: root/src/gui/ElementRenderer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/ElementRenderer.cc')
-rw-r--r--src/gui/ElementRenderer.cc18
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