From 3c917ebac9996efd1779585a4bf39e2b92d55afb Mon Sep 17 00:00:00 2001 From: EvilSpirit Date: Thu, 19 Nov 2015 11:30:31 +0600 Subject: [PATCH] Use relative tolerance for axis-parallel autoconstrainter. This works better than absolute tolerance in display pixels for small lines. --- src/graphicswin.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/graphicswin.cpp b/src/graphicswin.cpp index 3ea03cc..4a4576e 100644 --- a/src/graphicswin.cpp +++ b/src/graphicswin.cpp @@ -1026,13 +1026,13 @@ GraphicsWindow::SuggestedConstraint GraphicsWindow::SuggestLineConstraint(hReque ptA->PointGetExprsInWorkplane(ActiveWorkplane(), &au, &av); ptB->PointGetExprsInWorkplane(ActiveWorkplane(), &bu, &bv); - Expr *du = au->Minus(bu); - Expr *dv = av->Minus(bv); + double du = au->Minus(bu)->Eval(); + double dv = av->Minus(bv)->Eval(); - const double TOLERANCE = 10.0; - if(fabs(du->Eval()) * scale < TOLERANCE) + const double TOLERANCE_RATIO = 0.02; + if(fabs(dv) > LENGTH_EPS && fabs(du / dv) < TOLERANCE_RATIO) return SUGGESTED_VERTICAL; - else if(fabs(dv->Eval()) * scale < TOLERANCE) + else if(fabs(du) > LENGTH_EPS && fabs(dv / du) < TOLERANCE_RATIO) return SUGGESTED_HORIZONTAL; else return SUGGESTED_NONE;