Smile's horsehoe mapping usually serves as a milestone in the research of nonlinear mappings yielding fractals. Strangely, finding code which implements the algorithm is not that easy. Find here Java code for the generation of the horseshoe fractal.
For the mapping
following holds: areas B, C and D lie inside [-1;-1] → [+1;+1]. Applying the mapping f, A, C and E are getting lost, i.e. leave (and never come back into) [-1;-1] → [+1;+1]. B and D first get horizontally squeezed by a factor ALPHA less than 0.5, then stretched vertically by 1/ALPHA (hence greater than 2.0), then bent. As can be seen from the figure, some (small) parts of B and D will get lost as well. Half the height of C is called C2 inside the code below.
The extent of the code rather moderate, I do not develop an elaborated design but rather pack everything into one class, which reads as shown in Horseshoe.java
The algorithm lies inside method mapHorseshoe(). The program determines for many random points, if and when iteratedly applying the mapping the point leaves the area given by corners [-1;-1] and [+1;+1].
The output might look like: