Again something for the more mathematically minded. I am discussing here some important details on the earlier post “A tiling of 12-fold rotational symmetry …” . Actually, these calculations are similar as in the earlier post “How to find these corner points …” for the tiling of 8-fold rotational symmetry. Same complications arise because we now have to consider hexagon grids instead of square grids.
We use hexagons with sides of a length equal to 1. The centers of the hexagons form a grid of triangles, which is the dual of the hexagon grid (for more information see “Dual Tessellation” – from Wolfram math world). The distance between the centers is equal to the square root of 3. The hexagons of the first grid have one side parallel to the y-axis. Their centers are given by
x1(i1,j1) = sqrt(3)*(i1 - 0.5 * j1) and y1(i1,j1) = (3/2)*j1 ,
where i1 and j1 are integer numbers. The second grid has same hexagon sides parallel to the x-axis
x2(i2,j2) = -(3/2)*i2 and y2(i2,j2) = sqrt(3) *(j2 - 0.5 * i2) ,
where i2 and j2 are integer numbers.
Two hexagons form a complete 12-pointed star, if their centers are sufficiently close to each other. Thus we calculate the absolute value of the difference of the positions
dx = abs(x1-x2) and dy = abs(y1-y2) .
Here, the vector (dx,dy) has to be inside a dodecagon. The appropriate conditions are
dx < 1 - sqrt(3) /2 , (sqrt(3) * dx + dy)/2 < 1 - sqrt(3)/2 , (dx + sqrt(3) * dy)/2 < 1 - sqrt(3)/2 and dx < 1 - sqrt(3) /2 .
Then, the corner point of the tiling lies in the middle between the two centers, thus its coordinates are
x = (x1+x2)/2 and y = (y1+y2)/2 .
All this is easy to program. First one steps through all values of i1 and j1 with same limits. Then one obtains from x1 and y1 the indices i2 and j2 of the closest hexagon of the second grid using rounding operations. Thus this is fast. Finding the edges of the tiling is then much more demanding.
Note the special orientation of the steps going through the grids. Increasing i1 we go to the right, parallel to the x-axis. Increasing j1, we go up and to the left at an angle of 120 degrees to the x-axis. Decreasing both i1 and j1 we go down and to the left, again at an angle of 120 degrees to the x-axis. These three directions agree with the symmetry of the triangle grid.
As before, we can think of the indices i1,j1,i2 and j2 as creating a for-dimensional space with points
p_x=sqrt(3) * i1 – 0.5*j1 – sqrt(3)/2 * i2 ,
p_y=sqrt(3)/2 * j1 + sqrt(3) * j2 – 0.5 * i2 ,
p_z=sqrt(3) * i1 – 0.5*j1 + sqrt(3)/2 * i2 and
p_w=sqrt(3)/2 * j1 – sqrt(3) * j2 + 0.5 * i2 .
The conditions for a corner point are then given by dx=p_w and dy=p_z and its position is x=p_x/2 and y=p_y/2. Thus we get the this tiling with 12-fold rotational symmetry as a projection of a section of 4-dimensional space.
It is interesting that we can get other tilings if we consider larger or smaller hexagons with the same center, but with different lengths L of their sides. The conditions for a corner point are then
dx/L < 1 - sqrt(3) /2 , (sqrt(3) * dx + dy)/2L < 1 - sqrt(3)/2 , (dx + sqrt(3) * dy)/2L < 1 - sqrt(3)/2 and dx/L < 1 - sqrt(3) /2 .
Values of L=sqrt(3) or L=1/sqrt(3) may be especially interesting. Larger values for L give more tiling points.