Salome HOME
Code cleanup in SketchPlugin and SketchSolver.
[modules/shaper.git] / src / SketchPlugin / SketchPlugin_ConstraintAngle.cpp
index 9fbe2d84fa4b21b38b963c4cc65e681416124845..c73ae7d175e339714dcab36fb25f1eeefc3deb8c 100644 (file)
@@ -154,16 +154,21 @@ double SketchPlugin_ConstraintAngle::calculateAngle()
   std::shared_ptr<GeomAPI_Pnt2d> aStartB = aPointB1->pnt();
   std::shared_ptr<GeomAPI_Pnt2d> aEndB   = aPointB2->pnt();
 
+  double aDist[2][2] = {
+      { anInter->distance(aStartA), anInter->distance(aEndA) },
+      { anInter->distance(aStartB), anInter->distance(aEndB) }
+  };
+
   // Directions of lines
-  if (anInter->distance(aEndA) < tolerance)
+  if (aDist[0][0] > aDist[0][1])
     aEndA = aStartA;
-  if (anInter->distance(aEndB) < tolerance)
+  if (aDist[1][0] > aDist[1][1])
     aEndB = aStartB;
   std::shared_ptr<GeomAPI_Dir2d> aDirA(new GeomAPI_Dir2d(aEndA->xy()->decreased(anInter->xy())));
   std::shared_ptr<GeomAPI_Dir2d> aDirB(new GeomAPI_Dir2d(aEndB->xy()->decreased(anInter->xy())));
 
-  anAngle = aDirA->angle(aDirB) * 180.0 / PI;
-  return fabs(anAngle);
+  anAngle = fabs(aDirA->angle(aDirB)) * 180.0 / PI;
+  return anAngle;
 }
 
 void SketchPlugin_ConstraintAngle::move(double theDeltaX, double theDeltaY)