diff --git a/src/pulsaranimationwidget.cpp b/src/pulsaranimationwidget.cpp index afdffe3bd6e81a70f3e999462b54145645896652..b12731d2838fed8068909e933807b606d8c64760 100644 --- a/src/pulsaranimationwidget.cpp +++ b/src/pulsaranimationwidget.cpp @@ -61,6 +61,9 @@ PulsarAnimationWidget::PulsarAnimationWidget(QWidget *parent) : m_quadricPulsarMagneticAxis = NULL; m_quadricPulsarConeRim1 = NULL; m_quadricPulsarConeRim2 = NULL; + m_quadricLineOfSight = NULL; + m_quadricLineOfSightTop1 = NULL; + m_quadricLineOfSightTop2 = NULL; // initialize texture pointers m_pulsarTexture = 0; @@ -106,7 +109,13 @@ PulsarAnimationWidget::~PulsarAnimationWidget() if(m_quadricPulsarSpinAxis) gluDeleteQuadric(m_quadricPulsarSpinAxis); if(m_quadricPulsarSpinAxisTop1) gluDeleteQuadric(m_quadricPulsarSpinAxisTop1); if(m_quadricPulsarSpinAxisTop2) gluDeleteQuadric(m_quadricPulsarSpinAxisTop2); + if(m_quadricPulsarSpinAxis) gluDeleteQuadric(m_quadricPulsarSpinAxis); + if(m_quadricPulsarSpinAxisTop1) gluDeleteQuadric(m_quadricPulsarSpinAxisTop1); + if(m_quadricPulsarSpinAxisTop2) gluDeleteQuadric(m_quadricPulsarSpinAxisTop2); if(m_quadricPulsarMagneticAxis) gluDeleteQuadric(m_quadricPulsarMagneticAxis); + if(m_quadricPulsarSpinAxis) gluDeleteQuadric(m_quadricLineOfSight); + if(m_quadricPulsarSpinAxisTop1) gluDeleteQuadric(m_quadricLineOfSightTop1); + if(m_quadricPulsarSpinAxisTop2) gluDeleteQuadric(m_quadricLineOfSightTop2); if(m_pulsarTexture) deleteTexture(m_pulsarTexture); if(m_backgroundTexture) deleteTexture(m_backgroundTexture); } @@ -149,6 +158,9 @@ void PulsarAnimationWidget::initializeGL() m_quadricPulsarSpinAxisTop1 = gluNewQuadric(); m_quadricPulsarSpinAxisTop2 = gluNewQuadric(); m_quadricPulsarMagneticAxis = gluNewQuadric(); + m_quadricLineOfSight = gluNewQuadric(); + m_quadricLineOfSightTop1 = gluNewQuadric(); + m_quadricLineOfSightTop2 = gluNewQuadric(); gluQuadricNormals(m_quadricPulsar, GLU_SMOOTH); gluQuadricNormals(m_quadricPulsarConeRim1, GLU_SMOOTH); @@ -157,6 +169,9 @@ void PulsarAnimationWidget::initializeGL() gluQuadricNormals(m_quadricPulsarSpinAxisTop1, GLU_SMOOTH); gluQuadricNormals(m_quadricPulsarSpinAxisTop2, GLU_SMOOTH); gluQuadricNormals(m_quadricPulsarMagneticAxis, GLU_SMOOTH); + gluQuadricNormals(m_quadricLineOfSight, GLU_SMOOTH); + gluQuadricNormals(m_quadricLineOfSightTop1, GLU_SMOOTH); + gluQuadricNormals(m_quadricLineOfSightTop2, GLU_SMOOTH); // query max texture size (estimate) @@ -262,6 +277,31 @@ void PulsarAnimationWidget::paintGL() // draw scence glPushMatrix(); { + //draw line of sight (observer) + if(m_showRotationAxes) { + glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); + glColor3f(0.33f, 0.33f, 1.0f); + glPushMatrix(); + { + glTranslatef(0.0, 0.0, -5.0); + gluCylinder(m_quadricLineOfSight, 0.025, 0.025, 10.0, 32, 1); + } + glPopMatrix(); + glPushMatrix(); + { + glTranslatef(0.0, 0.0, -5.0); + gluDisk(m_quadricLineOfSightTop1, 0, 0.025, 32, 8); + } + glPopMatrix(); + glPushMatrix(); + { + glTranslatef(0.0, 0.0, 5.0); + gluDisk(m_quadricLineOfSightTop2, 0, 0.025, 32, 8); + } + glPopMatrix(); + glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); + } + // draw pulsar glPushMatrix(); { @@ -275,19 +315,19 @@ void PulsarAnimationWidget::paintGL() glPushMatrix(); { glTranslatef(0.0, 0.0, -5.0); - gluCylinder(m_quadricPulsarSpinAxis, 0.025, 0.025, 10.0, 32, 1); + gluCylinder(m_quadricPulsarSpinAxis, 0.020, 0.020, 10.0, 32, 1); } glPopMatrix(); glPushMatrix(); { glTranslatef(0.0, 0.0, -5.0); - gluDisk(m_quadricPulsarSpinAxisTop1, 0, 0.025, 32, 8); + gluDisk(m_quadricPulsarSpinAxisTop1, 0, 0.020, 32, 8); } glPopMatrix(); glPushMatrix(); { glTranslatef(0.0, 0.0, 5.0); - gluDisk(m_quadricPulsarSpinAxisTop2, 0, 0.025, 32, 8); + gluDisk(m_quadricPulsarSpinAxisTop2, 0, 0.020, 32, 8); } glPopMatrix(); glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); @@ -326,19 +366,19 @@ void PulsarAnimationWidget::paintGL() glPushMatrix(); { glTranslatef(0.0, 0.0, -5.0); - gluCylinder(m_quadricPulsarMagneticAxis, 0.025, 0.025, 10.0, 32, 1); + gluCylinder(m_quadricPulsarMagneticAxis, 0.020, 0.020, 10.0, 32, 1); } glPopMatrix(); glPushMatrix(); { glTranslatef(0.0, 0.0, -5.0); - gluDisk(m_quadricPulsarSpinAxisTop1, 0, 0.025, 32, 8); + gluDisk(m_quadricPulsarSpinAxisTop1, 0, 0.020, 32, 8); } glPopMatrix(); glPushMatrix(); { glTranslatef(0.0, 0.0, 5.0); - gluDisk(m_quadricPulsarSpinAxisTop2, 0, 0.025, 32, 8); + gluDisk(m_quadricPulsarSpinAxisTop2, 0, 0.020, 32, 8); } glPopMatrix(); glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); diff --git a/src/pulsaranimationwidget.h b/src/pulsaranimationwidget.h index 7d56d3fd15d83e479f5631dc289d657336f9d99e..01f3f1e5e72c4c30850a6829bc735f635590e2dd 100644 --- a/src/pulsaranimationwidget.h +++ b/src/pulsaranimationwidget.h @@ -81,6 +81,9 @@ private: GLUquadricObj *m_quadricPulsarSpinAxisTop1; GLUquadricObj *m_quadricPulsarSpinAxisTop2; GLUquadricObj *m_quadricPulsarMagneticAxis; + GLUquadricObj *m_quadricLineOfSight; + GLUquadricObj *m_quadricLineOfSightTop1; + GLUquadricObj *m_quadricLineOfSightTop2; GLuint m_pulsarTexture; GLuint m_backgroundTexture;