495 qreal cos_a = normals[i].x()*normals[i+1].x() + normals[i].y()*normals[i+1].y(); |
495 qreal cos_a = normals[i].x()*normals[i+1].x() + normals[i].y()*normals[i+1].y(); |
496 if (cos_a > 1.) |
496 if (cos_a > 1.) |
497 cos_a = 1.; |
497 cos_a = 1.; |
498 if (cos_a < -1.) |
498 if (cos_a < -1.) |
499 cos_a = -1; |
499 cos_a = -1; |
500 angles[i] = acos(cos_a)/Q_PI; |
500 angles[i] = qAcos(cos_a)/Q_PI; |
501 } |
501 } |
502 |
502 |
503 if (angles[0] + angles[1] > 1.) { |
503 if (angles[0] + angles[1] > 1.) { |
504 // more than 180 degrees |
504 // more than 180 degrees |
505 normals[1] = -normals[1]; |
505 normals[1] = -normals[1]; |
814 |
814 |
815 bool QBezier::findIntersections(const QBezier &a, const QBezier &b, |
815 bool QBezier::findIntersections(const QBezier &a, const QBezier &b, |
816 QVector<QPair<qreal, qreal> > *t) |
816 QVector<QPair<qreal, qreal> > *t) |
817 { |
817 { |
818 if (IntersectBB(a, b)) { |
818 if (IntersectBB(a, b)) { |
819 QPointF la1(fabs((a.x3 - a.x2) - (a.x2 - a.x1)), |
819 QPointF la1(qFabs((a.x3 - a.x2) - (a.x2 - a.x1)), |
820 fabs((a.y3 - a.y2) - (a.y2 - a.y1))); |
820 qFabs((a.y3 - a.y2) - (a.y2 - a.y1))); |
821 QPointF la2(fabs((a.x4 - a.x3) - (a.x3 - a.x2)), |
821 QPointF la2(qFabs((a.x4 - a.x3) - (a.x3 - a.x2)), |
822 fabs((a.y4 - a.y3) - (a.y3 - a.y2))); |
822 qFabs((a.y4 - a.y3) - (a.y3 - a.y2))); |
823 QPointF la; |
823 QPointF la; |
824 if (la1.x() > la2.x()) la.setX(la1.x()); else la.setX(la2.x()); |
824 if (la1.x() > la2.x()) la.setX(la1.x()); else la.setX(la2.x()); |
825 if (la1.y() > la2.y()) la.setY(la1.y()); else la.setY(la2.y()); |
825 if (la1.y() > la2.y()) la.setY(la1.y()); else la.setY(la2.y()); |
826 QPointF lb1(fabs((b.x3 - b.x2) - (b.x2 - b.x1)), |
826 QPointF lb1(qFabs((b.x3 - b.x2) - (b.x2 - b.x1)), |
827 fabs((b.y3 - b.y2) - (b.y2 - b.y1))); |
827 qFabs((b.y3 - b.y2) - (b.y2 - b.y1))); |
828 QPointF lb2(fabs((b.x4 - b.x3) - (b.x3 - b.x2)), |
828 QPointF lb2(qFabs((b.x4 - b.x3) - (b.x3 - b.x2)), |
829 fabs((b.y4 - b.y3) - (b.y3 - b.y2))); |
829 qFabs((b.y4 - b.y3) - (b.y3 - b.y2))); |
830 QPointF lb; |
830 QPointF lb; |
831 if (lb1.x() > lb2.x()) lb.setX(lb1.x()); else lb.setX(lb2.x()); |
831 if (lb1.x() > lb2.x()) lb.setX(lb1.x()); else lb.setX(lb2.x()); |
832 if (lb1.y() > lb2.y()) lb.setY(lb1.y()); else lb.setY(lb2.y()); |
832 if (lb1.y() > lb2.y()) lb.setY(lb1.y()); else lb.setY(lb2.y()); |
833 qreal l0; |
833 qreal l0; |
834 if (la.x() > la.y()) |
834 if (la.x() > la.y()) |
1118 qreal ay = -right.y1 + 3*right.y2 - 3*right.y3 + right.y4; |
1118 qreal ay = -right.y1 + 3*right.y2 - 3*right.y3 + right.y4; |
1119 qreal ex = 3 * (right.x2 - right.x3); |
1119 qreal ex = 3 * (right.x2 - right.x3); |
1120 qreal ey = 3 * (right.y2 - right.y3); |
1120 qreal ey = 3 * (right.y2 - right.y3); |
1121 |
1121 |
1122 qreal s4 = qAbs(6 * (ey * ax - ex * ay) / qSqrt(ex * ex + ey * ey)) + 0.00001f; |
1122 qreal s4 = qAbs(6 * (ey * ax - ex * ay) / qSqrt(ex * ex + ey * ey)) + 0.00001f; |
1123 qreal tf = pow(qreal(9 * flatness / s4), qreal(1./3.)); |
1123 qreal tf = qPow(qreal(9 * flatness / s4), qreal(1./3.)); |
1124 *tMinus = t - (1 - t) * tf; |
1124 *tMinus = t - (1 - t) * tf; |
1125 *tPlus = t + (1 - t) * tf; |
1125 *tPlus = t + (1 - t) * tf; |
1126 } |
1126 } |
1127 |
1127 |
1128 void QBezier::addToPolygonIterative(QPolygonF *p) const |
1128 void QBezier::addToPolygonIterative(QPolygonF *p) const |