Problem C
Biometrics
A simple biometric system translates a human image into a polygon by considering certain features (eyes, nose, ears, etc.) to be vertices and connecting them with line segments. The polygon has distinct vertices but may be degenerate in that the line segments could intersect. Because these polygons are generally created from remote images, there is some uncertainty as to their scale and rotation. Your job is to determine whether or not two polygons are similar; that is, can they be made equal by repositioning, rotating and magnifying them?
Input
Input consists of several test cases. Each test case consists of three lines containing:
-
$f$, the number of features
-
$f$ coordinate pairs giving the vertices of the first polygon
-
$f$ coordinate pairs giving the vertices of the second polygon
The vertices for both polygons correspond to the same set of features in the same order; for example, right ear tip, chin cleft, right eye, nose, left eye, left ear tip, space between front teeth.
Each polygon has $f$ distinct vertices; each vertex is given as an $x$ and $y$ coordinate pair. There are at least three and no more than ten features. Coordinates are integers between $-2000$ and $2000$. A line containing $0$ follows the last test case.
Output
For each case, output a line “similar” or “dissimilar” as appropriate. The two polygons are similar if, after some combination of translation, rotation, and scaling (but not reflection) both vertices corresponding to each feature are in the same position.
Sample Input 1 | Sample Output 1 |
---|---|
4 0 0 0 1 1 1 1 0 0 1 1 0 0 -1 -1 0 3 0 0 10 0 10 10 0 0 -10 0 -10 10 3 0 0 10 10 20 20 0 0 11 11 22 22 3 0 0 10 10 20 20 0 0 11 11 20 20 0 |
similar dissimilar similar dissimilar |