Advertisement
Guest User

Polygons test document

a guest
Jan 5th, 2014
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.35 KB | None | 0 0
  1. \documentclass[a4paper]{amsart}
  2.  
  3. \usepackage{tikz, xparse, xstring}
  4. \usetikzlibrary{arrows, decorations.pathmorphing, shapes}
  5.  
  6. \input{polygons.tin}
  7.  
  8. \usepackage{fullpage, skull}
  9.  
  10. \usepgflibrary{profiler}
  11. \pgfprofilenewforenvironment{tikzpicture}
  12. \pgfprofilenewforcommand{\pgfkeys}{1}
  13.  
  14. \setlength{\parskip}{5mm}
  15. \setlength{\parindent}{0mm}
  16. \raggedright
  17. \renewcommand{\familydefault}{\sfdefault}
  18.  
  19. \definecolor{myred}{rgb}{0.9, 0, 0}
  20. \definecolor{mygreen}{rgb}{0, 0.8, 0}
  21. \definecolor{myblue}{rgb}{0, 0, 1}
  22.  
  23. \setlength{\roundpolygondefaultradius}{14mm}
  24. \setlength{\flatpolygondefaultzerojoinerdepth}{5.8mm}
  25. \setlength{\flatpolygondefaultvertexseparation}{7mm}
  26. \setlength{\flatpolygondefaultbottomedgejoinerheight}{3.5mm}
  27. \setlength{\flatpolygondefaultedgejoinerheightstep}{2.4mm}
  28.  
  29. \newlength{\mylength}
  30.  
  31. \makeatletter
  32. % \writelistitems [*] {list}
  33. % {list item processor}
  34. % Starred form: adds Oxford comma if list has three or more items. No effect if list has
  35. % fewer than three items.
  36. \NewDocumentCommand{\writelistitems}{smm}{%
  37. \saveexpandmode
  38. \fullexpandarg
  39. \StrDel{#2}{ }[\wli@list]
  40. \StrCount{\wli@list}{,}[\wli@numberoflistitemsminusone]
  41. \ifnum\wli@numberoflistitemsminusone=0
  42. \edef\wli@output{\unexpanded{#3}{\wli@list}}
  43. \else
  44. \StrCut [\wli@numberoflistitemsminusone]
  45. {\wli@list}
  46. {,}
  47. {\wli@list}
  48. {\wli@currentlistitem}
  49. \ifnum\wli@numberoflistitemsminusone=1
  50. \edef\wli@output{%
  51. \unexpanded{#3}{\wli@list}{} and \unexpanded{#3}{\wli@currentlistitem}%
  52. }
  53. \else
  54. \edef\wli@endpart{\unexpanded{#3}{\wli@currentlistitem}}
  55. \IfBooleanTF {#1}
  56. {\def\wli@middlepart{and }}
  57. {\pgfmathtruncatemacro {\wli@numberoflistitemsminustwo}
  58. {\wli@numberoflistitemsminusone - 1}
  59. \StrCut [\wli@numberoflistitemsminustwo]
  60. {\wli@list}
  61. {,}
  62. {\wli@list}
  63. {\wli@currentlistitem}
  64. \edef\wli@middlepart{\unexpanded{#3}{\wli@currentlistitem} and }
  65. }
  66. \gdef\wli@beginpart{}
  67. \foreach \x in \wli@list {
  68. \xdef\wli@beginpart{%
  69. \unexpanded\expandafter{\wli@beginpart}\unexpanded{#3}{\x}, %
  70. }
  71. }
  72. \def\wli@output{\wli@beginpart\wli@middlepart\wli@endpart}
  73. \fi
  74. \fi
  75. \global\let\wli@list\relax
  76. \global\let\wli@currentlistitem\relax
  77. \restoreexpandmode
  78. \wli@output%
  79. }
  80. \makeatother
  81.  
  82. \newcommand{\macroname}[1]{\texttt{\textbackslash#1}}
  83. \NewDocumentCommand{\macronames}{sm}{%
  84. \IfBooleanTF {#1}
  85. {\writelistitems*{#2}{\macroname}}
  86. {\writelistitems{#2}{\macroname}}%
  87. }
  88.  
  89. \begin{document}
  90.  
  91. Test the ``roundpolygon'' macros.
  92.  
  93. \macronames{ roundpolygonnoedges,
  94. roundpolygonedges,
  95. roundpolygonedgessubset,
  96. roundpolygonedgessubsetcomplement
  97. }
  98.  
  99. \begin{tabular}{|c|c|c|}
  100. \hline
  101. \tikz{\roundpolygonnoedges{8}}
  102. & \tikz{\roundpolygonnoedges[][a, b, c, d, e, p, q, r, s, t, too, many, labels]{10}}
  103. & \begin{tikzpicture}
  104. \setlength{\roundpolygondefaultradius}{10mm}
  105. \roundpolygonnoedges[mypoly][0,,2,,4,,6,,8]{10}
  106. \begin{scope}[line width = 1pt, white, double distance = 1pt]
  107. \draw [double = myred] (mypoly vertex 0) -- (mypoly vertex 5);
  108. \draw [double = mygreen] (mypoly edge 1) -- (mypoly edge 6);
  109. \draw [double = myblue] (mypoly edge 3) -- (mypoly edge 8);
  110. \end{scope}
  111. \roundpolygonedgessubset[mypoly]{1, 3, 6, 8}
  112. \end{tikzpicture}
  113. \\ \hline
  114. \tikz{\roundpolygonnoedges[][][5mm]{8}}
  115. & \begin{tikzpicture}
  116. \roundpolygonnoedges[][][20mm]{16}
  117. \begin{scope}[ every to/.style = {out = 30, in = 210, relative},
  118. roundpolygon edge/.style = {myred}
  119. ]
  120. \roundpolygonedgessubset{0, 2, 4, 6, 8, 10, 12, 14}
  121. \end{scope}
  122. \begin{scope}[ every to/.style = {out = 330, in = 150, relative},
  123. polygon edge/.style = {myblue}
  124. ]
  125. \roundpolygonedgessubsetcomplement[]{0, 2, 4, 6, 8, 10, 12, 14}
  126. \end{scope}
  127. \end{tikzpicture}
  128. & \begin{tikzpicture}
  129. \roundpolygonnoedges[bigpoly][][16mm]{12}
  130. \draw [line width = 1pt, myred]
  131. (bigpoly vertex 3) -- ++ (-28mm, 21mm)
  132. -- ++ (0mm, -42mm)
  133. -- (bigpoly vertex 3);
  134. \begin{scope}[polygon edge/.style = { line width = 1pt,
  135. white,
  136. double = myblue,
  137. double distance = 1pt
  138. }]
  139. \roundpolygonedges [bigpoly] % Test that space is ignored
  140. \end{scope}
  141. \end{tikzpicture}
  142. \\ \hline
  143. \end{tabular}
  144.  
  145. \macronames{roundpolygon, roundpolygonedgejoiner}
  146.  
  147. \begin{tabular}{|c|c|c|c|c|}
  148. \hline
  149. \begin{tikzpicture}
  150. \begin{scope}
  151. \roundpolygon!{5} % Try removing the exclamation mark - you will get an error.
  152. \end{scope}
  153. \roundpolygonedgejoiner{0}{2}
  154. \roundpolygonedgejoiner[][fancy meeting you here]{2}{3}
  155. \draw [thick, myred] (ejmd 0 to 2) -- (fancy meeting you here ejmd 2 to 3);
  156. \end{tikzpicture}
  157. & \tikz{\roundpolygon[][5, 4, 3, 2, 1, \skull][10mm]{8}}
  158. & \begin{tikzpicture}[ultra thick]
  159. \roundpolygon[thickpoly]{6}
  160. \roundpolygonedgejoiner[thickpoly]{0}{2}
  161. \draw [white]
  162. (thickpoly edge 0) -- (thickpoly edge 3);
  163. \draw [myred]
  164. (thickpoly edge joiner middle dot 0 to 2) -- (thickpoly vertex 4);
  165. \end{tikzpicture}
  166. & \tikz{\roundpolygon{2}}
  167. & \tikz[roundpolygon edge/.style = {->, > = triangle 60}]{\roundpolygon{2}}
  168. \\ \hline
  169. \end{tabular}
  170.  
  171. \macronames{roundpolygonwithedgejoiners}
  172.  
  173. \begin{tabular}{|c|c|c|}
  174. \hline
  175. \begin{tikzpicture}
  176. \roundpolygonwithedgejoiners{6}{0-1, 2*5, 3-4}
  177. \end{tikzpicture}
  178. & \tikz{\roundpolygonwithedgejoiners [gosh]
  179. [0, 1, 2, 34, 56, 7, 8, 9, 10, 11]
  180. [20mm]
  181. {10}
  182. {0*9, 1-8, 2-7, 3-6, 4*5}}
  183. & \begin{tikzpicture}
  184. \roundpolygonwithedgejoiners[golly]{8}{0-4}
  185. \draw [thick, myred] (golly edge 2) -- (golly edge joiner middle dot 0 to 4);
  186. \end{tikzpicture}
  187. \\ \hline
  188. \end{tabular}
  189.  
  190. \newpage
  191.  
  192. \macronames{ roundpolygonwithmaximallynestededgejoiners,
  193. roundpolygonwithminimallynestededgejoiners,
  194. roundpolygonvertexat,
  195. roundpolygonedgejoinermiddledotat
  196. }
  197.  
  198. \begin{tikzpicture}[remember picture]
  199. \roundpolygonwithmaximallynestededgejoiners[remembered]{12}
  200. \end{tikzpicture}
  201.  
  202. \begin{tabular}{|c|c|c|}
  203. \hline
  204. \tikz{\roundpolygonwithmaximallynestededgejoiners[][1]{12}}
  205. & \tikz[every to/.style = {bend right = 30}]{
  206. \roundpolygonwithmaximallynestededgejoiners[][14]{12}
  207. }
  208. & \begin{tikzpicture}[remember picture]
  209. \roundpolygonwithmaximallynestededgejoiners[join up][3]{12}
  210. \begin{scope}[overlay]
  211. \draw [purple] (join up vertex 9) -- (remembered vertex 3)
  212. coordinate [midway] (a);
  213. \roundpolygonvertexat{a};
  214. \end{scope}
  215. \end{tikzpicture}
  216. \\ \hline
  217. \begin{tikzpicture}
  218. \roundpolygonwithmaximallynestededgejoiners[][4]{12}
  219. \roundpolygonvertexat<extra dot>{vertex 0 |- vertex 1}
  220. \roundpolygonedgejoinermiddledotat{edge joiner middle dot 11 to 8}
  221. \roundpolygonedgejoinermiddledotat <yet another dot>
  222. {edge joiner middle dot 3 to 4}
  223. \draw [myred] (vertex 9) -- (extra dot) -- (0, 0) -- (yet another dot);
  224. \end{tikzpicture}
  225. & \tikz{\roundpolygonwithmaximallynestededgejoiners[][-7]{12}}
  226. & \tikz{\roundpolygonwithmaximallynestededgejoiners[][6]{12}}
  227. \\ \hline
  228. \begin{tikzpicture}
  229. \roundpolygonwithminimallynestededgejoiners[pentagram][0]{10}
  230. \draw (pentagram ejmd 0 to 1) -- (pentagram ejmd 4 to 5)
  231. -- (pentagram ejmd 8 to 9)
  232. -- (pentagram ejmd 2 to 3)
  233. -- (pentagram ejmd 6 to 7)
  234. -- cycle;
  235. \end{tikzpicture}
  236. & \tikz{\roundpolygonwithminimallynestededgejoiners[][1]{10}}
  237. & \tikz{\roundpolygonwithminimallynestededgejoiners[][-8]{10}}
  238. \\ \hline
  239. \tikz{
  240. \roundpolygonwithminimallynestededgejoiners
  241. []
  242. [21]
  243. [\times,,\times,,\times,,\times,,\times,,\times,,\times,,\times,,\times,,]
  244. {10}
  245. }
  246. & \tikz{\roundpolygonwithmaximallynestededgejoiners[][15][][20mm]{18}}
  247. & \begin{tikzpicture}
  248. \roundpolygonwithminimallynestededgejoiners[outside][][,][18mm]{10}
  249. \pgfmathsetlength{\mylength}{18mm * (2 * cos(36) - 1)}
  250. \begin{scope}[roundpolygon vertex/.append style = { fill = none,
  251. minimum size = 1.6mm}]
  252. \roundpolygonwithmaximallynestededgejoiners[inside][][,][\mylength]{10}
  253. \end{scope}
  254. \foreach \x in {0, ..., 9} {
  255. \pgfmathtruncatemacro{\y}{Mod(\x + 1, 10)}
  256. \draw (outside vertex \x) -- (inside vertex \y);
  257. }
  258. \end{tikzpicture}
  259. \\ \hline
  260. \end{tabular}
  261.  
  262. \newpage
  263.  
  264. Test the ``flatpolygon'' macros.
  265.  
  266. \macronames{flatpolygonnoedges}
  267.  
  268. \tikz{\flatpolygonnoedges{10}}
  269.  
  270. \begin{tikzpicture}
  271. \flatpolygonnoedges[zz][,][10mm]{8}
  272. \path (zz left 0) -- ++ ( 5mm, 5mm) coordinate (top left outer);
  273. \path (zz vertex 0) -- ++ ( 5mm, -5mm) coordinate (bottom left outer);
  274. \path (zz right 0) -- ++ (-5mm, 5mm) coordinate (top right outer);
  275. \path (zz vertex 8) -- ++ (-5mm, -5mm) coordinate (bottom right outer);
  276. \path (top left outer) -- ++ ( 2mm, 0mm) coordinate (top left inner);
  277. \path (bottom left outer) -- ++ ( 2mm, 0mm) coordinate (bottom left inner);
  278. \path (top right outer) -- ++ (-2mm, 0mm) coordinate (top right inner);
  279. \path (bottom right outer) -- ++ (-2mm, 0mm) coordinate (bottom right inner);
  280. \draw [myred, decoration = {coil, aspect = 1, segment length = 1.963mm}]
  281. % That segment length took a little trial and error to get right. 2mm doesn't
  282. % look right (the decoration ends too early on the right-hand side), probably due
  283. % to rounding errors in TeX arithmetic or something like that.
  284. (zz vertex 0) -- (top left outer)
  285. -- (top left inner)
  286. decorate {-- (top right inner)}
  287. -- (top right outer)
  288. -- (zz vertex 8);
  289. \draw [myblue, decoration = {coil, aspect = 1, segment length = 1.963mm, mirror}]
  290. (zz left 0) -- (bottom left outer)
  291. -- (bottom left inner)
  292. decorate {-- (bottom right inner)}
  293. -- (bottom right outer)
  294. -- (zz right 0);
  295. \end{tikzpicture}
  296.  
  297. \begin{tikzpicture}
  298. \flatpolygonnoedges[][0,,w,,x,,y,,z][later][5mm]{8}
  299. \begin{scope}[xshift = 55mm]
  300. \flatpolygonlabelbaselineof{>}
  301. \flatpolygonnoedges[][0,,w,,x,,y,,z][later][5mm]{8}
  302. \end{scope}
  303. \end{tikzpicture}
  304.  
  305. \begin{tikzpicture}
  306. \setlength{\flatpolygondefaultvertexseparation}{3mm}
  307. \flatpolygonnoedges[][0,,2,,4][none]{30}
  308. \path [late options = {name = vertex 22, label = below: {\itshape how many?!}}];
  309. \end{tikzpicture}
  310.  
  311. \begin{tikzpicture}
  312. \setlength{\flatpolygondefaultzerojoinerdepth}{2mm}
  313. \flatpolygonnoedges[myflatpoly]{8}
  314. \begin{scope}[thick]
  315. \draw [myred]
  316. (myflatpoly vertex 2) parabola [parabola height = 5mm] (myflatpoly vertex 3);
  317. \draw [myblue]
  318. (myflatpoly edge 2) parabola [parabola height = 5mm] (myflatpoly edge 3);
  319. \end{scope}
  320. \end{tikzpicture}
  321.  
  322. \macronames{flatpolygonedges}
  323.  
  324. \begin{tikzpicture}[flatpolygon vertex/.append style = {fill = none, minimum size = 2mm}]
  325. \flatpolygonnoedges[myflatpolywithedges][0][none]{6}
  326. \flatpolygonedges [myflatpolywithedges] % Again, test that space is ignored
  327. \end{tikzpicture}
  328.  
  329. \macronames{flatpolygon}
  330.  
  331. \tikz{\flatpolygon[][][5mm][5mm]{12}}
  332.  
  333. \begin{tikzpicture}
  334. \flatpolygon[yet another flatpolygon][0, 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1][later]{12}
  335. \draw [very thick, myred] (yet another flatpolygon vertex 5)
  336. arc (180: 0: \flatpolygondefaultvertexseparation)
  337. arc (180: 360: \flatpolygondefaultvertexseparation);
  338. \end{tikzpicture}
  339.  
  340. \newpage
  341.  
  342. \macronames{flatpolygonedgejoiner}
  343.  
  344. \begin{tikzpicture}
  345. \flatpolygon[wrong way around]{10}
  346. \flatpolygonedgejoiner[wrong way around]{0}{9}
  347. \flatpolygonedgejoiner[wrong way around]{1}{8}
  348. \flatpolygonedgejoiner[wrong way around]{2}{7}
  349. \flatpolygonedgejoiner[wrong way around]{3}{6}
  350. \flatpolygonedgejoiner[wrong way around]{4}{5}
  351. \end{tikzpicture}
  352.  
  353. \begin{tikzpicture}
  354. \begin{scope}
  355. \flatpolygon![scoping]{10}
  356. % Again, if you remove the exclamation mark, you will get an error.
  357. \end{scope}
  358. \begin{scope}
  359. \flatpolygonedgejoiner[scoping]{2}{3}
  360. \flatpolygonedgejoiner[scoping]{4}{5}
  361. \flatpolygonedgejoiner[scoping]{1}{6}
  362. \end{scope}
  363. \flatpolygonedgejoiner*[scoping]{0}{7}
  364. \end{tikzpicture}
  365.  
  366. \begin{tikzpicture}
  367. \setlength{\flatpolygondefaultvertexseparation}{10mm}
  368. \flatpolygonnoedges[different heights]{12}
  369. \flatpolygonedgejoiner[different heights][][5mm][3mm]{2}{3}
  370. \flatpolygonedgejoiner[different heights][][5mm][3mm]{1}{4}
  371. \flatpolygonedgejoiner[different heights][oh well][5mm][3mm]{0}{5}
  372. \flatpolygonedgejoiner[different heights][][8mm][5mm]{8}{9}
  373. \flatpolygonedgejoiner[different heights][][8mm][5mm]{7}{10}
  374. \setlength{\flatpolygondefaultbottomedgejoinerheight}{8mm}
  375. \flatpolygonedgejoiner[different heights][][][5mm]{6}{11}
  376. \draw [thick, myred]
  377. (different heights oh well edge joiner middle dot 5 to 0)
  378. -- (different heights oh well ejmd 0 to 5 |- different heights ejmd 11 to 6)
  379. parabola [bend = (different heights vertex 6)] (different heights ejmd 6 to 11);
  380. \begin{scope}[polygon edge/.style = {thick, myblue!80}]
  381. \begin{scope}[every to/.style = {bend right = 30}]
  382. \flatpolygonedgessubset[different heights]{5, 6}
  383. \end{scope}
  384. \begin{scope}[every to/.style = {bend left = 30}]
  385. \flatpolygonedgessubsetcomplement[different heights]{1, 5, 6, 11}
  386. \end{scope}
  387. \begin{scope}[polygon edge/.append style = {ultra thick}]
  388. \flatpolygonedgessubset[different heights]{1, 11}
  389. \end{scope}
  390. \end{scope}
  391. \end{tikzpicture}
  392.  
  393. \macronames{flatpolygonwithedgejoiners, switchtovariantflatpolygonnoedges}
  394.  
  395. \tikz{\flatpolygonwithedgejoiners[][a, b, c, 1, 2, 3]{10}{0*9, 1-8, 2-7, 3-6, 4-5}}
  396.  
  397. \begin{tikzpicture}
  398. \switchtovariantflatpolygonnoedges
  399. \begin{scope}[text = myred]
  400. \flatpolygonwithedgejoiners! [scopes complex][!,][][14mm][7mm][7mm]
  401. {10}{1-8, 2-3, 4-5, 6-7}
  402. \end{scope}
  403. \flatpolygonedgejoiner[scopes complex]{0}{9}
  404. \draw [very thick, myred]
  405. (scopes complex edge joiner middle dot 4 to 5)
  406. ++ (-5mm, 0) -- ++ (10mm, 0)
  407. (scopes complex edge joiner middle dot 4 to 5) -- ++ (0, 1.3mm)
  408. ++ (-5mm, 0) -- ++ (10mm, 0);
  409. \end{tikzpicture}
  410.  
  411. \tikz{\flatpolygonwithedgejoiners[][][later]{12}{4-1, 2-3, 5-6, 9*8, 10-11, 7-0}}
  412.  
  413. \newpage
  414.  
  415. \macronames{ flatpolygonwithmaximallynestededgejoiners,
  416. flatpolygonwithminimallynestededgejoiners,
  417. undoswitchtovariantflatpolygonnoedges
  418. }
  419.  
  420. \tikz{\flatpolygonwithmaximallynestededgejoiners{12}}
  421.  
  422. \tikz{\flatpolygonwithmaximallynestededgejoiners[][1]{12}}
  423.  
  424. \tikz{\flatpolygonwithmaximallynestededgejoiners[][2]{12}}
  425.  
  426. \begin{tikzpicture}
  427. \def\labels{\bigtriangleup,,,\bigtriangledown,,,\bigtriangleup,,,\bigtriangledown}
  428. \flatpolygonwithmaximallynestededgejoiners[][3][\labels][none][10mm][5mm][1.5mm]{12}
  429. \end{tikzpicture}
  430.  
  431. \tikz{
  432. \switchtovariantflatpolygonnoedges!
  433. \flatpolygonwithmaximallynestededgejoiners[][-8]{12}
  434. \flatpolygonedgejoinermiddledotat{ejmd 8 to 11}
  435. }
  436.  
  437. \tikz{\flatpolygonwithmaximallynestededgejoiners[][17]{12}}
  438.  
  439. \tikz{
  440. \undoswitchtovariantflatpolygonnoedges!
  441. \flatpolygonwithminimallynestededgejoiners[]{12}
  442. }
  443.  
  444. \begin{tikzpicture}[remember picture]
  445. \flatpolygonwithminimallynestededgejoiners[do you recall][-3][,,l,a,s,e,r,b,e,a,m]{12}
  446. \end{tikzpicture}
  447.  
  448. \begin{tikzpicture}[remember picture]
  449. \flatpolygonwithminimallynestededgejoiners[][8][][later]{12}
  450. \begin{scope}[overlay, ->, myred]
  451. \draw (do you recall edge joiner middle dot 1 to 2) -- (ejmd 2 to 3);
  452. \draw (do you recall ejmd 4 to 3) -- (ejmd 4 to 5);
  453. \draw (do you recall ejmd 5 to 6) -- (edge joiner middle dot 6 to 7);
  454. \draw (do you recall edge joiner middle dot 7 to 8) -- (ejmd 8 to 9);
  455. \draw (do you recall ejmd 9 to 10) -- (ejmd 10 to 11);
  456. \draw (do you recall ejmd 0 to 11) -- (ejmd 0 to 1);
  457. \end{scope}
  458. \end{tikzpicture}
  459.  
  460. \newpage
  461.  
  462. \macronames{nodetonodezerojoiner, nodetonodeedgejoiner}
  463.  
  464.  
  465.  
  466. \macronames{ lefthalfzerojoiner,
  467. righthalfzerojoiner,
  468. lefthalfzerojoinerendflushwithpoint,
  469. righthalfzerojoinerendflushwithpoint,
  470. lefthalfedgejoiner,
  471. righthalfedgejoiner,
  472. lefthalfedgejoinerendflushwithpoint,
  473. righthalfedgejoinerendflushwithpoint
  474. }
  475.  
  476.  
  477.  
  478. \newpage
  479.  
  480. Test the ``edge joiner list'' macros.
  481.  
  482. \macronames{ shiftedgejoinerlist,
  483. edgejoinerlistcommatopgf,
  484. maximallynestededgejoinerlist,
  485. minimallynestededgejoinerlist,
  486. prettyprintedgejoinerlist
  487. }
  488.  
  489. \edgejoinerlistcommatopgf{\mymacro}[-4][6]{0-5, 1-4, 2-3}
  490. \tikz{\roundpolygonwithedgejoinersbasic{6}{\mymacro}}
  491.  
  492. \prettyprintedgejoinerlist{4-7, 6-5, 1*2, 0*3, 9-8}
  493.  
  494. \def\myedgejoinerlist{0-7, 1*2, 3-6, 4-5}
  495. \prettyprintedgejoinerlist[\mymacro][0][8]{\myedgejoinerlist}\mymacro;
  496. \prettyprintedgejoinerlist[][1][8]{\myedgejoinerlist};
  497. \prettyprintedgejoinerlist[][2][8]{\myedgejoinerlist};
  498. \prettyprintedgejoinerlist[\mymacro][3][8]{\myedgejoinerlist}\mymacro;
  499. \prettyprintedgejoinerlist[][4][8]{\myedgejoinerlist};
  500. \prettyprintedgejoinerlist[][5][8]{\myedgejoinerlist};
  501. \prettyprintedgejoinerlist[][6][8]{\myedgejoinerlist};
  502. \prettyprintedgejoinerlist[][7][8]{\myedgejoinerlist}
  503.  
  504. \prettyprintedgejoinerlist*[\mymacro][0][8]{\myedgejoinerlist}\mymacro;
  505. \prettyprintedgejoinerlist*[][1][8]{\myedgejoinerlist};
  506. \prettyprintedgejoinerlist*[][2][8]{\myedgejoinerlist};
  507. \prettyprintedgejoinerlist*[\mymacro][3][8]{\myedgejoinerlist}\mymacro;
  508. \prettyprintedgejoinerlist*[][4][8]{\myedgejoinerlist};
  509. \prettyprintedgejoinerlist*[][5][8]{\myedgejoinerlist};
  510. \prettyprintedgejoinerlist*[][6][8]{\myedgejoinerlist};
  511. \prettyprintedgejoinerlist*[][7][8]{\myedgejoinerlist}
  512.  
  513. \newpage
  514.  
  515. Silly example
  516.  
  517. \begin{tikzpicture}
  518. \roundpolygonwithedgejoiners[][][70mm]{60}{ 0*11, 1* 2, 3-10, 4- 7, 5- 6,
  519. 8- 9, 12-13, 14*51, 15-48, 16-33,
  520. 17-22, 18-21, 19*20, 23*32, 24-27,
  521. 25-26, 28-29, 30-31, 34-37, 35-36,
  522. 38*45, 39-40, 41*44, 42-43, 46-47,
  523. 49*50, 52-59, 53*58, 54-57, 55-56
  524. }
  525. \path [ late options = {name = ejmd 14 to 51, alias = A},
  526. late options = {name = ejmd 23 to 32, alias = B},
  527. late options = {name = ejmd 38 to 45, alias = C}
  528. ];
  529. \roundpolygonedgejoinermiddledotat<P>{barycentric cs:A=1,B=1,C=1};
  530. \def\mycircles{\foreach \radius in {1.6, ..., 18.6} {circle (\radius mm)};}
  531. \draw [real roundpolygon edge joiner] (P) \mycircles;
  532. \foreach \x/\y/\v/\c in {A/B/17/mygreen, B/C/34/myred, C/A/51/myblue} {
  533. \begin{scope}
  534. % Why do we need to specify ".center" everywhere?
  535. % See http://tex.stackexchange.com/questions/152186
  536. \clip (\x.center) .. controls (P.center) .. (\y.center)
  537. -- (vertex \v.center)
  538. -- (\x.center);
  539. \draw [real roundpolygon edge joiner, draw = \c] (P) \mycircles;
  540. \end{scope}
  541. }
  542. \begin{scope}[very thick]
  543. \foreach \x/\y/\c in {A/B/myred, B/C/myblue, C/A/mygreen} {
  544. \draw [\c] (\x) .. controls (P) .. (\y);
  545. }
  546. \end{scope}
  547. \begin{scope}[very thick, myred]
  548. \clip (A) circle [radius = 20mm];
  549. \draw (A) .. controls (P) .. (B);
  550. \end{scope}
  551. \end{tikzpicture}
  552.  
  553. \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement