Code for arXiv:1903.06137

The code to construct the partitions in [Lab2021b].

REFERENCES:

Lab2021b(1,2,3,4)

S. Labbé. Markov partitions for toral \(\mathbb{Z}^2\)-rotations featuring Jeandel-Rao Wang shift and model sets, Annales Henri Lebesgue 4 (2021) 283-324. https://doi.org/10.5802/ahl.73 Arxiv 1903.06137

Lab2018

S. Labbé. A self-similar aperiodic set of 19 Wang tiles. Geom. Dedicata, 201 (2019) 81-109 https://doi.org/10.1007/s10711-018-0384-8. Arxiv 1802.03265

EXAMPLES:

The partition associated to Jeandel-Rao Wang shift:

sage: from slabbe.arXiv_1903_06137 import jeandel_rao_wang_shift_partition
sage: P0 = jeandel_rao_wang_shift_partition()
sage: P0
Polyhedron partition of 24 atoms with 11 letters

The partition associated to the self-similar Wang shift \(\Omega_{\mathcal{U}}\):

sage: from slabbe.arXiv_1903_06137 import self_similar_19_atoms_partition
sage: PU = self_similar_19_atoms_partition()
sage: PU
Polyhedron partition of 19 atoms with 19 letters

A 5x5 valid pattern:

sage: from slabbe.wang_tiles import WangTiling
sage: from slabbe.arXiv_1903_06137 import jeandel_rao_tiles
sage: T0 = jeandel_rao_tiles()
sage: table = [[6, 1, 7, 2, 5],
....:          [6, 1, 3, 8, 7],
....:          [7, 0, 9, 7, 5],
....:          [4, 0, 9, 3, 7],
....:          [5, 0, 9, 10, 4]]
sage: t = WangTiling(table, tiles=T0)
sage: t._color = None

Image dans l’introduction de l’article:

sage: from slabbe.arXiv_1903_06137 import geometric_edges_shapes
sage: draw_H, draw_V = geometric_edges_shapes()
sage: tikz = t.tikz(color=None, draw_H=draw_H, draw_V=draw_V, 
....:              font=r'\bfseries', id=True, label=False, 
....:              id_color=r'black',scale="1,very thick")
sage: tikz._standalone_options = ["border=2mm"]
sage: _ = tikz.pdf(view=False)

Image dans l’appendice de l’article:

sage: extra = r'\node[yshift=2.5mm] at (1,5) {\Huge\ScissorRightBrokenBottom};'
sage: tikz = t.tikz(color=None, draw_H=draw_H, draw_V=draw_V,
....:         font=r'\bfseries\LARGE', id=True, label=False,
....:         id_color=r'black', scale="3,ultra thick", extra_after=extra)
sage: tikz._usepackage = ['amsmath', 'bbding']
sage: tikz._standalone_options = ["border=2mm"]
sage: _ = tikz.pdf(view=False)

Random generation of Jeandel-Rao tilings:

sage: from slabbe import random_jeandel_rao_rectangular_pattern
sage: tiling = random_jeandel_rao_rectangular_pattern(4, 4)
sage: tiling
A wang tiling of a 4 x 4 rectangle
sage: tiling.table()   # random
[[1, 10, 4, 5], [1, 3, 3, 7], [0, 9, 10, 4], [0, 9, 3, 3]]
slabbe.arXiv_1903_06137.T0_shapes()

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import T0_shapes
sage: T0_shapes()
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
[scale=1,very thick]
\tikzstyle{every node}=[font=\bfseries]
% tile at position (x,y)=(0.0, 0.0)
\node[black] at (0.5, 0.5) {0};
...
60 lines not printed (5279 characters in total).
...
\draw[blue] (15.0, 0.0) -- ++ (0,.15) arc (-90:90:.1) -- ++ (0,.05) arc (-90:90:.1) -- ++ (0,.05) arc (-90:90:.1) -- ++ (0,.15);
\draw[blue] (14.0, 1.0) -- ++ (.2,0) -- ++ (.1,.15) -- ++ (.1,-.15) -- ++ (.1,.15) -- ++ (.1,-.15) -- ++ (.1,.15) -- ++ (.1,-.15) -- ++ (.2,0);
\draw[blue] (14.0, 0.0) -- ++ (0,.35) arc (-90:90:.15) -- ++ (0,.35);
\draw[blue] (14.0, 0.0) -- ++ (.3,0) -- ++ (.1,.15) -- ++ (.1,-.15) -- ++ (.1,.15) -- ++ (.1,-.15) -- ++ (.3,0);
\end{tikzpicture}
\end{document}
slabbe.arXiv_1903_06137.T0_tiles()

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import T0_tiles
sage: T0_tiles()
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
[scale=1]
\tikzstyle{every node}=[font=\normalsize]
% tile at position (x,y)=(0.0, 0.0)
\fill[cyan] (1.0, 0.0) -- (0.5, 0.5) -- (1.0, 1.0);
...
137 lines not printed (6927 characters in total).
...
\node[rotate=0,black] at (14.8, 0.5) {3};
\node[rotate=0,black] at (14.5, 0.8) {3};
\node[rotate=0,black] at (14.2, 0.5) {1};
\node[rotate=0,black] at (14.5, 0.2) {2};
\end{tikzpicture}
\end{document}
slabbe.arXiv_1903_06137.geometric_edges_shapes()

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import geometric_edges_shapes
sage: draw_H, draw_V = geometric_edges_shapes()
slabbe.arXiv_1903_06137.jeandel_rao_tiles()

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import jeandel_rao_tiles
sage: jeandel_rao_tiles()
Wang tile set of cardinality 11
slabbe.arXiv_1903_06137.jeandel_rao_wang_shift_partition(backend=None)

This construct the polygon partition associated to Jeandel-Rao tilings introduced in [Lab2021b].

INPUT:

  • backend – string, polyhedron backend

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import jeandel_rao_wang_shift_partition
sage: P0 = jeandel_rao_wang_shift_partition()
sage: P0.is_pairwise_disjoint()
True
sage: P0.volume()
4*phi + 1

The volume is consistent with:

sage: z = polygen(QQ, 'z')
sage: K = NumberField(z**2-z-1, 'phi', embedding=RR(1.6))
sage: phi = K.gen()
sage: phi * (phi + 3)
4*phi + 1
slabbe.arXiv_1903_06137.plane_to_torus(m, n)

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import plane_to_torus
sage: plane_to_torus(0, 0)                       # abs tol 1e-10
(0.000000000000000, 0.0)
sage: plane_to_torus(0.324, .324)                # abs tol 1e-10
(0.324000000000000, 0.324)
sage: plane_to_torus(12.324, 12.324)             # abs tol 1e-10
(0.615796067500630, 3.08793202250021)
sage: plane_to_torus(100, 100)                   # abs tol 1e-10
(1.3343685400050447, 3.021286236252207)
slabbe.arXiv_1903_06137.random_jeandel_rao_rectangular_pattern(width, height, start=None)

Returns a jeandel rao rectangular pattern associated to a given (random) starting position on the torus.

INPUT:

  • width – integer

  • height – integer

  • start – pair of real numbers (default:None), if None a random start point is chosen

OUTPUT:

list of lists

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import random_jeandel_rao_rectangular_pattern
sage: tiling = random_jeandel_rao_rectangular_pattern(4,4)
sage: tiling
A wang tiling of a 4 x 4 rectangle
sage: tiling.table()   # random
[[1, 10, 4, 5], [1, 3, 3, 7], [0, 9, 10, 4], [0, 9, 3, 3]]
slabbe.arXiv_1903_06137.random_torus_point()

Return a random point in the rectangle \([0,\phi[\times[0,\phi+3[\).

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import random_torus_point
sage: random_torus_point()                  # random
(0.947478386174632, 2.62013791669977)
sage: random_torus_point()                  # random
(0.568010404619112, 0.933319012345482)
sage: random_torus_point()                  # random
(1.06782191679796, 4.58930423801758)
sage: from slabbe.arXiv_1903_06137 import torus_to_code
sage: torus_to_code(*random_torus_point())                  # random
3
sage: torus_to_code(*random_torus_point())                  # random
7
slabbe.arXiv_1903_06137.self_similar_19_atoms_partition(backend=None)

This construct the polygon partition introduced in [Lab2021b] associated to the self-similar 19 Wang tiles [Lab2018].

INPUT:

  • backend – string, polyhedron backend

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import self_similar_19_atoms_partition
sage: PU = self_similar_19_atoms_partition()
sage: PU.is_pairwise_disjoint()
True
sage: PU.volume()
1
slabbe.arXiv_1903_06137.torus_to_code(x, y)

Return in which atom of the partition associated to Jeandel-Rao tilings the point (x,y) falls in according to [Lab2021b].

EXAMPLES:

sage: from slabbe.arXiv_1903_06137 import torus_to_code
sage: torus_to_code(0,0)
0
sage: torus_to_code(0.23,3.5)
5
sage: torus_to_code(1.23,2.243)
3
sage: from slabbe.arXiv_1903_06137 import plane_to_torus, random_torus_point
sage: torus_to_code(*plane_to_torus(14.4141, 89.14))
9
sage: torus_to_code(*random_torus_point())                  # random
3