5つのパターンを使用してジグソーパズルを描く方法
How Draw Jigsaw Using Five Patterns
解決:
これはpgfのパーサーモジュールを練習する良い機会だと思います。詳細については、マニュアルを参照してください。
前景レイヤーは実際には不要です。しかし、 ポケット 白い円で描かれているので、 タブ 別のレイヤーに。
クリッピング構文、シフトと
スケールも不要です。しかし、それはあなたがあなたの部分を再コード化する必要があることを意味します。
documentclass [tikz] {standalone} usepgfmodule {parser} pgfdeclarelayer {foreground} pgfsetlayers {main、foreground} pgfparserdef {jigsaw} {all} {the character 1} { def jigsawtype {1}} pgfparserdef {ジグソー} {all} {キャラクター2} { def jigsawtype {2}} pgfparserdef {jigsaw} {all} {キャラクター3}} def jigsawtype {3}} pgfparserdef {jigsaw} {all} {文字4} { def jigsawtype {4}} pgfparserdef {jigsaw} {all} {文字5} { def jigsawtype {5}} pgfparserdef {jigsaw} {all} {文字A} { def jigsawangle {0}} pgfparserdef {jigsaw} {all} {文字} { def jigsawangle {-90}} pgfparserdef {jigsaw} {all} {空白スペース space} {} pgfparserdef {jigsaw} {all} {the character:} { jigsawstart} pgfparserdef {jigsaw} {all} {the character、} { jigsawdrawone} pgfparserdef {jigsaw} {all} {the character;} { jigsawnewline} pgfparserdef {jigsaw } {すべて} {文字。} { jigsawend} def jigsawstart { path Coordinate(line begin)coordinate(curser); } def jigsawdrawone { draw(curser)pic [rotate = jigsawangle] {jigsaw jigsawtype}; path(curser)++(1,0)coordinate(curser); } def jigsawnewline { path(line begin)++(0、-1)coordinate(line begin)coordinate(curser); } def jigsawend { pgfparserswitch {final}} begin {document} tikzset {sq / .style = {cyan、draw = white、line width = .05cm}、cl / .style = {clip、fill = none }、fc / .style = {cyan}、fw / .style = {white}、jigsaw 1 / .pic = { tikzset {scale = .25、shift = {(-2、-2)}} fill [ sq](4,4)-(0,4)-(0,0)-(4,0)-サイクル; fill [cl](4,4)-(0,4)-(0,0)-(4,0)-サイクル; fill [fw](3.5,2)circle(.9); fill [fw](2,3.5)circle(.9); }、jigsaw 2 / .pic = { tikzset {scale = .25、shift = {(-9、-2)}} begin {pgfonlayer} {foreground} fill [fc](6.5,2)circle(。 7); fill [fc](9,4.5)circle(.7); end {pgfonlayer} fill [sq](7,0)-(11,0)-(11,4)-(7,4)-サイクル; fill [cl](7,0)-(11,0)-(11,4)-(7,4)-サイクル; fill [fw](10.5,2)circle(.9); }、jigsaw 3 / .pic = { tikzset {scale = .25、shift = {(-16、-2)}} begin {pgfonlayer} {foreground} fill [fc](13.5,2)circle(。 7); fill [fc](18.5,2)circle(.7); end {pgfonlayer} fill [sq](14,0)-(18,0)-(18,4)-(14,4)-サイクル; fill [cl](14,0)-(18,0)-(18,4)-(14,4)-サイクル; fill [fw](16,3.5)circle(.9); }、ジグソー4 / .pic = { tikzset {scale = .25、shift = {(-23、-2)}} begin {pgfonlayer} {foreground} fill [fc](23,4.5)circle(。 7); end {pgfonlayer} fill [sq](21,0)-(25,0)-(25,4)-(21,4)-サイクル; fill [cl](21,0)-(25,0)-(25,4)-(21,4)-サイクル; fill [fw](24.5,2)circle(.9); fill [fw](21.5,2)circle(.9); fill [fw](23、.5)circle(.9); }、jigsaw 5 / .pic = { tikzset {scale = .25、shift = {(-30、-2)}} begin {pgfonlayer} {foreground} fill [fc](30,4.5)circle(。 7); fill [fc](32.5,2)circle(.7); end {pgfonlayer} fill [sq](28,0)-(32,0)-(32,4)-(28,4)-サイクル; fill [cl](28,0)-(32,0)-(32,4)-(28,4)-サイクル; fill [fw](28.5,2)circle(.9); fill [fw](30、.5)circle(.9); }} tikz { pgfparserparse {jigsaw}:1>、3V、2V、2V、2V、2V、2V、2V、2V、1V、; 2>、5A、4>、5>、5>、5>、5>、5>、5>、3,4A、5<,5V,5V,5V,5V,5V,5V,2,5A,4A,5V,5V,5V,5V,5V,5V,2,5A,4A,5V,5V,5V,5V,5V,5V,2,5<,5<,4<,4<,4<,4<,5<,5V,2<,; 1A,2A,2A,2A,2A,2A,2A,2A,3A,1<,. } end{document}
ジグソーパズルのピースをパズルで解く方法を心配する代わりに、希望の寸法のパターンを自動的に作成するジグソーパッケージ:
documentclass {article} usepackage {jigsaw} begin {document} begin {tikzpicture} fill [cyan](0,0)長方形(11,7); jigsaw {11} {7} end {tikzpicture} end {document}
(秘訣は、一致するピースを一緒にパズルしようとするのではなく、1つおきの線だけを描くことです:)