View Issue Details

IDProjectCategoryView StatusLast Update
0002074SketcherBugpublic2015-12-15 13:18
Reporterphilius Assigned Toabdullah  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionnot fixable 
Platformamd64OSDebianOS Version8.0
Product Version0.15 
Fixed in Version0.16 
Summary0002074: Unexpected behaviour in equality constraint
DescriptionThis can be tested with a 3-point polyline.

The equality constraint is interacting with the solver in an unexpected way.
In order to solve the sketch, the solver is moving a point that joins to two equality-constraint lines.
Common sense says it doesn't need to move this point.
Steps To ReproduceOpen a new project -> new sketch.
Draw a polyline with a '>' shape (3 points), the middle point is fixed to the x axis with a constraint while drawing.
Select the two lines.
Apply the equality constraint.
Now, when you move either end point, the center point also moves!?!
Additional InformationIf you instead select the two end points and the x axis and apply a symmetry constraint, either end point can be moved and the symmetry is conserved, as expected, but the middle point does not move.

Maybe related: in a new sketch create two lines and apply the equality constraint.
Now if you move any point, all the other points move.
Also, there seems to be a division-by-zero problem if one point on a line is at 45/225 degrees with respect to the other point on the line - the solver seems to go a bit crazy.
TagsNo tags attached.
FreeCAD Information

Activities

philius

2015-04-29 11:13

reporter   ~0006102

I'm using the Ubuntu vivid ppa on Debian Jessie, which installed Ok.
I just changed "jessie" to "vivid" in freecad-maintainers-freecad-daily-jessie.list

philius

2015-04-29 11:27

reporter   ~0006103

I think it's because the solver doesn't (adequately) work from which point moved and tries to make the lines equal, which involves moving all the points (?).
If you move one of the points towards the edge of the view the solver goes a bit crazy.

ickby

2015-04-29 12:53

developer   ~0006104

This is not a bug as the constraint is satisfied by the solver while moving. It does not happen the way you expect it, but it is nonetheless correct. Other people may want a different behaviour.

In contrast to equallity, where all 3 points influence the constraint and hence can move, the symmetrie is only influenced by the two selected points, not the third one. Hence it does not participate in constraint solving while moving.

philius

2015-04-30 21:16

reporter   ~0006105

Regarding "all 3 points influence the constraint and hence can move" - while this is true, the solver can always find a solution where the middle point doesn't move, so why pick one where it does move?

Same for two separate lines - why move all four points when a solution can always be found that requires that only two points move.

I'm suggesting that the solver tries to find a solution that is the least surprising.

I hope you agree that the way the solver behaves when you move a point towards the edge of the view is surprising, and that it would have unexpected interactions with other constraints, to say the least!

abdullah

2015-07-20 06:12

manager   ~0006255

What to expect or what not to expect is a matter of previous experience. If your previous SW did it one way or you have been taught otherwise to expect a given behaviour, any other behaviour is surprising.

The solver may be biased towards one solution (usually with a penalty in performance), however, translating a "surprising behaviour" into code is not straightforward, as it is ill defined (it may mean different things to different people).

For me I am happy as far as the solution is valid, except where flipping of the geometry occurs.

abdullah

2015-09-07 15:07

manager   ~0006341

The expected behaviour here is a matter of previous experience.

The solution given by the solver is a valid solution.

Issue History

Date Modified Username Field Change
2015-04-29 11:10 philius New Issue
2015-04-29 11:13 philius Note Added: 0006102
2015-04-29 11:27 philius Note Added: 0006103
2015-04-29 12:53 ickby Note Added: 0006104
2015-04-30 21:16 philius Note Added: 0006105
2015-07-20 06:12 abdullah Note Added: 0006255
2015-07-20 06:13 abdullah Assigned To => abdullah
2015-07-20 06:13 abdullah Status new => assigned
2015-09-07 15:07 abdullah Note Added: 0006341
2015-09-07 15:07 abdullah Status assigned => closed
2015-09-07 15:07 abdullah Resolution open => not fixable
2015-12-15 13:18 yorik Fixed in Version => 0.16