有没有什么简单的方法可以用任何方法在 LaTex 上绘制这个图形?
https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/SO10.svg/2560px-SO10.svg.png
非常感谢分享任何评论。
答案1
画这个很简单,但很乏味。这是给你一个开始。单个三角形存储在 中pic
,kite
三个三角形的组存储在 中pic
。tkite
您可以移动和旋转整个组,并使用 pgf 键对单个风筝进行着色和旋转。同样适用于circle
,即圆形。以下是示例。
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[line join=round,pics/kite/.style={code={
\draw[pic actions]
(120:0.2) -- (0:0.2) -- (-120:0.2) -- ++ (150:{0.2*sin(120)})
-- ++ (30:{0.2*sin(120)}) -- ++ (150:{0.2*sin(120)})
-- ++ (30:{0.2*sin(120)})
-- cycle (120:0.2) -- ++ (-90:{0.2*sin(120)});}},
pics/circ/.style={code={\draw[pic actions] (0,0) circle[radius=0.12];}},
pics/tkite/.style={code={\tikzset{#1}
\path foreach \Kite in {1,2,3}
{(-60+\Kite*120:0.4) pic[kite \Kite/.try,kites/.try]{kite}};}},
pics/tcirc/.style={code={\tikzset{#1}
\path foreach \Circ in {1,2,3}
{(-60+\Circ*120:0.4) pic[circ \Circ/.try,circs/.try]{circ}};}}]
\path (60:1.5) pic{tkite={kite 1/.style={fill=red},kite 2/.style={fill=blue!30},
kite 3/.style={fill=green},kites/.style={rotate=-30}}}
pic{tcirc={circ 1/.style={fill=red},circ 2/.style={fill=blue!30},
circ 3/.style={fill=green}}}
++ (-45:2) pic[rotate=150]{tkite={kite 1/.style={fill=orange},kite 2/.style={fill=blue!60},
kite 3/.style={fill=green},kites/.style={rotate=30}}}
pic[rotate=150]{tcirc={circ 1/.style={fill=orange},circ 2/.style={fill=blue!60},
circ 3/.style={fill=green}}};
\end{tikzpicture}
\end{document}
例如,
++ (-45:2) pic[rotate=150]{tkite={kite 1/.style={fill=orange},kite 2/.style={fill=blue!60},
kite 3/.style={fill=green},kites/.style={rotate=30}}}
表示右下方的组旋转 150 度,每个单独的形状围绕其中心旋转 30 度,第一个填充橙色,第二个填充蓝色,最后一个填充绿色。重复此操作将使您完成图表。当然,如果组及其元素的方向和颜色背后有理论,您可以通过编程来绘制它。
手动继续,并添加一张tt
结合tkite
和tcirc
图片的图片,很容易创建一行。
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[line join=round,pics/kite/.style={code={
\draw[pic actions]
(120:0.2) -- (0:0.2) -- (-120:0.2) -- ++ (150:{0.2*sin(120)})
-- ++ (30:{0.2*sin(120)}) -- ++ (150:{0.2*sin(120)})
-- ++ (30:{0.2*sin(120)})
-- cycle (120:0.2) -- ++ (-90:{0.2*sin(120)});}},
pics/circ/.style={code={\draw[pic actions] (0,0) circle[radius=0.12];}},
pics/tkite/.style={code={\tikzset{#1}
\path foreach \Kite in {1,2,3}
{(-60+\Kite*120:0.4) pic[elm \Kite/.try,kites/.try]{kite}};}},
pics/tcirc/.style={code={\tikzset{#1}
\path foreach \Circ in {1,2,3}
{(-60+\Circ*120:0.4) pic[elm \Circ/.try,circs/.try]{circ}};}},
pics/tt/.style={code={\path pic[transform shape]{tkite={#1}} pic[transform shape]{tcirc={#1}};}}]
%
\draw[dashed,gray,-stealth,semithick] (-150:5) -- (30:5);
\draw[dashed,gray,-stealth,semithick] (-60:5) -- (120:5);
\draw[dashed,gray,-stealth,semithick] (-60:5) -- (120:4);
\draw foreach \X in {0,60,...,300}
{(\X:0.4) pic[fill=blue!30]{circ}};
\path (30:2)
++ (120:5) pic[rotate=30]{tcirc={elm 1/.style={fill=red},elm 2/.style={fill=blue!30},
elm 3/.style={fill=green}}}
++ (-60:2) pic[rotate=30,fill=yellow]{kite}
++ (-60:2) pic{tt={elm 1/.style={fill=red},elm 2/.style={fill=blue!30},
elm 3/.style={fill=green},kites/.style={rotate=-30}}}
++ (-60:2) pic[rotate=150]{tt={elm 1/.style={fill=orange},elm 2/.style={fill=blue!60},
elm 3/.style={fill=green},kites/.style={rotate=-120}}}
++ (-60:2) pic[rotate=-30,fill=gray]{kite}
++ (-60:2) pic[rotate=210]{tcirc={elm 1/.style={fill=green},elm 2/.style={fill=blue!60},
elm 3/.style={fill=orange}}};
\end{tikzpicture}
\end{document}