C++ (Qt)QPainter::setClipRect( ... )
C++ (Qt)(0, 0)(-0.1, 0.2)(0, 0.5)(-0.1, 0.75)(0, 1)
C++ (Qt)void CreatePoly( const QRectF & R, // исходный прямоугольник const QVector <QPointF> & edge, // зубы (см выше) int index, // 0 - создать левый полигон, 1 - правый QPolygonF & poly ); // выходной полигон
C++ (Qt)void CreatePoly( const QRectF & R, // rectangle to fit const QPolygonF & seam, // seam points (in relative coordinates) int polyIndex, // 0 = left poly qreal posX, // seam position (relative) [0..1] QPolygonF & poly ) // output polygon{ qreal x0 = R.left(); qreal y0 = R.top(); qreal x1 = R.right(); qreal y1 = R.bottom(); qreal w = x1 - x0; qreal h = y1 - y0; // add seam points poly.clear(); for (int i = 0; i < seam.size(); ++i) poly.push_back(QPointF(x0 + (seam[i].x() + posX) * w, y0 + seam[i].y() * h)); // left poly (CW) if (!polyIndex) { poly.push_back(QPointF(x0, y1)); // add left bottom poly.push_back(QPointF(x0, y0)); // add left top } // right poly (CCW) else { poly.push_back(QPointF(x1, y1)); // add right bottom poly.push_back(QPointF(x1, y0)); // add right top }}