πŸ“œ ⬆️ ⬇️

Not a simple coordinate system, but a gold one.

In one of the Penrose mosaics, only two diamonds with different angles are used. From these elements it is possible to build an aperiodic mosaic of any size. To display it, I tried to present the coordinates analytically.

image

The distribution of angles in a diamond in one is 1: 4, 36 Β°: 144 Β°, in the other 2: 3, 72 Β°: 108 Β°. Diamond angles are multiples of one-tenth of a full turn, 36 Β°.

Determine the coordinates of the corners of a regular decagon.

degreecossin
0one0
360,8090170.587785
720,3090170.951056

')
image

The rest are symmetrical, only the sign changes.

It is immediately noticeable that the cosines of the angles 36 Β° and 72 Β° differ by 0.5. And this is a very significant fact!

The absolute values ​​of the coordinates are exactly three pieces, both for the abscissa and ordinate coordinates. All three can be represented as two coefficients with integer multipliers.

For the abscissa coordinates, it is simple: among the values ​​are zero, which is represented by zero multipliers. Among the ordinate coordinates, the third β€” one β€” is not commensurate with the other two. But, since the difference in coordinates is 0.5, this difference may become one of the coefficients, and the second coefficient will be a smaller value. A value of 1 is obtained by a factor of 2.

* 36 Β°xy
C xa = 0,5C xb = 0.309017C ya = 0.951056C xb = 0,587785
02000
oneoneone0one
20oneone0
30-oneone0
four-one-one0one
five-2000
6-one-one0-one
70-one-one0
eight0one-one0
9oneone0-one


And that means there is an integer coordinate system.

\ {x_1, x_2, y_1, y_2 \} = (C_ {xa} x_1 + C_ {xb} x_2, C_ {ya} y_1 + C_ {yb} y_2)

image

The coefficients differ in pairs by the same factor, this is the coefficient of the golden section.

Cxb= varphiCxa

Cyb= varphiCya

 varphi= frac sqrt5βˆ’12

You can display an exact representation for the coefficients.

Cxa= frac12

Cxb= frac varphi2

Cya= frac sqrt3+ varphi2

Cyb= frac sqrt2βˆ’ varphi2

Then the magic of the golden section:

 varphi2=1βˆ’ varphi

(a+b varphi) cdot varphi=a cdot varphi+b(1βˆ’ varphi)=b+(aβˆ’b) varphi

(a+b varphi)/ varphi=(b+a)+a varphi

(3+ varphi)(2βˆ’ varphi)=6+2 varphiβˆ’3 varphiβˆ’ varphi2=6βˆ’ varphiβˆ’(1βˆ’ varphi)=5

From here a set of laws:

Trivial:

Cxa cdotCxa=Cxa/2
Cxa cdotCxb=Cxb/2
Cxa cdotCya=Cya/2
Cxa cdotCyb=Cyb/2

Due to the equality of the ratio of the coefficients:

Cxb cdotCya= varphi cdotCxa cdotCya= varphi cdotCya/2=Cyb/2
Cxb cdotCyb= varphi cdotCxa cdot varphi cdotCya=(1βˆ’ varphi) cdotCya/2=(Cyaβˆ’Cyb)/2

Squares of coefficients:

Cxb cdotCxb=(1βˆ’ varphi)/4=(Cxaβˆ’Cxb)/2
Cya cdotCya=(3+ varphi)/4=(3Cxa+Cxb)/2
Cyb cdotCyb=(2βˆ’ varphi)/4=(2Cxaβˆ’Cxb)/2

Composition:

Cya cdotCyb= sqrt(3+ varphi)(2βˆ’ varphi)/4= sqrt5/4=(1+2 varphi)/4=(Cxa+2Cxb)/2

Based on these properties, you can create a matrix for integer multiplication of vectors:

const crd vmul[16] = { { 1, 0, 0, 0}, { 0, 1, 0, 0}, { 0, 0, 1, 0}, { 0, 0, 0, 1}, { 0, 1, 0, 0}, { 1,-1, 0, 0}, { 0, 0, 0, 1}, { 0, 0, 1,-1}, { 0, 0, 1, 0}, { 0, 0, 0, 1}, {-3,-1, 0, 0}, {-1,-2, 0, 0}, { 0, 0, 0, 1}, { 0, 0, 1,-1}, {-1,-2, 0, 0}, {-2, 1, 0, 0} }; 

And all multiplication is reduced to

 int* vm = (int*)vmul; for(int i = 0; i < 4; i++) for(int j = 0; j < 4; j++) for(int k = 0; k < 4; k++) v3[k] += v1[i] * v2[j] * vm[(i * 4 + j) * 4 + k]; 

The vector unit in this system is expressed as {2,0,0,0}. After a simple change of such units, we get {4,0,0,0}. So, the division into two, which was in each formula for the coefficients, is carried out separately, as normalization:

 for(int i = 0; i < 4; i++) v3[i] /= 2; 

The peculiarity of this coordinate system is that it covers the entire plane with any given accuracy. You can repeat any number of steps, choosing any of the ten directions and still remain in integer coordinates.

But not all combinations of coordinates determine the place reachable from the initial position.

For one step, the coordinates are as follows: {2,0,0,0}, {1,1,0,1}, {0,1,1,0}, {0, -1,1,0}, { -1, -1,0,1}, {-2,0,0,0}, {-1, -1,0, -1}, {0, -1, -1,0}, {0, 1, -1.0}, {1,1,0, -1}. Any combination of these steps is valid.

Together with a single step {2,0,0,0} combinations
{0,1,1,0} - {0,1, -1,0} = {0,0,2,0},
{1,1,0,1} - {1,1,0, -1} = {0,0,0,2},
{1,1,0,1} + {1,1,0, -1} - {2,0,0,0} = {0,2,0,0}
This means that any single coordinate can be shifted by 2, which means that only group parity of coordinates affects reachability. There are four achievable combinations: zero: {0,0,0,0}, from single steps: {1,1,0,1}, {0,1,1,0}, and their combination: {1,0, 1.1}.

As can be seen, the group parity of the abcissal coordinates is uniquely interrelated with the group parity of the ordinate coordinates. This means that the vertical coordinates are divided into four types, the horizontal coordinates are also divided into 4 types, and the coordinate system contains points only with their correct combination.

image


To approach an arbitrary point, you need to decompose each coordinate into suitable integer factors, taking into account group parity.

In general, there is a coordinate system that combines an integer coordinate value and turns of 36 Β°. When I brought her out, I was surprised that I did not know about her before. But now about her there is an article on HabrΓ©.

 frac displaystyle frac5βˆ’ sqrt55+ sqrt5βˆ’ sqrt displaystyle frac5+ sqrt55βˆ’ sqrt5 displaystyle frac5+ sqrt55βˆ’ sqrt5+ sqrt frac5βˆ’ sqrt55+ sqrt5+ frac5βˆ’ sqrt55+ sqrt5=0



 frac5βˆ’ sqrt55+ sqrt5+ sqrt frac5βˆ’ sqrt55+ sqrt5 overset1= frac5+ sqrt55βˆ’ sqrt5βˆ’ sqrt frac5+ sqrt55βˆ’ sqrt5

Source: https://habr.com/ru/post/342556/


All Articles