CRay3 VoronoiDiagram::getRayBoundedToArena(const CRay3 &ray) const { Real startX, startY, endX, endY; bool edgeWasClipped = LiangBarsky( arenaLimits.GetMin().GetX(), arenaLimits.GetMax().GetX(), arenaLimits.GetMin().GetY(), arenaLimits.GetMax().GetY(), ray.GetStart().GetX(), ray.GetStart().GetY(), ray.GetEnd().GetX(), ray.GetEnd().GetY(), startX, startY, endX, endY); if (!edgeWasClipped) throw EdgeNotInArea(); CRay3 boundedRay(CVector3(startX, startY, diagramLiftOnZ), CVector3(endX, endY, diagramLiftOnZ));\ return boundedRay; }
void CQTOpenGLUserFunctions::DrawRay(const CRay3& c_ray, const CColor& c_color, Real f_width) { /* Save attributes and current matrix */ glPushAttrib(GL_LINE_BIT); /* Set line attributes */ glEnable(GL_LINE_SMOOTH); glLineWidth(f_width); /* Set color */ SetColor(c_color); /* Draw ray */ glBegin(GL_LINES); glVertex3f(c_ray.GetStart().GetX(), c_ray.GetStart().GetY(), c_ray.GetStart().GetZ()); glVertex3f(c_ray.GetEnd().GetX(), c_ray.GetEnd().GetY(), c_ray.GetEnd().GetZ()); glEnd(); /* Restore saved stuff */ glPopAttrib(); }