# HG changeset patch # User Sebastien Jodogne # Date 1670003051 -3600 # Node ID abd4ee1648de906e43c790e985419e5b906ec152 # Parent 25d269c7b7535591e8accaf78461bd8f6fb3bca8 Fix measurement of arcs diff -r 25d269c7b753 -r abd4ee1648de Applications/StoneWebViewer/NEWS --- a/Applications/StoneWebViewer/NEWS Fri Dec 02 18:06:33 2022 +0100 +++ b/Applications/StoneWebViewer/NEWS Fri Dec 02 18:44:11 2022 +0100 @@ -2,6 +2,7 @@ =============================== * Annotations are grouped into one submenu for narrow screens +* Fix measurement of arcs Version 2.4 (2022-11-02) diff -r 25d269c7b753 -r abd4ee1648de OrthancStone/Sources/Scene2D/AnnotationsSceneLayer.cpp --- a/OrthancStone/Sources/Scene2D/AnnotationsSceneLayer.cpp Fri Dec 02 18:06:33 2022 +0100 +++ b/OrthancStone/Sources/Scene2D/AnnotationsSceneLayer.cpp Fri Dec 02 18:44:11 2022 +0100 @@ -653,21 +653,34 @@ const double yc = middle_.GetY(); const double x2 = end_.GetX(); const double y2 = end_.GetY(); - - startAngle = atan2(y1 - yc, x1 - xc); - endAngle = atan2(y2 - yc, x2 - xc); - - fullAngle = endAngle - startAngle; - - while (fullAngle < -PI) + + double referenceAngle = atan2(y1 - yc, x1 - xc); + double secondAngle = atan2(y2 - yc, x2 - xc); + + secondAngle -= referenceAngle; + + while (secondAngle >= PI) + { + secondAngle -= 2.0 * PI; + } + + while (secondAngle <= -PI) { - fullAngle += 2.0 * PI; + secondAngle += 2.0 * PI; + } + + if (secondAngle < 0) + { + startAngle = referenceAngle + secondAngle; + endAngle = referenceAngle; } - - while (fullAngle >= PI) + else { - fullAngle -= 2.0 * PI; + startAngle = referenceAngle; + endAngle = referenceAngle + secondAngle; } + + fullAngle = endAngle - startAngle; } public: