In the last post “Projection method for 10-fold rotational symmetry” I have shown that five sets of parallel lines define a quasiperiodic structure. Here I am giving more details on the method.
As mentioned before, four sets of lines give the quasiperiodic Ammann-Beenker tiling with eight-fold rotational symmetry. Then, six sets give a quasiperiodic structure with 12-fold rotational symmetry. And in general, n sets of lines give a 2n-fold rotational symmetry.
To define a set of lines we first get a vector that is perpendicular to these lines. Now, let i be the index for this set. It goes from 0 to n. The cartesian coordinates of this vector are
(a_i, b_i)=(cos(i*PI/n, sin(i*PI/n)) .
The points (x,y) at the lines of the set result from the scalar product
(a_i,b_i) * (x,y)=a_i*x+b_i*y=s_i + k_i .
Here k_i is an integer number that distinguishes the different lines of the set and s_i is a small constant number related to the position of the lines.
Two lines numbered k_i and (k_i)+1 are the borders of a stripe with width equal to 1. For any point (x,y) in the plane we find the stripe it belongs to by calculating
If K is an integer number then the point lies exactly on a line of the set. Else, the point is inside the stripe given by the integer part of K.
The points of the stars are actually intersections between two lines of different sets. To get them we have simply to solve the system of the two linear equations given by the lines.
I have put these ideas into a class called “Stripes”. Its code will be posted later.
Now to get all possible stars we note that their leftmost points have to lie at intersections of the lines of sets i=1 and i=n-1. Thus we look at all these intersections. In the figure below the black circle shows such an intersection.
For i=0 the stripe has to lie at the right of the leftmost point of the star. For all remaining i=2 to i=n-2 this point lies inside the stripes. Then the other points of the star (red circles) result from the intersections of the borders of the stripes. We only got a 2n-pointed star if these points lie outside their corresponding stripes. To be more precise, points resulting from the intersection of two stripes with index i and i+2 have to lie outside the stripe with index i+1.
Each 2n-pointed star gives us a point of the quasiperiodic structure with 2n-fold rotational symmetry. It simply is the average of all points of the star. Here it is shown as a blue circle.
You find the code doing this in the next post. Note that you will also need the code of the class Vector, the class Stripes and the procedures posted in “saving images – the code” and “setting up the coordinates – the modified code“.
Note added on the 20th september:
I changed my mind and I prefer to present details first and a rather complete program later. This avoids repetition of nearly the same code. It is a pity that I have no one here to discuss these things. Now I have got to go gardening.