Symmetries of a square

Since the CAM bitplanes have as many rows as columns, the symmetry operations of a square can be performed upon them, consisting of both rotations and reflections. To do so requires rule tables corresponding to shifts, shears, and cross shifts; of these the shifts (whose table is generated by vnshift) have already been described because they are also responsible for translations.

Shears require a control plane containing a sweeping curtain, whose rule table is generated by vscurtab(t,l,p). The argument int *t is the array which will contain the table, char l specifies the direction of expansion of the curtain; int p identifies which plane is destined to hold the curtain, but only its parity matters.

The function to generate the table for a cross shift is vncshift(t,l,m) with the same arguments as vnshift. Planes 0 and 1 are either shifted or cross shifted, according to the central cell taken from plane 2; plane 3 remains unaltered.

The subroutine inshth(c) is designed to set up the rules which will execute all the shifts required to generate a given reflection. The argument *char c is a character string pqrs specifying the normal shift in planes 0 and 1 plus the cross shifts to be performed when directed by the control plane. The letters range over the same values found in the function apzoc; by using complements additional effects can be achieved.

Values of c leading to the reflective symmetries of the square are shown in the following table.



Harold V. McIntosh
E-mail:mcintosh@servidor.unam.mx