I am implementing an image editing feature in a mobile productivity app. The feature is used to crop and rectify a camera image of a document. (This is also known as dewarping, straightening, or perspective correction.)
In particular, I am implementing the user-guided cropping mode, where the user can select the four corners of the document on the image, and proceed to see the cropped and rectified result.
Here, I face the following dilemma about discrepancies between the mental model and domain (mathematical) model.
For the four corners to be valid for the domain model, it must be a convex quadrilateral. Therefore, concave and "bow-tie" quadrilaterals are not valid for the domain model. See this article for illustration.
However, recently the UX team tells me that the application should not stop the user from using a concave or bow-tie quadrilateral. Their reason is that:
- Users may not be able to understand the error message that will be shown to them.
- Any error message or constraints that prevent user from proceeding to see the result will induce a negative emotion in the user. The app's current design philosophy is to minimize such sources of negative reaction.
Initially I am surprised by this request because:
- It is a mathematically impossible operation to try to rectify an image with a concave quadrilateral. It is comparable to asking a spreadsheet to perform a division-by-zero and still give a meaningful output.
- The underlying backend performs validation according to the domain model, therefore it is not something that can be workaround (bypassed).
Upon reflecting, I noticed that the request arises because the UX design is based on a different user mental model: a rubber-band on a peg board. See this page for illustration.
There are a number of discrepancies between these two models:
- Convex quadrilateral
- Valid in both models
- Concave quadrilateral
- Valid as a rubber-band;
- Not valid for the image rectification domain model.
- Triangle, Pentagon, or polygon with any number of sides
- Valid as a rubber-band;
- Not valid for the image rectification domain model.
- A convex quadrilateral with some corners outside the image
- Not valid as a rubber-band on a peg board;
- Valid as an image rectification domain model
The mobile app is designed for general public, therefore I cannot make assumptions about the user's mathematical knowledge. Therefore, it makes sense to use the simplest mental model that is widely understood by general users.
However, it is impossible to produce a valid output because of the backend (domain validation) requirements. The UX is adamant about avoiding negativities in the app design. Are there any solutions?
Related readings
I did some online search and found this article about the trends in data validation. It raises some points that modern UI designers must consider, in a way that departs from the traditional viewpoint which holds the domain validation as gold standard.
Here's my understanding from this article:
- First and foremost, anything that doesn't proceed smoothly will cause frustration (negative emotion).
- The user may ignore, or dismiss too quickly, or poorly comprehend any error messages that will be shown to them.
- Even if the user understands that there is an error, the user may not know what corrective action needs to be taken.
- For online forms, navigating between the invalid fields throughout a long page will be overwhelming for the user. (This does not apply to my situation; I'm just mentioning it for completeness.)