void drawAxis() { // X (by y) glColor3f(1, 0, 0); drawLineY(); //Y (by x) glColor3f(0, 1, 0); glPushMatrix(); glRotatef(-90, 0, 0, 1); drawLineY(); glPopMatrix(); //Z (by XY) glColor3f(0.2, 0.2, 1); glPushMatrix(); glRotatef(-45, 0, 0, 1); glRotatef(90, 1, 0, 0); drawLineY(); glPopMatrix(); }
// build a horizontal line: draw it and check for alignment void SceneGridHandler::buildLineY(qreal deltaY , qreal pointY, qreal correctionY, qreal &myY1, qreal &myY2) { if (deltaY > radius) { return; } if (mShowAlignment) { drawLineY(pointY); } if (makeJumpY(deltaY, pointY - correctionY)) { myY1 = recalculateY1(); myY2 = recalculateY2(myY1); } }
/*! Compute the Y-axis scanlines intersections of a polygon. \param polygon : Polygon composed by an array of lines. \param ID : ID of the polygon (has to be know when using queries). \param scanlines : Resulting intersections. */ void vpMbScanLine::drawPolygonY(const std::vector<std::pair<vpPoint, unsigned int> > &polygon, const int ID, std::vector<std::vector<vpMbScanLineSegment> > &scanlines) { if (polygon.size() < 2) return; if (polygon.size() == 2) { vpColVector p1, p2; createVectorFromPoint(polygon.front().first, p1, K); createVectorFromPoint(polygon.back().first, p2, K); drawLineY(p1, p2, makeMbScanLineEdge(polygon.front().first, polygon.back().first), ID, scanlines); return; } std::vector<std::vector<vpMbScanLineSegment> > local_scanlines; local_scanlines.resize(h); for(size_t i = 0 ; i < polygon.size() ; ++i) { vpColVector p1, p2; createVectorFromPoint(polygon[i].first, p1, K); createVectorFromPoint(polygon[(i + 1) % polygon.size()].first, p2, K); drawLineY(p1, p2, makeMbScanLineEdge(polygon[i].first, polygon[(i + 1) % polygon.size()].first), ID, local_scanlines); } createScanLinesFromLocals(scanlines,local_scanlines,h); }