Use relative tolerance for axis-parallel autoconstrainter.
This works better than absolute tolerance in display pixels for small lines.
This commit is contained in:
parent
c6194d439c
commit
3c917ebac9
@ -1026,13 +1026,13 @@ GraphicsWindow::SuggestedConstraint GraphicsWindow::SuggestLineConstraint(hReque
|
|||||||
ptA->PointGetExprsInWorkplane(ActiveWorkplane(), &au, &av);
|
ptA->PointGetExprsInWorkplane(ActiveWorkplane(), &au, &av);
|
||||||
ptB->PointGetExprsInWorkplane(ActiveWorkplane(), &bu, &bv);
|
ptB->PointGetExprsInWorkplane(ActiveWorkplane(), &bu, &bv);
|
||||||
|
|
||||||
Expr *du = au->Minus(bu);
|
double du = au->Minus(bu)->Eval();
|
||||||
Expr *dv = av->Minus(bv);
|
double dv = av->Minus(bv)->Eval();
|
||||||
|
|
||||||
const double TOLERANCE = 10.0;
|
const double TOLERANCE_RATIO = 0.02;
|
||||||
if(fabs(du->Eval()) * scale < TOLERANCE)
|
if(fabs(dv) > LENGTH_EPS && fabs(du / dv) < TOLERANCE_RATIO)
|
||||||
return SUGGESTED_VERTICAL;
|
return SUGGESTED_VERTICAL;
|
||||||
else if(fabs(dv->Eval()) * scale < TOLERANCE)
|
else if(fabs(du) > LENGTH_EPS && fabs(dv / du) < TOLERANCE_RATIO)
|
||||||
return SUGGESTED_HORIZONTAL;
|
return SUGGESTED_HORIZONTAL;
|
||||||
else
|
else
|
||||||
return SUGGESTED_NONE;
|
return SUGGESTED_NONE;
|
||||||
|
Loading…
Reference in New Issue
Block a user