コード例 #1
0
// build a vertical line: draw it and check for alignment
void SceneGridHandler::buildLineX(qreal deltaX
		, qreal pointX, qreal correctionX, qreal &myX1, qreal &myX2)
{
	if (deltaX > radius) {
		return;
	}

	if (mShowAlignment) {
		drawLineX(pointX);
	}
	if (makeJumpX(deltaX, pointX - correctionX)) {
		myX1 = recalculateX1();
		myX2 = recalculateX2(myX1);
	}
}
コード例 #2
0
ファイル: vpMbScanLine.cpp プロジェクト: tswang/visp
/*!
  Compute the X-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::drawPolygonX(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);

    drawLineX(p1,
              p2,
              makeMbScanLineEdge(polygon.front().first, polygon.back().first),
              ID,
              scanlines);
    return;
  }

  std::vector<std::vector<vpMbScanLineSegment> > local_scanlines;
  local_scanlines.resize(w);

  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);

    drawLineX(p1, p2, makeMbScanLineEdge(polygon[i].first, polygon[(i + 1) % polygon.size()].first), ID, local_scanlines);
  }

  createScanLinesFromLocals(scanlines,local_scanlines,w);
}