ref T66422
Definition of terms used:
Constraint Plane: When the movement is constrained to a plane (Example: pressing Shift + Z while moving).
Constraint Axis: When the movement is constrained to a line (Example: pressing Z while moving).
This patch proposes to change the behavior of 4 snapping combinations:
1. While constraining to a plane, snap to an edge element:
The snap is made at the intersection between the edge direction and the constraint plane.
2. While constraining to a plane, snap to a face element:
The snap is made to the nearest point between the snap point and the line that intersects the face plane with the constraint plane.
3. While constraining to an axis, snap to an edge/line element:
The snap is made to the nearest point on the axis to the edge/line element.
4. While constraining to an axis, snap to a face element:
The snap is made at the intersection of the axis and the plane defined by the face.
To avoid unpredictable jumps outside view boundaries, an alignment check is made for each of these snapping combinations.
Scene for testing:
