Alignment is solved per slot, so each part turns about its own centroid. That is usually what you want: a hamburger should fold, with its strokes moving independently, rather than spinning as a block.
Sometimes the whole icon really is one rigid rotation, and then per-slot motion is wrong.
After aligning each slot, the compiler runs the same fit over every slot's points at once. If that global residual is under 5e-3 the icon is congruent, and every slot is forced onto one shared rotation and scale.
| Pair | Linear | Polar | Cost |
|---|---|---|---|
| download to upload | 206 B / 2311 B 2 kf / 17 kf |
Here is the part that is easy to get wrong. Suppose every slot now rotates by the same angle, but each slot's centroid still travels a straight line between its start and end.
The rotation is correct and the icon still deforms, because an off-centre slot's centroid should itself be travelling an arc around the icon's centre. Moving it along the chord instead pulls it inward mid-flight.
The fix is to let each centroid ride the shared transform around the icon's global centre, rather than lerping it. A drift term is fixed once so the target still lands exactly.
Every point of every slot then moves under one transform per frame, so a congruent icon is rigid for the whole flight and not only at its endpoints.
It degrades continuously. With no rotation, or with centroids sitting on the global centre, or with no rigid fit at all, the formula collapses back to the plain lerp. There are no thresholds and no special cases.
The property to test is not "does it look right" but "does the distance between two slots
stay constant". For arrow-right to arrow-down the barb-to-shaft distance holds at
8.6533 at every sampled value of t, where without block transport it fell to about 40% at
the midpoint.