From c0103b896d5bd28da7e7421f6e3a39dcca05ec9d Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Sun, 7 Feb 2010 12:06:10 +0000 Subject: [PATCH] Draw a better arrow on points --- src/Points.cpp | 50 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/src/Points.cpp b/src/Points.cpp index 0e71333..781d440 100644 --- a/src/Points.cpp +++ b/src/Points.cpp @@ -90,21 +90,47 @@ void Points::renderArrow() const glPushMatrix(); glPushAttrib(GL_ENABLE_BIT); - glTranslatef(0.0f, 0.2f, 0.0f); + glEnable(GL_BLEND); + + glTranslatef(-0.5f, 0.11f, 0.0f); + glColor4f(0.1f, 0.1f, 0.8f, 0.6f); + + if (state == TAKEN) { + //glRotatef(45.0f, 0.0f, 1.0f, 0.0f); - if (state == TAKEN) - glRotatef(45.0f, 0.0f, 1.0f, 0.0f); + const BezierCurve& curve = + reflected ? myReflectedCurve : myCurve; - //glDisable(GL_CULL_FACE); + const float step = 0.1f; - glEnable(GL_BLEND); - glColor4f(0.0f, 0.1f, 0.8f, 0.6f); - glBegin(GL_QUADS); - glVertex3f(-0.5f, 0.0f, 0.1f); - glVertex3f(0.5f, 0.0f, 0.1f); - glVertex3f(0.5f, 0.0f, -0.1f); - glVertex3f(-0.5f, 0.0f, -0.1f); - glEnd(); + for (float t = 0.0f; t < 1.0f; t += step) { + + const Vector v1 = curve(t); + const Vector v2 = curve(t + step); + + glDisable(GL_CULL_FACE); + + glBegin(GL_QUADS); + { + glVertex3f(v1.x, 0.0f, v1.y - 0.1f); + glVertex3f(v1.x, 0.0f, v1.y + 0.1f); + glVertex3f(v2.x, 0.0f, v2.y + 0.1f); + glVertex3f(v2.x, 0.0f, v2.y - 0.1f); + } + glEnd(); + + } + } + else { + glBegin(GL_QUADS); + { + glVertex3f(0.0f, 0.0f, 0.1f); + glVertex3f(3.0f, 0.0f, 0.1f); + glVertex3f(3.0f, 0.0f, -0.1f); + glVertex3f(0.0f, 0.0f, -0.1f); + } + glEnd(); + } glPopAttrib(); glPopMatrix(); -- 2.39.2