예제 #1
0
void test_tessellate_polygon_rect(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
                                  bool winding)
{
    // 5 points per rect
    Q_ASSERT(nPoints % 5 == 0);

    TestTessellator t;
    t.traps = traps;
    t.setWinding(winding);
    for (int i = 0; i < nPoints / 5; ++i) {
        QPointF rectA = points[5*i];
        QPointF rectB = points[5*i+1];
        QPointF rectC = points[5*i+2];
        QPointF rectD = points[5*i+3];

        QPointF a = (rectA + rectD) * 0.5;
        QPointF b = (rectB + rectC) * 0.5;

        QPointF delta = rectA - rectD;

        qreal width = sqrt(delta.x() * delta.x() + delta.y() * delta.y());

        t.tessellateRect(a, b, width);
    }
}
예제 #2
0
void test_tessellate_polygon_rect(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
                                  bool winding)
{
    // 5 points per rect
    if (nPoints % 5 != 0)
        qWarning() << Q_FUNC_INFO << "multiples of 5 points expected";

    TestTessellator t;
    t.traps = traps;
    t.setWinding(winding);
    for (int i = 0; i < nPoints / 5; ++i) {
        QPointF rectA = points[5*i];
        QPointF rectB = points[5*i+1];
        QPointF rectC = points[5*i+2];
        QPointF rectD = points[5*i+3];

        QPointF a = (rectA + rectD) * 0.5;
        QPointF b = (rectB + rectC) * 0.5;

        QPointF delta = rectA - rectD;

        qreal width = sqrt(delta.x() * delta.x() + delta.y() * delta.y());

        t.tessellateRect(a, b, width);
    }
}
예제 #3
0
void test_tessellate_polygon_convex(QVector<XTrapezoid> *traps, const QPointF *points, int nPoints,
                                   bool winding)
{
    TestTessellator t;
    t.traps = traps;
    t.setWinding(winding);
    t.tessellateConvex(points, nPoints);
}