summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/penrose/tikzlibrarypenrose.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/penrose/tikzlibrarypenrose.code.tex')
-rw-r--r--Master/texmf-dist/tex/latex/penrose/tikzlibrarypenrose.code.tex2226
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'.