void VectorRenderer::render(RenderContext * context) { assert(this->m_initial != 0); assert(this->m_vector != 0); math::const_VectorRef<2> initial(this->m_initial); math::const_VectorRef<2> vector(this->m_vector); glColor4v(m_color.ptr()); glBegin(GL_LINES); glVertex2v(initial.ptr()); glVertex2v((vector + initial).ptr()); glEnd(); if (m_frontArrow && !vector.isZero()) { math::Vector<2> versor = vector.versor(); versor.mul(INITIAL_ARROW_SIZE * context->currentView()->svHeightRatio()); glBegin(GL_TRIANGLES); glVertex2v((vector + initial).ptr()); glVertex2v((vector + initial - versor.rotate(INITIAL_ARROW_ANGLE)).ptr()); glVertex2v((vector + initial - versor.rotate(-2.0 * INITIAL_ARROW_ANGLE)).ptr()); glEnd(); } }
inline void glColor( const QVector4D & color ) { glColor4v( reinterpret_cast<const float*>(&color) ); }