圆随机变形中圆心与半径状态的改变

圆随机变形中圆心与半径状态的改变

谢谢您的回答。在下面的代码中:

\begin{tikzpicture}
 \path[use as bounding box] (-1.8,-1.8) rectangle (1.8,1.8);
 \draw[clip] plot[smooth cycle,variable=\t,samples at={0,45,...,315}] (\t:{1.5*(1+0.1*rnd)});
 \foreach \X [count=\Y starting from 0] in {red,blue,green!70!black}
 {\draw[\X] plot[smooth,variable=\t,samples at={0,0.25,...,1.75}] 
 ({15+6*(rnd-0.5)+120*\Y}:\t);
 }
\end{tikzpicture}
  1. 如何改变圆心和半径?
  2. 如何改变圆的半径状态? 在此处输入图片描述

答案1

这是通过构造 来使参数更加明显的尝试pic。例如考虑

\path (4,0) pic{random circle={radius=2,rays=4,offset angle=60,radius variation=0.2}}; 

(4,0)是中心,半径为 2,有四条射线和稍大的半径变化。输出是右侧圆,左侧圆保留(0,0)以供比较。

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[pics/random circle/.style={code={
 \tikzset{random circle/.cd,#1}
 \begin{scope}
  \draw[clip] plot[smooth cycle,variable=\t,samples at={0,45,...,315}] 
    (\t:{\pgfkeysvalueof{/tikz/random circle/radius}*(1+
    \pgfkeysvalueof{/tikz/random circle/radius variation}*(rnd-0.5))});
  \pgfmathsetmacro{\endrad}{\pgfkeysvalueof{/tikz/random circle/radius}*(1+\pgfkeysvalueof{/tikz/random circle/radius variation})}  
  \foreach \Y  in {0,...,\the\numexpr\pgfkeysvalueof{/tikz/random circle/rays}-1}
   {\pgfmathsetmacro{\mycolor}{{\pgfkeysvalueof{/tikz/random circle/colors}}[\Y]}
   \draw[\mycolor] plot[smooth,variable=\t,samples at={0,0.25,...,\endrad}] 
   ({\pgfkeysvalueof{/tikz/random circle/offset angle}+
      \pgfkeysvalueof{/tikz/random circle/angle variation}*(rnd-0.5)+\Y*360/\pgfkeysvalueof{/tikz/random circle/rays}}:\t);
   }
 \end{scope}}},random circle/.cd,radius/.initial=1.5,radius variation/.initial=0.1,
 rays/.initial=3,offset angle/.initial=15,angle variation/.initial=6,
 colors/.initial={"red","blue","green!70!black","orange","purple","cyan"}]
 \path (0,0) pic{random circle} 
 (4,0) pic{random circle={radius=2,rays=4,offset angle=60,radius variation=0.2}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

您可以改变的参数还有更多,例如颜色和光线的随机性,甚至可以设置更多参数 pgf 键。这是否有意义取决于这一切的最终目的。

答案2

以下代码绘制一个以 (0,0) 为中心、半径为 1cm 的圆

\begin{tikzpicture}
\draw (0,0) circle [radius=1cm];
\draw[draw=red,thick] (0,0)--(1,0);
\draw[draw=blue,thick] (0,0)--({cos(120)},{sin(120)});
\draw[draw=green,thick] (0,0)--({cos(240)},{sin(240)});
\fill (0,0) circle (1.3pt);
\end{tikzpicture}

以及以下代码

\begin{tikzpicture}
 \path[use as bounding box] (-1.8,-1.8) rectangle (1.8,1.8);
 \draw[clip] plot[smooth cycle,variable=\t,samples at={0,45,...,315}] (\t:{1*(1+0.1*rnd)});
 \foreach \X [count=\Y starting from 0] in {red,blue,green!70!black}
 {\draw[\X] plot[smooth,variable=\t,samples at={0,0.25,...,1.75}] 
 ({15+6*(rnd-0.5)+120*\Y}:\t);
 }
\end{tikzpicture}

绘制半径为 1 的圆的随机变形。现在,我想问一些问题。如果您能帮助我,我将不胜感激。

  1. 对上面的第二段代码(上面的代码)做哪些修改我可以绘制一个以(-3,0)为中心的圆?
  2. 第二段代码第一行的用途是什么?

    \path[用作边界框] (-1.8,-1.8) 矩形 (1.8,1.8);

  3. 在 tikz 中,(x,x) 和 (\x:{\x}) 有什么不同,例如 (0,0) 在

    \绘制(0,0)圆[半径=1cm];

和 (\t:{1*(1+0.1*rnd)}) 在

\draw[clip] plot[smooth cycle,variable=\t,samples at={0,45,...,315}] (\t:{1*(1+0.1*rnd)});

相关内容