View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002074 | Sketcher | Bug | public | 2015-04-29 11:10 | 2015-12-15 13:18 |
Reporter | philius | Assigned To | abdullah | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | not fixable | ||
Platform | amd64 | OS | Debian | OS Version | 8.0 |
Product Version | 0.15 | ||||
Fixed in Version | 0.16 | ||||
Summary | 0002074: Unexpected behaviour in equality constraint | ||||
Description | This 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 Reproduce | Open 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 Information | If 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. | ||||
Tags | No tags attached. | ||||
FreeCAD Information | |||||
|
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 |
|
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. |
|
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. |
|
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! |
|
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. |
|
The expected behaviour here is a matter of previous experience. The solution given by the solver is a valid solution. |
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 |