From kde-commits Fri Dec 31 23:27:34 2010 From: Geoffry Song Date: Fri, 31 Dec 2010 23:27:34 +0000 To: kde-commits Subject: [Calligra] 8a93202: PerspectiveAssistant::distance(): remove a divisio Message-Id: <20101231232734.C3B7EA60A9 () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=129383812016714 commit 8a93202a7a3942f997e4fb5979f63aa49ab7b290 branch master Author: Geoffry Song Date: Thu Dec 30 13:42:45 2010 -0500 PerspectiveAssistant::distance(): remove a division diff --git a/krita/plugins/assistants/RulerAssistant/PerspectiveAssistant.cc b/krita/plugins/assistants/RulerAssistant/PerspectiveAssistant.cc index a41b5e6..d15925d 100644 --- a/krita/plugins/assistants/RulerAssistant/PerspectiveAssistant.cc +++ b/krita/plugins/assistants/RulerAssistant/PerspectiveAssistant.cc @@ -29,7 +29,6 @@ #include #include -#include PerspectiveAssistant::PerspectiveAssistant() : KisPaintingAssistant("perspective", i18n("Perspective assistant")) @@ -136,18 +135,18 @@ inline qreal localScale(const QTransform& transform, QPointF pt) return fabs(a*(a + transform.m23())*b*(b + transform.m13()))/(d * d); } -// returns the maximum local scale at the points (0,0),(0,1),(1,0),(1,1) -inline qreal maxLocalScale(const QTransform& transform) +// returns the reciprocal of the maximum local scale at the points (0,0),(0,1),(1,0),(1,1) +inline qreal inverseMaxLocalScale(const QTransform& transform) { const qreal a = fabs((transform.m33() + transform.m13()) * (transform.m33() + transform.m23())), b = fabs((transform.m33()) * (transform.m13() + transform.m33() + transform.m23())), d00 = transform.m33() * transform.m33(), d11 = (transform.m33() + transform.m23() + transform.m13())*(transform.m33() + transform.m23() + transform.m13()), - s0011 = d00 > d11 ? a / d11 : a / d00, + s0011 = qMin(d00, d11) / a, d10 = (transform.m33() + transform.m13()) * (transform.m33() + transform.m13()), d01 = (transform.m33() + transform.m23()) * (transform.m33() + transform.m23()), - s1001 = d10 > d01 ? b / d01 : b / d10; - return qMax(s0011, s1001); + s1001 = qMin(d10, d01) / b; + return qMin(s0011, s1001); } qreal PerspectiveAssistant::distance(const QPointF& pt) const @@ -163,7 +162,7 @@ qreal PerspectiveAssistant::distance(const QPointF& pt) const // point at infinity return 0.0; } - return localScale(transform, inverse.map(pt)) / maxLocalScale(transform); + return localScale(transform, inverse.map(pt)) * inverseMaxLocalScale(transform); } // draw a vanishing point marker