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つおきの線だけを描くことです:)