Three transforms give the color of an output image pixel.

1. From output pixel indices (i,j) to geometric space
Isotropic scaling and translation
(x,y) = scale * (i,j) + offset

2. A nonlinear mapping in geometric space creates symmetries.

3. From geometric space to input image pixel indices (h,k)
Rotation, isotropic scaling and translation
(h,k) = rotation * scale * (x,y) + offset.

The color of a pixel at (i,j) results from the input image near index values (h,k).

You can interact with these transformations.