答案1
答案和你之前的问题很像:使用pic
s(尽管在这种情况下,它的优势不如前一个)。同样的抱怨:如果你给我们提供文本,你会得到更多的答案和更多的积极反馈。我编了一些文本。
从好的方面来看,没有什么可爱的方面。需要根据旋转角度自动旋转文本。这里是在变换后的图片中完成的。(Ti钾Z 当然auto
在倾斜的文本中以数学方式提供了这一点。)
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[pics/pft/.style={code={
\def\pv##1{\pgfkeysvalueof{/tikz/pft/##1}}
\draw[pic actions] (\pv{alpha}:\pv{r}) -- (\pv{alpha}:\pv{R}) to[out=-90,in=150]
(0:\pv{R}+\pv{dR}) to[out=-150,in=90]
(-\pv{alpha}:\pv{R}) -- (-\pv{alpha}:\pv{r}) -- cycle;
\pgfgettransformentries{\tmpa}{\tmpb}{\tmpc}{\tmpd}{\tmp}{\tmp}%
\pgfmathtruncatemacro{\itest}{(\tmpd<0 ? -1 :1)}
\path (0:\pv{R}) node[scale=\itest,anchor={90-90*\itest},transform shape,node font=\sffamily] {#1};
}},pft/.cd,r/.initial=0.1,alpha/.initial=5,R/.initial=4,dR/.initial=0.3]
\path foreach \X [count=\Y] in
{fox,marmot,cat,koala,bear,duck,mouse,%
anteater,rhino,hippo,lion,tiger,%
fox,marmot,cat,koala,bear,duck,mouse,%
anteater,rhino,hippo,lion,tiger,
fox,marmot,cat,koala,bear,duck,mouse,%
anteater,rhino,hippo,lion,tiger}
{(0,0)pic[anchor=west,rotate=160-\Y*10] {pft={\X}}
\ifnum\Y<13
(165-\Y*10:4.6) node[font=\sffamily\bfseries]{\Y}
\fi
};
\fill circle[radius=0.2cm];
\end{tikzpicture}
\end{document}
也许我对 Ti 太乐观了钾Z 技能可以自动避免倒立。这个技能有用,但设置锚点时仍需有人帮忙。
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{shadings}
\begin{document}
\begin{tikzpicture}
\begin{scope}[pft/.cd,r/.initial=0.1,alpha/.initial=4.5,R/.initial=4,dR/.initial=0.3]
\def\pv#1{\pgfkeysvalueof{/tikz/pft/#1}}
\draw[shading=color wheel,fill opacity=0.2]
(155:\pv{r})
foreach \Y in {1,...,36}
{ --
(160-\Y*10+\pv{alpha}:\pv{r}) -- (160-\Y*10+\pv{alpha}:\pv{R})
to[out=160-\Y*10-90,in=160-\Y*10+150]
(160-\Y*10:\pv{R}+\pv{dR}) to[out=160-\Y*10-150,in=160-\Y*10+90]
(160-\Y*10-\pv{alpha}:\pv{R}) -- (160-\Y*10-\pv{alpha}:\pv{r})
} -- cycle;
\path
foreach \X [count=\Y] in
{fox,marmot,cat,koala,bear,duck,mouse,%
anteater,rhino,hippo,lion,tiger,%
fox,marmot,cat,koala,bear,duck,mouse,%
anteater,rhino,hippo,lion,tiger,
fox,marmot,cat,koala,bear,duck,mouse,%
anteater,rhino,hippo,lion,tiger}
{ (160-\Y*10:\pv{r})-- (160-\Y*10:\pv{R})
node[pos=1,sloped,anchor={90-90*ifthenelse(cos(160-\Y*10)<0,-1,1)},font=\sffamily]{\X}
\ifnum\Y<13
(165-\Y*10:4.6) node[font=\sffamily\bfseries]{\Y}
\fi
} -- cycle;
\fill circle[radius=0.2cm];
\end{scope}
\end{tikzpicture}
\end{document}
有兴趣了解更高级的版本吗?那就看看这里。
folding
所有其他的事情都可以用或库来完成shapes.geometric
。
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}[nodes={draw=gray,node font=\bfseries\sffamily},
rp/.style={regular polygon,regular polygon sides=#1}]
\path node[rp=8,minimum size=8em](6gon) {Potency}
foreach \X [count=\Y] in {6P,12C,30C,200C,1M}
{(6gon.225-45*\Y) node[rp=5,anchor=south,rotate=135-45*\Y,minimum size=5.2em]{\X}};
\path (8,0) node[star,star points=7,minimum
size=14em,fill=gray!50,rotate=360/14](S) {}
foreach \X [count=\Y,evaluate=\Y as \Z using {int(1+Mod(2-\Y,7))}] in {Cream,Beer,Wine,Whiskey}
{(S.outer point \Z) -- (S.center)
node[pos=0.1,sloped,anchor={90-sign(\Z-2.5)*90},draw=none]{\X}}
(S.center) node[star,star points=7,minimum size=7em/2,rotate=360/14]{};
\end{tikzpicture}
\end{document}