在坐标上绘制彩色图案

在坐标上绘制彩色图案

有没有什么简单的方法可以用任何方法在 LaTex 上绘制这个图形?

https://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/SO10.svg/2560px-SO10.svg.png

在此处输入图片描述

非常感谢分享任何评论。

答案1

画这个很简单,但很乏味。这是给你一个开始。单个三角形存储在 中pickite三个三角形的组存储在 中pictkite您可以移动和旋转整个组,并使用 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结合tkitetcirc图片的图片,很容易创建一行。

\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}

在此处输入图片描述

相关内容