diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/penrose/tikzlibrarypenrose.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/penrose/tikzlibrarypenrose.code.tex | 2226 |
1 files changed, 0 insertions, 2226 deletions
diff --git a/Master/texmf-dist/tex/latex/penrose/tikzlibrarypenrose.code.tex b/Master/texmf-dist/tex/latex/penrose/tikzlibrarypenrose.code.tex deleted file mode 100644 index 8be0db1cd14..00000000000 --- a/Master/texmf-dist/tex/latex/penrose/tikzlibrarypenrose.code.tex +++ /dev/null @@ -1,2226 +0,0 @@ -%% -%% This is file `tikzlibrarypenrose.code.tex', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% penrose_code.dtx (with options: `package') -%% ---------------------------------------------------------------- -%% penrose --- TikZ library for producing Penrose tilings -%% E-mail: loopspace@mathforge.org -%% Released under the LaTeX Project Public License v1.3c or later -%% See http://www.latex-project.org/lppl.txt -%% ---------------------------------------------------------------- -%% -\ProvidesExplFile {tikzlibrarypenrose.code.tex} {2021/01/22} {1.4} {TikZ pics for Penrose and other tiles} -\RequirePackage{spath3} -\usetikzlibrary{spath3} -\ExplSyntaxOn -\tl_new:N \g__penrose_side_a_tl -\tl_new:N \g__penrose_side_b_tl -\tl_new:N \g__penrose_side_c_tl -\tl_new:N \g__penrose_side_d_tl -\tl_new:N \g__penrose_side_e_tl -\tl_new:N \g__penrose_side_A_tl -\tl_new:N \g__penrose_side_B_tl -\tl_new:N \g__penrose_side_C_tl -\tl_new:N \g__penrose_side_D_tl -\tl_new:N \g__penrose_side_E_tl -\tl_gset:Nn \g__penrose_side_a_tl -{ - \pgfsyssoftpath@movetotoken{0pt}{0pt} - \pgfsyssoftpath@linetotoken{1pt}{0pt} -} -\tl_gset_eq:NN \g__penrose_side_b_tl \g__penrose_side_a_tl -\tl_gset_eq:NN \g__penrose_side_c_tl \g__penrose_side_a_tl -\tl_gset_eq:NN \g__penrose_side_d_tl \g__penrose_side_a_tl -\tl_gset_eq:NN \g__penrose_side_e_tl \g__penrose_side_a_tl -\tl_gset_eq:NN \g__penrose_side_A_tl \g__penrose_side_a_tl -\tl_gset_eq:NN \g__penrose_side_B_tl \g__penrose_side_a_tl -\tl_gset_eq:NN \g__penrose_side_C_tl \g__penrose_side_a_tl -\tl_gset_eq:NN \g__penrose_side_D_tl \g__penrose_side_a_tl -\tl_gset_eq:NN \g__penrose_side_E_tl \g__penrose_side_a_tl -\fp_new:N \l__penrose_tmpa_fp -\fp_new:N \l__penrose_tmpb_fp -\fp_new:N \l__penrose_tmpc_fp -\str_new:N \l__penrose_tmpa_str -\str_new:N \l__penrose_tmpb_str -\tl_new:N \l__penrose_tmpa_tl -\tl_new:N \l__penrose_tmpb_tl -\tl_new:N \l__penrose_tmpc_tl -\tl_new:N \l__penrose_tmpd_tl -\tl_new:N \l__penrose_tmp_tile_path_tl -\tl_new:N \g__penrose_smuggle_tl -\int_new:N \l__penrose_tmpa_int -\int_new:N \l__penrose_tmpb_int -\dim_new:N \l__penrose_xa_dim -\dim_new:N \l__penrose_ya_dim -\dim_new:N \l__penrose_xb_dim -\dim_new:N \l__penrose_yb_dim -\prop_new:N \l__penrose_tmpa_prop -\cs_new_nopar:Npn \__penrose_normalise_path:Nn #1#2 -{ - \group_begin: - \spath_initialpoint:Nn \l__penrose_tmpa_tl {#2} - \fp_set:Nn \l__penrose_tmpa_fp {\tl_head:N \l__penrose_tmpa_tl} - \tl_set:Nx \l__penrose_tmpa_tl {\tl_tail:N \l__penrose_tmpa_tl} - \fp_set:Nn \l__penrose_tmpb_fp {\tl_head:N \l__penrose_tmpa_tl} - \spath_finalpoint:Nn \l__penrose_tmpa_tl {#2} - \fp_set:Nn \l__penrose_tmpa_fp - {\tl_head:N \l__penrose_tmpa_tl - \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpa_tl {\tl_tail:N \l__penrose_tmpa_tl} - \fp_set:Nn \l__penrose_tmpb_fp - {\tl_head:N \l__penrose_tmpa_tl - \l__penrose_tmpb_fp} - \fp_set:Nn \l__penrose_tmpc_fp - {\l__penrose_tmpa_fp^2 + \l__penrose_tmpb_fp^2} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_tmpa_fp/\l__penrose_tmpc_fp} - \fp_set:Nn \l__penrose_tmpb_fp {\l__penrose_tmpb_fp/\l__penrose_tmpc_fp} - \fp_set:Nn \l__penrose_tmpc_fp {-\l__penrose_tmpb_fp} - \tl_set:Nx \l__penrose_tmpb_tl - { - {\fp_use:N \l__penrose_tmpa_fp} - {\fp_use:N \l__penrose_tmpc_fp} % swapped - {\fp_use:N \l__penrose_tmpb_fp} % swapped - {\fp_use:N \l__penrose_tmpa_fp} - } - \spath_initialpoint:Nn \l__penrose_tmpa_tl {#2} - \fp_set:Nn \l__penrose_tmpa_fp - { - (-1) * \l__penrose_tmpa_fp * \tl_head:N \l__penrose_tmpa_tl - + (-1) * \l__penrose_tmpb_fp * \tl_tail:N \l__penrose_tmpa_tl - } - \fp_set:Nn \l__penrose_tmpb_fp - { - (-1) * \l__penrose_tmpa_fp * \tl_tail:N \l__penrose_tmpa_tl - + \l__penrose_tmpb_fp * \tl_head:N \l__penrose_tmpa_tl - } - \tl_put_right:Nx \l__penrose_tmpb_tl { - {\fp_to_dim:N \l__penrose_tmpa_fp} - {\fp_to_dim:N \l__penrose_tmpb_fp} - } - \spath_transform:NnV \l__penrose_tmpa_tl {#2} \l__penrose_tmpb_tl - \tl_gset_eq:NN \g__penrose_smuggle_tl \l__penrose_tmpa_tl - \group_end: - \tl_set_eq:NN #1 \g__penrose_smuggle_tl - \tl_gclear:N \g__penrose_smuggle_tl -} -\cs_generate_variant:Nn \__penrose_normalise_path:Nn {NV, cn, cV} -\cs_new_protected_nopar:Npn \__penrose_normalise_path:N #1 -{ - \__penrose_normalise_path:NV #1#1 -} -\cs_generate_variant:Nn \__penrose_normalise_path:N {c} -\NewDocumentCommand \SetPenrosePath { m } -{ - \pgfsyssoftpath@getcurrentpath\l__penrose_tmpa_tl - \__penrose_normalise_path:N \l__penrose_tmpa_tl - \tl_gset_eq:cN {g__penrose_side_#1_tl} \l__penrose_tmpa_tl -} -\cs_new_nopar:Npn \tikz_scan_point:n #1 -{ - \tikz@scan@one@point\pgfutil@firstofone#1\relax -} -\cs_generate_variant:Nn \tikz_scan_point:n {V} -\cs_new_nopar:Npn \__penrose_make_tile:nnn #1#2#3 -{ - \group_begin: - \tl_set:Nn \l__penrose_tmpa_tl {#3} - \tl_set:Nx \l__penrose_tmpb_tl {\tl_head:N \l__penrose_tmpa_tl} - \tl_set:Nn \l__penrose_tmpa_tl {\pgfsyssoftpath@movetotoken} - \tikz_scan_point:V \l__penrose_tmpb_tl - \tl_put_right:Nx \l__penrose_tmpa_tl - { - {\dim_use:N \pgf@x}{\dim_use:N \pgf@y} - } - \tl_set_eq:NN \l__penrose_tmp_tile_path_tl \l__penrose_tmpa_tl - \tl_set:Nn \l__penrose_tmpa_tl {#3} - \tl_put_right:Nx \l__penrose_tmpa_tl {{\tl_head:N \l__penrose_tmpa_tl}} - \tl_map_inline:nn {#2} { - \tl_set:Nx \l__penrose_tmpc_tl {\tl_head:n {##1}} - \tl_set_eq:Nc \l__penrose_tmpd_tl {g__penrose_side_ \tl_use:N \l__penrose_tmpc_tl _tl} - \tl_set:Nx \l__penrose_tmpb_tl {\tl_head:N \l__penrose_tmpa_tl} - \tl_set:Nx \l__penrose_tmpa_tl {\tl_tail:N \l__penrose_tmpa_tl} - \tikz_scan_point:V \l__penrose_tmpb_tl - \fp_set:Nn \l__penrose_tmpa_fp { \pgf@x } - \fp_set:Nn \l__penrose_tmpb_fp { \pgf@y } - \tl_set:Nx \l__penrose_tmpb_tl {\tl_head:N \l__penrose_tmpa_tl} - \tikz_scan_point:V \l__penrose_tmpb_tl - \fp_set:Nn \l__penrose_tmpa_fp {\pgf@x - \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpb_fp {\pgf@y - \l__penrose_tmpb_fp} - \fp_set:Nn \l__penrose_tmpc_fp {-\l__penrose_tmpb_fp} - \tl_set:Nx \l__penrose_tmpb_tl - { - {\fp_use:N \l__penrose_tmpa_fp} - {\fp_use:N \l__penrose_tmpb_fp} % not swapped - {\fp_use:N \l__penrose_tmpc_fp} % not swapped - {\fp_use:N \l__penrose_tmpa_fp} - {0} - {0} - } - \spath_transform:NV \l__penrose_tmpd_tl \l__penrose_tmpb_tl - \spath_weld:NV \l__penrose_tmp_tile_path_tl \l__penrose_tmpd_tl - } - \spath_close:N \l__penrose_tmp_tile_path_tl - \tl_gset_eq:NN \g__penrose_smuggle_tl \l__penrose_tmp_tile_path_tl - \group_end: - \tl_gclear_new:c {g__penrose_tile_#1_tl} - \tl_gset_eq:cN {g__penrose_tile_#1_tl} \g__penrose_smuggle_tl - \tl_gclear:N \g__penrose_smuggle_tl -} -\cs_new_nopar:Npn \__penrose_make_tile:nn #1#2 -{ - \__penrose_make_tile:nnn {#1} #2 -} -\cs_generate_variant:Nn \__penrose_make_tile:nn {nV} -\prop_new:N \g__penrose_tiles_prop -\cs_new_nopar:Npn \__penrose_add_coordinate:Nnn #1#2#3 { - \fp_set:Nn \l__penrose_tmpa_fp{#2} - \fp_set:Nn \l__penrose_tmpb_fp{#3} - \tl_put_right:Nx #1 - { - {(\fp_use:N \l__penrose_tmpa_fp, \fp_use:N \l__penrose_tmpb_fp)} - } -} -\cs_new_nopar:Npn \__penrose_add_coordinate:w #1#2,#3 \q_stop -{ - \__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {#2}{#3} -} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(18)}{sind(18)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {2*cosd(18)}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(18)}{-sind(18)} - -\prop_gput:Nnx \g__penrose_tiles_prop {thin~ rhombus} -{{a A B b} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(36)}{sind(36)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {2*cosd(36)}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(36)}{-sind(36)} - -\prop_gput:Nnx \g__penrose_tiles_prop {thick~ rhombus} -{{B a A b} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl -{2*sind(18)*cosd(108)}{2*sind(18)*sind(108)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {2*sind(18)}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl -{2*sind(18)*cosd(108)}{-2*sind(18)*sind(108)} - -\prop_gput:Nnx \g__penrose_tiles_prop {dart} -{{c a A C} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(36)}{sind(36)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {1}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(36)}{-sind(36)} - -\prop_gput:Nnx \g__penrose_tiles_prop {kite} -{{a c C A} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(18)}{sind(18)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(18)}{-sind(18)} - -\prop_gput:Nnx \g__penrose_tiles_prop {golden~ triangle} -{{a c b} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(18)}{sind(18)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(18)}{-sind(18)} - -\prop_gput:Nnx \g__penrose_tiles_prop {reverse~ golden~ triangle} -{{B C A} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(36)}{sind(36)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {2*cosd(36)}{0} - -\prop_gput:Nnx \g__penrose_tiles_prop {golden~ gnomon} -{{C b A} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {2*cosd(36)}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(36)}{-sind(36)} -\prop_gput:Nnx \g__penrose_tiles_prop {reverse~ golden~ gnomon} -{{a B c} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(108)}{sind(108)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl -{1+cosd(72)+cosd(144)}{sind(72)+sind(144)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {1+cosd(72)}{sind(72)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {1}{0} -\prop_gput:Nnx \g__penrose_tiles_prop {pentagon~ 5} -{{a a a a a} {\tl_use:N \l__penrose_tmpa_tl}} -\prop_gput:Nnx \g__penrose_tiles_prop {pentagon~ 3} -{{A b a a b} {\tl_use:N \l__penrose_tmpa_tl}} -\prop_gput:Nnx \g__penrose_tiles_prop {pentagon~ 2} -{{d A e c A} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {1}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {1-cosd(36)}{-sind(36)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl -{1-cosd(36)-cosd(108)}{-sind(36)-sind(108)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(108)}{-sind(108)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl -{-1+3*cosd(108)+cosd(36)}{-sind(36)-sind(108)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl -{-1+2*cosd(108)+cosd(36)}{-sind(36)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {-1+2*cosd(108)}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {2*cosd(108)}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(108)}{sind(108)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\prop_gput:Nnx \g__penrose_tiles_prop {pentagram} -{{C E C E C E C E C E} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {-1+2*cosd(108)}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {2*cosd(108)}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(108)}{sind(108)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {1}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {1-cosd(36)}{-sind(36)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl -{-1+2*cosd(108)+cosd(36)}{-sind(36)} -\prop_gput:Nnx \g__penrose_tiles_prop {boat} -{{C E C E B D B} {\tl_use:N \l__penrose_tmpa_tl}} -\tl_clear:N \l__penrose_tmpa_tl -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {0}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(18)}{sind(18)} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {2*cosd(18)}{0} -\__penrose_add_coordinate:Nnn \l__penrose_tmpa_tl {cosd(18)}{-sind(18)} -\prop_gput:Nnx \g__penrose_tiles_prop {diamond} -{{D B B D} {\tl_use:N \l__penrose_tmpa_tl}} -\NewDocumentCommand \BakePenroseTile {m} -{ - \prop_get:NnN \g__penrose_tiles_prop {#1} \l__penrose_tmpa_tl - \__penrose_make_tile:nV {#1} \l__penrose_tmpa_tl -} -\cs_set_eq:NN \MakePenroseTile \BakePenroseTile -\NewDocumentCommand \UsePenroseTile {O{} m} -{ - \tl_set_eq:Nc \l__penrose_tmp_tile_path_tl {g__penrose_tile_#2_tl} - \pgfgettransform \l__penrose_tmpa_tl - \spath_transform:NV \l__penrose_tmp_tile_path_tl \l__penrose_tmpa_tl - \spath_tikz_path:nV {#1} \l__penrose_tmp_tile_path_tl -} -\tikzset{ - save~ Penrose~ path/.code={ - \tikz@addmode{ - \pgfsyssoftpath@getcurrentpath\l__penrose_tmpa_tl - \__penrose_normalise_path:N \l__penrose_tmpa_tl - \tl_gclear_new:c {g__penrose_side_#1_tl} - \tl_gset_eq:cN {g__penrose_side_#1_tl} \l__penrose_tmpa_tl - \tl_set:Nx \l__penrose_tmpb_tl {\str_uppercase:n {#1}} - \spath_reverse:N \l__penrose_tmpa_tl - \spath_transform:Nnnnnnn \l__penrose_tmpa_tl {-1} {0} {0} {-1} {1} {0} - \tl_gclear_new:c {g__penrose_side_ \tl_use:N \l__penrose_tmpb_tl _tl} - \tl_gset_eq:cN {g__penrose_side_ \tl_use:N \l__penrose_tmpb_tl _tl} \l__penrose_tmpa_tl - } - }, - clone~ Penrose~ side~ path/.style~ 2~ args={ - spath/set~ name=Penrose~side, - spath/clone~ global={#1}{#2} - }, - spath/prefix/Penrose~side/.style={ - spath/set~ prefix=g__penrose_side_, - }, - spath/suffix/Penrose~side/.style={ - spath/set~ suffix=_tl, - }, - clone~ Penrose~ tile~ path/.style~ 2~ args={ - spath/set~ name=Penrose~tile, - spath/clone~ global={#1}{#2} - }, - spath/prefix/Penrose~tile/.style={ - spath/set~ prefix=g__penrose_tile_, - }, - spath/suffix/Penrose~tile/.style={ - spath/set~ suffix=_tl, - }, - expand~ key/.code={ - \exp_args:NV \pgfkeysalso #1 - } -} -\BakePenroseTile {thin~ rhombus} -\BakePenroseTile {thick~ rhombus} -\BakePenroseTile {dart} -\BakePenroseTile {kite} -\BakePenroseTile {golden~ triangle} -\BakePenroseTile {reverse~ golden~ triangle} -\BakePenroseTile {golden~ gnomon} -\BakePenroseTile {reverse~ golden~ gnomon} -\BakePenroseTile {pentagon~ 5} -\BakePenroseTile {pentagon~ 3} -\BakePenroseTile {pentagon~ 2} -\BakePenroseTile {pentagram} -\BakePenroseTile {boat} -\BakePenroseTile {diamond} -\cs_new_nopar:Npn \__penrose_transform_side:nn #1#2 -{ - \prop_get:NnN \g__penrose_tiles_prop {#1} \l__penrose_tmpa_tl - \int_zero:N \l__penrose_tmpb_int - \int_incr:N \l__penrose_tmpb_int - \tl_set:Nx \l__penrose_tmpc_tl {\tl_head:N \l__penrose_tmpa_tl} - \tl_map_inline:Nn \l__penrose_tmpc_tl { - \str_if_eq:nnT {##1} {#2} { - \tl_map_break: - } - \int_incr:N \l__penrose_tmpb_int - } - \tl_set:Nx \l__penrose_tmpc_tl {\tl_tail:N \l__penrose_tmpa_tl} - \tl_set:Nx \l__penrose_tmpc_tl {\tl_item:Nn \l__penrose_tmpc_tl {1}} - \tl_put_right:Nx \l__penrose_tmpc_tl - {{\tl_item:Nn \l__penrose_tmpc_tl {1}}} - \tl_set:Nx \l__penrose_tmpa_tl - {\tl_item:Nn \l__penrose_tmpc_tl {\int_use:N \l__penrose_tmpb_int}} - \tl_set:Nx \l__penrose_tmpb_tl - {\tl_item:Nn \l__penrose_tmpc_tl {\int_use:N \l__penrose_tmpb_int + 1}} - \tikz_scan_point:V \l__penrose_tmpb_tl - \dim_set_eq:Nc \l__penrose_xa_dim {pgf@x} - \dim_set_eq:Nc \l__penrose_ya_dim {pgf@y} - \tikz_scan_point:V \l__penrose_tmpa_tl - \dim_set_eq:Nc \l__penrose_xb_dim {pgf@x} - \dim_set_eq:Nc \l__penrose_yb_dim {pgf@y} - - \dim_sub:Nn \l__penrose_xb_dim {\l__penrose_xa_dim } - \dim_sub:Nn \l__penrose_yb_dim {\l__penrose_ya_dim } - \pgfpointnormalised{\pgfpoint{\l__penrose_xb_dim}{\l__penrose_yb_dim}} - \dim_set_eq:Nc \l__penrose_xb_dim {pgf@x} - \dim_set_eq:Nc \l__penrose_yb_dim {pgf@y} - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\l__penrose_xb_dim}{-\l__penrose_yb_dim}} - {\pgfpoint{\l__penrose_yb_dim}{\l__penrose_xb_dim}} - - \pgftransformshift{\pgfpoint{-\l__penrose_xa_dim}{-\l__penrose_ya_dim}} - -} -\cs_generate_variant:Nn \tl_if_eq:nnT {nVT} -\cs_generate_variant:Nn \__penrose_transform_side:nn {nx,nV} -\DeclareDocumentCommand \TransformAlongSide {m m} -{ - \__penrose_transform_side:nx {#1}{#2} -} -\cs_new_nopar:Npn \__penrose_coordinates_at_vertices:n #1 -{ - \prop_get:NnN \g__penrose_tiles_prop {#1} \l__penrose_tmpa_tl - \tl_set:Nx \l__penrose_tmpb_tl {\tl_head:N \l__penrose_tmpa_tl} - \tl_set:Nx \l__penrose_tmpc_tl {\tl_tail:N \l__penrose_tmpa_tl} - \tl_set:Nx \l__penrose_tmpc_tl - {\tl_item:Nn \l__penrose_tmpc_tl {1}} - \tl_put_right:Nx \l__penrose_tmpc_tl - {{\tl_item:Nn \l__penrose_tmpc_tl {1}}} - \tl_set:Nx \l__penrose_tmpa_tl {\tl_head:N \l__penrose_tmpc_tl} - \tl_set:Nx \l__penrose_tmpc_tl {\tl_tail:N \l__penrose_tmpc_tl} - \tl_map_inline:Nn \l__penrose_tmpb_tl { - \tl_set:Nx \l__penrose_tmpd_tl { - \exp_not:N \coordinate - (-edge~ ##1~ start)~ at \tl_use:N \l__penrose_tmpa_tl; - } - \tl_use:N \l__penrose_tmpd_tl - \tl_set:Nx \l__penrose_tmpa_tl {\tl_head:N \l__penrose_tmpc_tl} - \tl_set:Nx \l__penrose_tmpc_tl {\tl_tail:N \l__penrose_tmpc_tl} - \tl_set:Nx \l__penrose_tmpd_tl { - \exp_not:N \coordinate - (-edge~ ##1~ end)~ at \tl_use:N \l__penrose_tmpa_tl; - } - \tl_use:N \l__penrose_tmpd_tl - } -} -\DeclareDocumentCommand \CoordinatesAtVertices {m} -{ - \__penrose_coordinates_at_vertices:n {#1} -} -\DeclareDocumentCommand \DefineTile { m m m } -{ - \tl_clear:N \l__penrose_tmpa_tl - \tl_map_inline:nn {#3} { - \__penrose_add_coordinate:w \l__penrose_tmpa_tl ##1 \q_stop - } - \prop_clear:N \l__penrose_tmpa_prop - \tl_map_inline:nn {#2} { - \prop_if_in:NnTF \l__penrose_tmpa_prop {##1} - { - \prop_put:Nnn \l__penrose_tmpa_prop {##1} {1} - } - { - \prop_put:Nnn \l__penrose_tmpa_prop {##1} {0} - } - } - \tl_clear:N \l__penrose_tmpb_tl - \tl_map_inline:nn {#2} - { - \tl_clear:N \l__penrose_tmpc_tl - \tl_put_right:Nn \l__penrose_tmpc_tl {##1} - \int_compare:nF {\prop_item:Nn \l__penrose_tmpa_prop {##1} == 0} { - \tl_put_right:Nx \l__penrose_tmpc_tl - {\prop_item:Nn \l__penrose_tmpa_prop {##1}} - \prop_put:Nnx \l__penrose_tmpa_prop {##1} - {\int_eval:n {\prop_item:Nn \l__penrose_tmpa_prop {##1} + 1}} - } - \tl_put_right:Nx \l__penrose_tmpb_tl {{ \l__penrose_tmpc_tl }} - } - \prop_gput:Nnx \g__penrose_tiles_prop {#1} - {{\tl_use:N \l__penrose_tmpb_tl} {\tl_use:N \l__penrose_tmpa_tl}} - \tikzset{ - #1/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment~ location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name~ prefix~ ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge~ \pgfkeysvalueof{/tikz/Penrose/alignment~ edge}~ start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge~ \pgfkeysvalueof{/tikz/Penrose/alignment~ edge}~ end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}} - \str_set:Nx \l__penrose_tmpa_str - {\pgfkeysvalueof{/tikz/Penrose/alignment~ edge}} - \str_set:Nx \l__penrose_tmpa_str {\str_head:N \l__penrose_tmpa_str} - \str_put_right:Nx \l__penrose_tmpa_str - {\pgfkeysvalueof{/tikz/Penrose/alignment~ new~ edge}} - \str_set:Nx \l__penrose_tmpb_str {\str_lowercase:f { \l__penrose_tmpa_str}} - \str_if_eq:NNT \l__penrose_tmpa_str \l__penrose_tmpb_str - { - \str_set:Nx \l__penrose_tmpb_str - {\str_uppercase:f { \l__penrose_tmpa_str}} - } - - \__penrose_transform_side:nV {#1} \l__penrose_tmpb_str - \fi - \UsePenroseTile[ - every~ Penrose~ tile~ clip/.try, - every~ #1~ clip/.try - ]{#1} - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ #1/.try, - pic~ actions - ]{#1} - \__penrose_coordinates_at_vertices:n {#1} - \end{scope} - }, - #1/.style={ - every~ Penrose~ pic/.try, - pic~ type=#1, - }, - } -} -\prop_new:N \g__penrose_rhombus_lms_rule_prop -\prop_gput:Nnn \g__penrose_rhombus_lms_rule_prop {T} {[f*sT][f>g]} -\prop_gput:Nnn \g__penrose_rhombus_lms_rule_prop {t} {[f_st][f>G]} -\prop_gput:Nnn \g__penrose_rhombus_lms_rule_prop {G} {[f+sG][sf>g][sf*sT]} -\prop_gput:Nnn \g__penrose_rhombus_lms_rule_prop {g} {[f-sg][sf>G][sf_st]} -\prop_new:N \g__penrose_kite_lms_rule_prop -\prop_gput:Nnn \g__penrose_kite_lms_rule_prop {T} {[f*sT][f>st][+sg]} -\prop_gput:Nnn \g__penrose_kite_lms_rule_prop {t} {[f_st][f>sT][-sG]} -\prop_gput:Nnn \g__penrose_kite_lms_rule_prop {G} {[f*+sG][sT]} -\prop_gput:Nnn \g__penrose_kite_lms_rule_prop {g} {[f-_sg][st]} -\prop_new:N \g__penrose_pentagon_lms_rule_prop -\prop_gput:Nnn \g__penrose_pentagon_lms_rule_prop {P} -{[s>P][1sF+Q][1+sF+Q][1*sF+Q][1-sF+Q][1_sF+Q]} % pentagon 5 -\prop_gput:Nnn \g__penrose_pentagon_lms_rule_prop {Q} -{[s>P][1+sFR][1*sF*R][1-sF+Q][1_sF+Q][1sF+Q][->fsD]} % pentagon 3 -\prop_gput:Nnn \g__penrose_pentagon_lms_rule_prop {R} -{[s>P][1-sF+Q][1+sF*R][1*sFR][1_sF*R][1sFR][_>fsD][>fsD]} % pentagon 2 -\prop_gput:Nnn \g__penrose_pentagon_lms_rule_prop {G} -{ - [s>G] - [se[>d+R][e1B]] - [+se[>d+R][e1B]] - [-se[>d+R][e1B]] - [*se[>d+R][e1B]] - [_se[>d+R][e1B]] -} % pentagram -\prop_gput:Nnn \g__penrose_pentagon_lms_rule_prop {B} -{ - [s>G] - [se[>d+R][e1B]] - [+se[>d+R][e1B]] - [-se[>d+R][e1B]] -} % boat -\prop_gput:Nnn \g__penrose_pentagon_lms_rule_prop {D} -{[s>d+R][s>eG][se1B]} % diamond -\prop_gset_eq:NN \g__penrose_rtriangle_lms_rule_prop -\g__penrose_rhombus_lms_rule_prop -\prop_gset_eq:NN \g__penrose_ktriangle_lms_rule_prop -\g__penrose_kite_lms_rule_prop -\prop_new:N \g__penrose_default_lms_action_prop -\prop_new:N \g__penrose_rhombus_lms_action_prop -\prop_new:N \g__penrose_kite_lms_action_prop -\prop_new:N \g__penrose_rtriangle_lms_action_prop -\prop_new:N \g__penrose_ktriangle_lms_action_prop -\prop_new:N \g__penrose_pentagon_lms_action_prop -\dim_new:N \l__penrose_step_dim -\dim_set:Nn \l__penrose_step_dim {1cm} -\prop_gput:Nnn \g__penrose_default_lms_action_prop {[} {\group_begin:} -\prop_gput:Nnn \g__penrose_default_lms_action_prop {]} {\group_end:} -\prop_gput:Nnn \g__penrose_default_lms_action_prop {f} -{\pgftransformxshift{\l__penrose_step_dim}} -\prop_gput:Nnn \g__penrose_default_lms_action_prop {s} { - \fp_set:Nn \l__penrose_tmpa_fp { 2 * sind(18) * \l__penrose_step_dim } - \dim_set:Nn \l__penrose_step_dim {\fp_to_dim:N \l__penrose_tmpa_fp} -} -\prop_gput:Nnn \g__penrose_rhombus_lms_action_prop {+} -{\pgftransformrotate{144}} -\prop_gput:Nnn \g__penrose_rhombus_lms_action_prop {*} -{\pgftransformrotate{108}} -\prop_gput:Nnn \g__penrose_rhombus_lms_action_prop {-} -{\pgftransformrotate{216}} -\prop_gput:Nnn \g__penrose_rhombus_lms_action_prop {_} -{\pgftransformrotate{252}} -\prop_gput:Nnn \g__penrose_rhombus_lms_action_prop {>} -{\pgftransformrotate{180}} -\prop_gset_eq:NN \g__penrose_rtriangle_lms_action_prop -\g__penrose_rhombus_lms_action_prop -\prop_gput:Nnn \g__penrose_rhombus_lms_action_prop {T} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{198} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim*2*cosd(18)} - \pgftransformxshift{-\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ thin~ rhombus/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{thin~rhombus} - \group_end: -} -\prop_gput:Nnn \g__penrose_rhombus_lms_action_prop {G} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)/(2*cosd(36))} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ thick~ rhombus/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{thick~rhombus} - \group_end: -} -\prop_gput:Nnn \g__penrose_kite_lms_action_prop {+} {\pgftransformrotate{36}} -\prop_gput:Nnn \g__penrose_kite_lms_action_prop {*} {\pgftransformrotate{108}} -\prop_gput:Nnn \g__penrose_kite_lms_action_prop {-} {\pgftransformrotate{-36}} -\prop_gput:Nnn \g__penrose_kite_lms_action_prop {_} -{\pgftransformrotate{-108}} -\prop_gput:Nnn \g__penrose_kite_lms_action_prop {>} {\pgftransformrotate{180}} -\prop_gset_eq:NN \g__penrose_ktriangle_lms_action_prop -\g__penrose_kite_lms_action_prop -\prop_gput:Nnn \g__penrose_kite_lms_action_prop {T} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{36} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ kite/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{kite} - \group_end: -} -\prop_gput:Nnn \g__penrose_kite_lms_action_prop {g} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{144} - \pgftransformxshift{-\l__penrose_step_dim * 2 * sin(18)} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ dart/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{dart} - \group_end: -} -\prop_gput:Nnn \g__penrose_rtriangle_lms_action_prop {T} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{18} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ reverse~ golden~ triangle/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{reverse~ golden~ triangle} - \group_end: -} -\prop_gput:Nnn \g__penrose_rtriangle_lms_action_prop {t} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{-18} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ golden~ triangle/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{golden~ triangle} - \group_end: -} -\prop_gput:Nnn \g__penrose_rtriangle_lms_action_prop {G} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{180} - \pgftransformxshift{-\l__penrose_step_dim} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)/(2*cosd(36))} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ reverse~ golden~ gnomon/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{reverse~ golden~ gnomon} - \group_end: -} -\prop_gput:Nnn \g__penrose_rtriangle_lms_action_prop {g} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{180} - \pgftransformxshift{-\l__penrose_step_dim} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)/(2*cosd(36))} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ golden~ gnomon/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{golden~ gnomon} - \group_end: -} -\prop_gput:Nnn \g__penrose_ktriangle_lms_action_prop {T} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{18} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ reverse~ golden~ triangle/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{reverse~ golden~ triangle} - \group_end: -} -\prop_gput:Nnn \g__penrose_ktriangle_lms_action_prop {t} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{-18} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ golden~ triangle/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{golden~ triangle} - \group_end: -} -\prop_gput:Nnn \g__penrose_ktriangle_lms_action_prop {G} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{180} - \pgftransformxshift{-\l__penrose_step_dim} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)/(2*cosd(36))} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ reverse~ golden~ gnomon/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{reverse~ golden~ gnomon} - \group_end: -} -\prop_gput:Nnn \g__penrose_ktriangle_lms_action_prop {g} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{180} - \pgftransformxshift{-\l__penrose_step_dim} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)/(2*cosd(36))} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ golden~ gnomon/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{golden~ gnomon} - \group_end: -} -\int_new:N \l__penrose_pentagon_parity_int -\seq_new:N \l__penrose_pentagon_parity_seq -\seq_set_from_clist:Nn \l__penrose_pentagon_parity_seq {odd,even} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {1} { - \int_set:Nn \l__penrose_pentagon_parity_int - {3 - \l__penrose_pentagon_parity_int} - } -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {+} -{\pgftransformrotate{72}} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {*} -{\pgftransformrotate{144}} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {-} -{\pgftransformrotate{288}} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {_} -{\pgftransformrotate{216}} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {>} -{\pgftransformrotate{180}} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {|} -{\pgftransformxscale{-1}} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {s} { - \fp_set:Nn \l__penrose_tmpa_fp - { - 1/(2 + 2 * cosd(72) ) * \l__penrose_step_dim - } - \dim_set:Nn \l__penrose_step_dim {\fp_to_dim:N \l__penrose_tmpa_fp} -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {f} { - \fp_set:Nn \l__penrose_tmpa_fp { tand(54)/2 * \l__penrose_step_dim } - \pgftransformyshift{\fp_to_dim:N \l__penrose_tmpa_fp} -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {F} { - \fp_set:Nn \l__penrose_tmpa_fp { tand(54) * \l__penrose_step_dim } - \pgftransformyshift{\fp_to_dim:N \l__penrose_tmpa_fp} -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {d} { - \fp_set:Nn \l__penrose_tmpa_fp - { - (tand(54)/2 - tand(72)/2 + sind(36) ) * \l__penrose_step_dim - } - \pgftransformyshift{\fp_to_dim:N \l__penrose_tmpa_fp} -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {e} { - \fp_set:Nn \l__penrose_tmpa_fp - { - tand(54) * cosd(36) * \l__penrose_step_dim - } - \pgftransformyshift{\fp_to_dim:N \l__penrose_tmpa_fp} -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {P} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/2} - \pgftransformxshift{-\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim*tand(54)/2} - \pgftransformyshift{-\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ pentagon/.try, - every~ - \seq_item:Nn \l__penrose_pentagon_parity_seq - {\l__penrose_pentagon_parity_int} - \space pentagon/.try, - every~ pentagon~ 5/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{pentagon~5} - \group_end: -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {Q} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/2} - \pgftransformxshift{-\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim*tand(54)/2} - \pgftransformyshift{-\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ pentagon/.try, - every~ - \seq_item:Nn \l__penrose_pentagon_parity_seq - {\l__penrose_pentagon_parity_int} - \space pentagon/.try, - every~ pentagon~ 3/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{pentagon~3} - \group_end: -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {R} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/2} - \pgftransformxshift{-\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim*tand(54)/2} - \pgftransformyshift{-\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ pentagon/.try, - every~ - \seq_item:Nn \l__penrose_pentagon_parity_seq - {\l__penrose_pentagon_parity_int} - \space pentagon/.try, - every~ pentagon~ 2/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{pentagon~2} - \group_end: -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {G} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim*cosd(72)} - \pgftransformxshift{\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim*tand(54)*cosd(72)} - \pgftransformyshift{\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ pentagram/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{pentagram} - \group_end: -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {B} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim*cosd(72)} - \pgftransformxshift{\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim*tand(54)*cosd(72)} - \pgftransformyshift{\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ boat/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{boat} - \group_end: -} -\prop_gput:Nnn \g__penrose_pentagon_lms_action_prop {D} { - \group_begin: - \int_gincr:N \g__penrose_tile_int - \pgftransformrotate{90} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim*cosd(18)} - \pgftransformxshift{-\fp_to_dim:N \l__penrose_tmpa_fp} - \fp_set:Nn \l__penrose_tmpa_fp {\l__penrose_step_dim/(1cm)} - \pgftransformscale{\fp_use:N \l__penrose_tmpa_fp} - \tl_set:Nx \l__penrose_tmpc_tl - { - {\int_use:N \g__penrose_tile_int} - {\int_use:N \g__penrose_tiles_int} - } - \UsePenroseTile[ - every~ Penrose~ tile/.try, - every~ diamond/.try, - Penrose~ tile~ \int_use:N \g__penrose_tile_int/.try, - Penrose~ tile/.try/.expand~ once=\l__penrose_tmpc_tl - ]{diamond} - \group_end: -} -\cs_new_nopar:Npn \__penrose_make_lms:Nnnn #1#2#3#4 -{ - \group_begin: - \tl_set:Nn \l__penrose_tmpb_tl {#4} - \prg_replicate:nn {#3} { - \tl_set_eq:NN \l__penrose_tmpa_tl \l__penrose_tmpb_tl - \tl_clear:N \l__penrose_tmpb_tl - \tl_map_inline:Nn \l__penrose_tmpa_tl - { - \prop_if_in:cnTF {g__penrose_#2_lms_rule_prop} {##1} - { - \tl_put_right:Nx \l__penrose_tmpb_tl - {\prop_item:cn {g__penrose_#2_lms_rule_prop} {##1} } - } - { - \tl_put_right:Nn \l__penrose_tmpb_tl {##1} - } - } - } - \tl_set:Nn \l__penrose_tmpa_tl { - \group_end: - \tl_set:Nn #1 - } - \tl_put_right:Nx \l__penrose_tmpa_tl {{\tl_use:N \l__penrose_tmpb_tl}} - \tl_use:N \l__penrose_tmpa_tl -} -\cs_generate_variant:Nn \__penrose_make_lms:Nnnn {Nnnx} -\cs_new_nopar:Npn \__penrose_invoke_lms:Nn #1#2 -{ - \group_begin: - \tl_map_inline:Nn #1 { - \prop_if_in:cnTF {g__penrose_#2_lms_action_prop} {##1} - { - \prop_item:cn {g__penrose_#2_lms_action_prop} {##1} - } - { - \prop_if_in:cnT {g__penrose_default_lms_action_prop} {##1} - { - \prop_item:cn {g__penrose_default_lms_action_prop} {##1} - } - } - } - \group_end: -} -\int_new:N \g__penrose_tile_int -\int_new:N \g__penrose_tiles_int -\NewDocumentCommand \PenroseDecomposition { O{} m m m } -{ - \group_begin: - \tikzset{#1} - \__penrose_make_lms:Nnnx \l__penrose_tmpa_tl {#2} {#3} {#4} - \__penrose_count_lms:N \l__penrose_tmpa_tl - \int_gzero:N \g__penrose_tile_int - \int_set:Nn \l__penrose_pentagon_parity_int {2} - \__penrose_invoke_lms:Nn \l__penrose_tmpa_tl {#2} - \group_end: -} -\cs_new_nopar:Npn \__penrose_count_lms:N #1 -{ - \int_gzero:N \g__penrose_tiles_int - \tl_map_inline:Nn #1 - { - \tl_if_eq:nnT {##1} {T} - { - \int_gincr:N \g__penrose_tiles_int - } - \tl_if_eq:nnT {##1} {t} - { - \int_gincr:N \g__penrose_tiles_int - } - \tl_if_eq:nnT {##1} {G} - { - \int_gincr:N \g__penrose_tiles_int - } - \tl_if_eq:nnT {##1} {g} - { - \int_gincr:N \g__penrose_tiles_int - } - } -} -\tikzset{ - Penrose~ step/.code={ - \dim_set:Nn \l__penrose_step_dim {#1} - } -} -\ExplSyntaxOff -\pgfmathsetmacro\pr@chphi{cos(18)} -\pgfmathsetmacro\pr@shphi{sin(18)} -\pgfmathsetmacro\pr@cphi{cos(36)} -\pgfmathsetmacro\pr@sphi{sin(36)} -\pgfmathsetmacro\pr@invphi{2/(sqrt(5)+1)} -\pgfmathsetmacro\pr@phi{(sqrt(5)+1)/2} -\pgfmathsetmacro\pr@invphisq{\pr@invphi*\pr@invphi} -\pgfmathsetmacro\pr@ominvphisq{\pr@invphi - \pr@invphisq} -\pgfmathsetmacro\pr@ominvphi{1 - \pr@invphi} -\newif\if@edgealign -\def\pr@getfirst#1#2\pr@stop{#1}% -\def\test@edgealign#1{% - \pgfkeysgetvalue{/tikz/Penrose/alignment edge}{\@penrose@tmpa}% - \edef\@penrose@tmpb{#1}% - \edef\@penrose@tmpa{\expandafter\pr@getfirst\@penrose@tmpa.\pr@stop}% - \ifx\@penrose@tmpa\@penrose@tmpb - \@edgealigntrue - \else - \@edgealignfalse - \fi -}% -\newif\if@newedge -\def\test@newedge#1{% - \pgfkeysgetvalue{/tikz/Penrose/alignment new edge}{\@penrose@tmpa}% - \edef\@penrose@tmpb{#1}% - \edef\@penrose@tmpa{\@penrose@tmpa}% - \ifx\@penrose@tmpa\@penrose@tmpb - \@newedgetrue - \else - \@newedgefalse - \fi -}% -\tikzset{ - align with/.code args={#1 along #2}{% - \pgfutil@in@{ using }{#2} - \ifpgfutil@in@% - \tikzset{ - Penrose/alignment location=#1, - Penrose/alignment set edges=#2, - }% - \else - \tikzset{ - Penrose/alignment location=#1, - Penrose/alignment edge=#2, - }% - \fi - }, - Penrose/alignment set edges/.code args={#1 using #2}{% - \tikzset{ - Penrose/alignment edge=#1, - Penrose/alignment new edge=#2 - }, - }, - Penrose/alignment location/.initial={}, - Penrose/alignment edge/.initial=a, - Penrose/alignment new edge/.initial={}, - every Penrose tile clip/.style={clip}, - thin rhombus/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}} - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}b\relax - \pgftransformrotate{-18}% - \pgftransformshift{\pgfpoint{-\pr@chphi cm}{\pr@shphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}B\relax - \pgftransformrotate{18}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}a\relax - \pgftransformrotate{198}% - \pgftransformshift{\pgfpoint{-2*\pr@chphi cm}{0 cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}A\relax - \pgftransformrotate{162}% - \pgftransformshift{\pgfpoint{-\pr@chphi cm}{-\pr@shphi cm}}% - \fi\fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every thin rhombus clip/.try - ]{thin rhombus} - \UsePenroseTile[ - every Penrose tile/.try, - every thin rhombus/.try, - pic actions - ]{thin rhombus} - \UsePenroseTile[ - every Penrose arc clip/.try, - every thin rhombus arc clip/.try - ]{thin rhombus} - \path[every circle arc/.try] (18:1) circle[radius=1/4]; - \path[every long arc/.try] (-18:1) circle[radius=1/4]; -\coordinate (-edge a start) at (0,0); -\coordinate (-edge a end) at (18:1); -\coordinate (-edge A start) at (18:1); -\coordinate (-edge A end) at (2*\pr@chphi,0); -\coordinate (-edge B start) at (2*\pr@chphi,0); -\coordinate (-edge B end) at (-18:1); -\coordinate (-edge b start) at (-18:1); -\coordinate (-edge b end) at (0,0); - \end{scope} - }, - thin rhombus/.style={ - every Penrose pic/.try, - pic type=thin rhombus, - }, - thick rhombus/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}} - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}b\relax - \pgftransformrotate{144}% - \pgftransformshift{\pgfpoint{-\pr@cphi cm}{-\pr@sphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}B\relax - \pgftransformrotate{36}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}a\relax - \pgftransformrotate{-36}% - \pgftransformshift{\pgfpoint{-\pr@cphi cm}{\pr@sphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}A\relax - \pgftransformrotate{216}% - \pgftransformshift{\pgfpoint{-2*\pr@cphi cm}{0 cm}}% - \fi\fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every thick rhombus clip/.try - ]{thick rhombus} - \UsePenroseTile[ - every Penrose tile/.try, - every thick rhombus/.try, - pic actions - ]{thick rhombus} - \UsePenroseTile[ - every Penrose arc clip/.try, - every thick rhombus arc clip/.try - ]{thick rhombus} -\path[every circle arc/.try] (2*\pr@cphi,0) circle[radius=1/4]; -\path[every long arc/.try] (0,0) circle[radius=3/4]; -\coordinate (-edge B start) at (0,0); -\coordinate (-edge B end) at (36:1); -\coordinate (-edge a start) at (36:1); -\coordinate (-edge a end) at (2*\pr@cphi,0); -\coordinate (-edge A start) at (2*\pr@cphi,0); -\coordinate (-edge A end) at (-36:1); -\coordinate (-edge b start) at (-36:1); -\coordinate (-edge b end) at (0,0); - \end{scope} - }, - thick rhombus/.style={ - every Penrose pic/.try, - pic type=thick rhombus, - }, - kite/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}c\relax - \pgftransformrotate{-72}% - \pgftransformshift{\pgfpoint{-\pr@cphi cm}{\pr@sphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}C\relax - \pgftransformrotate{-108}% - \pgftransformshift{\pgfpoint{-1 cm}{0 cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}a\relax - \pgftransformrotate{36}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}A\relax - \pgftransformrotate{144}% - \pgftransformshift{\pgfpoint{-\pr@cphi cm}{-\pr@sphi cm}}% - \fi\fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every kite clip/.try - ]{kite} - \UsePenroseTile[ - every Penrose tile/.try, - every kite/.try, - pic actions - ]{kite} - \UsePenroseTile[ - every Penrose arc clip/.try, - every kite arc clip/.try - ]{kite} -\path[every circle arc/.try] (0,0) circle[radius=\pr@invphi]; -\path[every long arc/.try] (1,0) circle[radius=\pr@invphisq]; -\coordinate (-edge a start) at (0,0); -\coordinate (-edge a end) at (36:1); -\coordinate (-edge c start) at (36:1); -\coordinate (-edge c end) at (1,0); -\coordinate (-edge C start) at (1,0); -\coordinate (-edge C end) at (-36:1); -\coordinate (-edge A start) at (-36:1); -\coordinate (-edge A end) at (0,0); - \end{scope} - }, - dart/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}c\relax - \pgftransformrotate{108}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}C\relax - \pgftransformrotate{72}% - \pgftransformshift% - {\pgfpoint{\pr@invphi*\pr@shphi cm}{-\pr@invphi*\pr@chphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}a\relax - \pgftransformrotate{-36}% - \pgftransformshift% - {\pgfpoint{\pr@invphi*\pr@shphi cm}{\pr@invphi*\pr@chphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}A\relax - \pgftransformrotate{216}% - \pgftransformshift{\pgfpoint{-\pr@invphi cm}{0 cm}}% - \fi\fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every dart clip/.try - ]{dart} - \UsePenroseTile[ - every Penrose tile/.try, - every dart/.try, - pic actions - ]{dart} - \UsePenroseTile[ - every Penrose arc clip/.try, - every dart arc clip/.try - ]{dart} -\path[every circle arc/.try] (\pr@invphi,0) circle[radius=\pr@ominvphi]; -\path[every long arc/.try] (0,0) circle[radius=\pr@ominvphisq]; -\coordinate (-edge c start) at (0,0); -\coordinate (-edge c end) at (108:\pr@invphi); -\coordinate (-edge a start) at (108:\pr@invphi); -\coordinate (-edge a end) at (\pr@invphi,0); -\coordinate (-edge A start) at (\pr@invphi,0); -\coordinate (-edge A end) at (-108:\pr@invphi); -\coordinate (-edge C start) at (-108:\pr@invphi); -\coordinate (-edge C end) at (0,0); - \end{scope} - }, - kite/.style={ - every Penrose pic/.try, - pic type=kite, - }, - dart/.style={ - every Penrose pic/.try, - pic type=dart, - }, - golden triangle/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}B\relax - \pgftransformrotate{18}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}C\relax - \pgftransformrotate{-90}% - \pgftransformshift{\pgfpoint{-\pr@chphi cm}{\pr@shphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}A\relax - \pgftransformrotate{162}% - \pgftransformshift{\pgfpoint{-\pr@chphi cm}{-\pr@shphi cm}}% - \fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every golden triangle clip/.try - ]{golden triangle} - \UsePenroseTile[ - every Penrose tile/.try, - every golden triangle/.try, - pic actions - ]{golden triangle} -\coordinate (-edge a start) at (0,0); -\coordinate (-edge a end) at (18:1); -\coordinate (-edge c start) at (18:1); -\coordinate (-edge c end) at (-18:1); -\coordinate (-edge b start) at (-18:1); -\coordinate (-edge b end) at (0,0); - \end{scope} - }, - golden triangle/.style={ - every Penrose pic/.try, - pic type=golden triangle, - }, - reverse golden triangle/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}b\relax - \pgftransformrotate{162}% - \pgftransformshift{\pgfpoint{-\pr@chphi cm}{-\pr@shphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}c\relax - \pgftransformrotate{-90}% - \pgftransformshift{\pgfpoint{-\pr@chphi cm}{\pr@shphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}a\relax - \pgftransformrotate{18}% - \fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every reverse golden triangle clip/.try - ]{reverse golden triangle} - \UsePenroseTile[ - every Penrose tile/.try, - every reverse golden triangle/.try, - pic actions - ]{reverse golden triangle} -\coordinate (-edge B start) at (0,0); -\coordinate (-edge B end) at (18:1); -\coordinate (-edge C start) at (18:1); -\coordinate (-edge C end) at (-18:1); -\coordinate (-edge A start) at (-18:1); -\coordinate (-edge A end) at (0,0); - \end{scope} - }, - reverse golden triangle/.style={ - every Penrose pic/.try, - pic type=reverse golden triangle, - }, - golden gnomon/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}c\relax - \pgftransformrotate{144}% - \pgftransformshift{\pgfpoint{-\pr@cphi cm}{-\pr@sphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}B\relax - \pgftransformrotate{-144}% - \pgftransformshift{\pgfpoint{-2*\pr@cphi cm}{0 cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}a\relax - \fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every golden gnomon clip/.try - ]{golden gnomon} - \UsePenroseTile[ - every Penrose tile/.try, - every golden gnomon/.try, - pic actions - ]{golden gnomon} -\coordinate (-edge C start) at (0,0); -\coordinate (-edge C end) at (36:1); -\coordinate (-edge b start) at (36:1); -\coordinate (-edge b end) at (2*\pr@cphi,0); -\coordinate (-edge A start) at (2*\pr@cphi,0); -\coordinate (-edge A end) at (0,0); - \end{scope} - }, - golden gnomon/.style={ - every Penrose pic/.try, - pic type=golden gnomon, - }, - reverse golden gnomon/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}C\relax - \pgftransformrotate{36}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}b\relax - \pgftransformrotate{-36}% - \pgftransformshift{\pgfpoint{-\pr@cphi cm}{\pr@sphi cm}}% - \else - \if\pgfkeysvalueof{/tikz/Penrose/alignment edge}A\relax - \pgftransformrotate{180}% - \pgftransformshift{\pgfpoint{-2*\pr@cphi cm}{0 cm}}% - \fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every reverse golden gnomon clip/.try - ]{reverse golden gnomon} - \UsePenroseTile[ - every Penrose tile/.try, - every reverse golden gnomon/.try, - pic actions - ]{reverse golden gnomon} -\coordinate (-edge a start) at (0,0); -\coordinate (-edge a end) at (2*\pr@cphi,0); -\coordinate (-edge B start) at (2*\pr@cphi,0); -\coordinate (-edge B end) at (-36:1); -\coordinate (-edge c start) at (-36:1); -\coordinate (-edge c end) at (0,0); - \end{scope} - }, - reverse golden gnomon/.style={ - every Penrose pic/.try, - pic type=reverse golden gnomon, - }, - pentagon 5/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \test@newedge{1}% - \if@newedge - \pgftransformrotate{180}% - \pgftransformshift{\pgfpoint{-1 cm}{0 cm}}% - \else - \test@newedge{2}% - \if@newedge - \pgftransformshift{\pgfpoint{1 cm}{0 cm}}% - \pgftransformrotate{108}% - \pgftransformshift{\pgfpoint{-1 cm}{0 cm}}% - \else - \test@newedge{3}% - \if@newedge - \pgftransformshift% - {\pgfpoint{\pr@phi * \pr@shphi cm}{- \pr@phi * \pr@chphi cm}}% - \pgftransformrotate{36}% - \else - \test@newedge{4}% - \if@newedge - \pgftransformshift{\pgfpoint{- \pr@shphi cm}{-\pr@chphi cm}}% - \pgftransformrotate{-36}% - \else - \test@newedge{5}% - \if@newedge - \pgftransformrotate{-108}% - \fi\fi\fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every pentagon clip/.try, - every pentagon 5 clip/.try - ]{pentagon 5} - \UsePenroseTile[ - every Penrose tile/.try, - every pentagon/.try, - every pentagon 5/.try, - pic actions - ]{pentagon 5} -\coordinate (-edge a1 start) at (0,0); -\coordinate (-edge a1 end) at (1,0); -\coordinate (-edge a2 start) at (1,0); -\coordinate (-edge a2 end) at (1+\pr@shphi,\pr@chphi); -\coordinate (-edge a3 start) at (1+\pr@shphi,\pr@chphi); -\coordinate (-edge a3 end) at (\pr@cphi-\pr@shphi,\pr@sphi+\pr@chphi); -\coordinate (-edge a4 start) at (\pr@cphi-\pr@shphi,\pr@sphi+\pr@chphi); -\coordinate (-edge a4 end) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge a5 start) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge a5 end) at (0,0); - \end{scope} - }, - pentagon 5/.style={ - every Penrose pic/.try, - pic type=pentagon 5, - }, - pentagon 3/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \test@edgealign{a}% - \if@edgealign - \pgftransformrotate{180}% - \pgftransformshift{\pgfpoint{-1 cm}{0 cm}}% - \else - \test@edgealign{B}% - \if@edgealign% - \test@newedge{1}% - \if@newedge - \pgftransformshift{\pgfpoint{1 cm}{0 cm}}% - \pgftransformrotate{108}% - \pgftransformshift{\pgfpoint{-1 cm}{0 cm}}% - \else - \pgftransformrotate{-108}% - \fi - \else - \test@newedge{1}% - \if@newedge - \pgftransformshift% - {\pgfpoint{\pr@phi * \pr@shphi cm}{- \pr@phi * \pr@chphi cm}}% - \pgftransformrotate{36}% - \else - \pgftransformshift{\pgfpoint{- \pr@shphi cm}{-\pr@chphi cm}}% - \pgftransformrotate{-36}% - \fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every pentagon clip/.try, - every pentagon 3 clip/.try - ]{pentagon 3} - \UsePenroseTile[ - every Penrose tile/.try, - every pentagon/.try, - every pentagon 3/.try, - pic actions - ]{pentagon 3} -\coordinate (-edge A start) at (0,0); -\coordinate (-edge A end) at (1,0); -\coordinate (-edge b1 start) at (1,0); -\coordinate (-edge b1 end) at (1+\pr@shphi,\pr@chphi); -\coordinate (-edge a1 start) at (1+\pr@shphi,\pr@chphi); -\coordinate (-edge a1 end) at (\pr@cphi-\pr@shphi,\pr@sphi+\pr@chphi); -\coordinate (-edge a2 start) at (\pr@cphi-\pr@shphi,\pr@sphi+\pr@chphi); -\coordinate (-edge a2 end) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge b2 start) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge b2 end) at (0,0); - \end{scope} - }, - pentagon 3/.style={ - every Penrose pic/.try, - pic type=pentagon 3, - }, - pentagon 2/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \test@edgealign{D}% - \if@edgealign - \pgftransformrotate{180}% - \pgftransformshift{\pgfpoint{-1 cm}{0 cm}}% - \else - \test@edgealign{a}% - \if@edgealign% - \test@newedge{1}% - \if@newedge - \pgftransformshift{\pgfpoint{1 cm}{0 cm}}% - \pgftransformrotate{108}% - \pgftransformshift{\pgfpoint{-1 cm}{0 cm}}% - \else - \pgftransformrotate{-108}% - \fi - \else - \test@newedge{1}% - \if@newedge - \pgftransformshift% - {\pgfpoint{\pr@phi * \pr@shphi cm}{- \pr@phi * \pr@chphi cm}}% - \pgftransformrotate{36}% - \else - \pgftransformshift{\pgfpoint{- \pr@shphi cm}{-\pr@chphi cm}}% - \pgftransformrotate{-36}% - \fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every pentagon clip/.try, - every pentagon 2 clip/.try - ]{pentagon 2} - \UsePenroseTile[ - every Penrose tile/.try, - every pentagon/.try, - every pentagon 2/.try, - pic actions - ]{pentagon 2} -\coordinate (-edge d start) at (0,0); -\coordinate (-edge d end) at (1,0); -\coordinate (-edge A1 start) at (1,0); -\coordinate (-edge A1 end) at (1+\pr@shphi,\pr@chphi); -\coordinate (-edge c1 start) at (1+\pr@shphi,\pr@chphi); -\coordinate (-edge c1 end) at (\pr@cphi-\pr@shphi,\pr@sphi+\pr@chphi); -\coordinate (-edge c2 start) at (\pr@cphi-\pr@shphi,\pr@sphi+\pr@chphi); -\coordinate (-edge c2 end) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge A2 start) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge A2 end) at (0,0); - \end{scope} - }, - pentagon 2/.style={ - every Penrose pic/.try, - pic type=pentagon 2, - }, - pentagram/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \test@newedge{2}% - \if@newedge - \pgftransformshift{\pgfpoint{1 cm}{0 cm}}% - \pgftransformrotate{72}% - \else - \test@newedge{3}% - \if@newedge - \pgftransformrotate{-72}% - \pgftransformshift{\pgfpoint{2 * \pr@shphi cm}{0 cm}}% - \else - \test@newedge{4}% - \if@newedge - \pgftransformshift{\pgfpoint{1 cm + 2 * \pr@shphi cm}{0 cm}}% - \else - \test@newedge{5}% - \if@newedge - \pgftransformrotate{216}% - \pgftransformshift{\pgfpoint{\pr@cphi cm}{\pr@sphi cm}}% - \else - \test@newedge{6}% - \if@newedge - \pgftransformshift{\pgfpoint{1cm}{0cm}}% - \pgftransformrotate{-72}% - \pgftransformshift{\pgfpoint{\pr@cphi cm}{\pr@sphi cm}}% - \else - \test@newedge{7}% - \if@newedge - \pgftransformrotate{144}% - \pgftransformshift{\pgfpoint{\pr@shphi cm}{\pr@chphi cm}}% - \else - \test@newedge{8}% - \if@newedge - \pgftransformshift{\pgfpoint{1 cm + 2*\pr@shphi cm}{0cm}}% - \pgftransformrotate{216}% - \pgftransformshift{\pgfpoint{\pr@cphi cm}{\pr@sphi cm}}% - \else - \test@newedge{9}% - \if@newedge - \pgftransformshift{\pgfpoint{-2*\pr@shphi cm}{0cm}}% - \pgftransformrotate{72}% - \else - \test@newedge{10}% - \if@newedge - \pgftransformrotate{144}% - \pgftransformshift{\pgfpoint{-1 cm}{0 cm}}% - \else - \fi\fi\fi\fi\fi\fi\fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every pentagram clip/.try - ]{pentagram} - \UsePenroseTile[ - every Penrose tile/.try, - every pentagram/.try, - pic actions - ]{pentagram} -\coordinate (-edge C1 start) at (1,0); -\coordinate (-edge C1 end) at (0,0); -\coordinate (-edge C2 start) at (0,0); -\coordinate (-edge C2 end) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge C3 start) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge C3 end) at (-2*\pr@shphi,0); -\coordinate (-edge C4 start) at (-2*\pr@shphi,0); -\coordinate (-edge C4 end) at (-1-2*\pr@shphi,0); -\coordinate (-edge C5 start) at (-1-2*\pr@shphi,0); -\coordinate (-edge C5 end) at (-\pr@cphi,-\pr@sphi); -\coordinate (-edge C6 start) at (-\pr@cphi,-\pr@sphi); -\coordinate (-edge C6 end) at (-\pr@cphi-\pr@shphi,-\pr@sphi-\pr@chphi); -\coordinate (-edge C7 start) at (-\pr@cphi-\pr@shphi,-\pr@sphi-\pr@chphi); -\coordinate (-edge C7 end) at (-\pr@shphi,-\pr@chphi); -\coordinate (-edge C8 start) at (-\pr@shphi,-\pr@chphi); -\coordinate (-edge C8 end) at (1-\pr@cphi+\pr@shphi,-\pr@sphi-\pr@chphi); -\coordinate (-edge C9 start) at (1-\pr@cphi+\pr@shphi,-\pr@sphi-\pr@chphi); -\coordinate (-edge C9 end) at (1-\pr@cphi,-\pr@sphi); -\coordinate (-edge C10 start) at (1-\pr@cphi,-\pr@sphi); -\coordinate (-edge C10 end) at (1,0); - \end{scope} - }, - pentagram/.style={ - every Penrose pic/.try, - pic type=pentagram, - }, - boat/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \test@edgealign{d}% - \if@edgealign - \pgftransformrotate{180}% - \pgftransformshift{\pgfpoint{\pr@cphi cm - 1cm}{\pr@sphi cm}}% - \else - \test@edgealign{b}% - \if@edgealign% - \test@newedge{2}% - \if@newedge - \pgftransformrotate{144}% - \pgftransformshift{\pgfpoint{-1 cm}{0 cm}}% - \else - \pgftransformrotate{216}% - \pgftransformshift{\pgfpoint{\pr@cphi cm}{\pr@sphi cm}}% - \fi - \else - \test@edgealign{c}% - \if@edgealign% - \test@newedge{2}% - \if@newedge - \pgftransformshift{\pgfpoint{1 cm}{0 cm}}% - \pgftransformrotate{72}% - \else - \test@newedge{3}% - \if@newedge - \pgftransformrotate{-72}% - \pgftransformshift{\pgfpoint{2 * \pr@shphi cm}{0 cm}}% - \else - \test@newedge{4}% - \if@newedge - \pgftransformshift{\pgfpoint{1 cm + 2 * \pr@shphi cm}{0 cm}}% - \else - \fi\fi\fi\fi\fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every boat clip/.try - ]{boat} - \UsePenroseTile[ - every Penrose tile/.try, - every boat/.try, - pic actions - ]{boat} -\coordinate (-edge C1 start) at (1,0); -\coordinate (-edge C1 end) at (0,0); -\coordinate (-edge C2 start) at (0,0); -\coordinate (-edge C2 end) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge C3 start) at (-\pr@shphi,\pr@chphi); -\coordinate (-edge C3 end) at (-2*\pr@shphi,0); -\coordinate (-edge C4 start) at (-2*\pr@shphi,0); -\coordinate (-edge C4 end) at (-1-2*\pr@shphi,0); -\coordinate (-edge B1 start) at (-1-2*\pr@shphi,0); -\coordinate (-edge B1 end) at (-\pr@cphi,-\pr@sphi); -\coordinate (-edge D start) at (-\pr@cphi,-\pr@sphi); -\coordinate (-edge D end) at (1-\pr@cphi,-\pr@sphi); -\coordinate (-edge B2 start) at (1-\pr@cphi,-\pr@sphi); -\coordinate (-edge B2 end) at (1,0); - \end{scope} - }, - boat/.style={ - every Penrose pic/.try, - pic type=boat, - }, - diamond/.pic={ - \begin{scope} - \pgfkeysgetvalue{/tikz/Penrose/alignment location}{\prloc} - \ifx\prloc\pgfutil@empty - \else - \begingroup - \tikzset{name prefix ..}% - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} start)% - \global\pgf@xa=\pgf@x - \global\pgf@ya=\pgf@y - \tikz@scan@one@point\pgfutil@firstofone% - (\prloc-edge \pgfkeysvalueof{/tikz/Penrose/alignment edge} end)% - \global\pgf@xb=\pgf@x - \global\pgf@yb=\pgf@y - \endgroup - \advance\pgf@xb by -\pgf@xa - \advance\pgf@yb by -\pgf@ya - \pgftransformshift{\pgfpoint{\pgf@xa}{\pgf@ya}}% - \pgfpointnormalised{\pgfpoint{\pgf@xb}{\pgf@yb}} - \pgf@xb=\pgf@x - \pgf@yb=\pgf@y - \pgftransformtriangle% - {\pgfpoint{0pt}{0pt}}% - {\pgfpoint{\pgf@xb}{\pgf@yb}}% - {\pgfpoint{-\pgf@yb}{\pgf@xb}}% - \test@edgealign{d}% - \if@edgealign% - \test@newedge{2}% - \if@newedge - \pgftransformshift{\pgfpoint{1cm}{0cm}}% - \pgftransformrotate{-162}% - \else - \pgftransformrotate{-18}% - \fi - \else - \test@newedge{2}% - \if@newedge - \pgftransformrotate{162}% - \pgftransformshift{\pgfpoint{- 2 * \pr@chphi cm}{0cm}}% - \else - \pgftransformshift{\pgfpoint{- \pr@cphi cm}{-\pr@sphi cm}}% - \pgftransformrotate{18}% - \fi\fi - \fi - \UsePenroseTile[ - every Penrose tile clip/.try, - every diamond clip/.try - ]{diamond} - \UsePenroseTile[ - every Penrose tile/.try, - every diamond/.try, - pic actions - ]{diamond} -\coordinate (-edge D1 start) at (0,0); -\coordinate (-edge D1 end) at (\pr@chphi,\pr@shphi); -\coordinate (-edge B1 start) at (\pr@chphi,\pr@shphi); -\coordinate (-edge B1 end) at (2*\pr@chphi,0); -\coordinate (-edge B2 start) at (2*\pr@chphi,0); -\coordinate (-edge B2 end) at (\pr@chphi,-\pr@shphi); -\coordinate (-edge D2 start) at (\pr@chphi,-\pr@shphi); -\coordinate (-edge D2 end) at (0,0); - \end{scope} - }, - diamond/.style={ - every Penrose pic/.try, - pic type=diamond, - }, -} -%% -%% Copyright (C) 2014-2019 by Andrew Stacey <loopspace@mathforge.org> -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License (LPPL), either -%% version 1.3c of this license or (at your option) any later -%% version. The latest version of this license is in the file: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% This work is "maintained" (as per LPPL maintenance status) by -%% Andrew Stacey. -%% -%% This work consists of the files penrose_code.dtx -%% penrose.tex -%% and the derived files penrose.ins -%% penrose_code.pdf -%% penrose.pdf -%% tikzlibrarypenrose.code.tex -%% README.txt -%% -%% -%% End of file `tikzlibrarypenrose.code.tex'. |