我想在我的无线场景中绘制一些不规则的圆圈(形状)。
中心处有一个基站。
周围是一些不规则的圆圈(形状)。
我在这个网站上找到了一些可用的东西(但我觉得它太大了)
现在老师让我把这个圆尽量弄小,但是我发现当我把半径调小时,不规则圆的圆度就不那么明显了。有什么办法可以解决这个问题吗?
答案1
使用 PSTricks(仅用于打字练习)。
单身的
详细:
\documentclass[pstricks,border=12pt]{standalone} \usepackage{pst-node,pst-plot} \pstVerb{realtime srand} \psset{plotpoints=50} \def\points{} \begin{document} \begin{pspicture}(-2,-2)(2,2) \curvepnodes{0}{360}{Rand 1.50 add t PtoC}{X} \multido{\i=0+1}{\Xnodecount}{\xdef\points{\points (X\i)}} \expandafter\psccurve\points \end{pspicture} \end{document}
袖珍的:
\psnccurve
是一个新的宏(还有其他宏),用于pst-node
传递节点数组,而\psccurve
无需创建连接宏\points
(如上面的代码中所使用的)。现在我可以节省更多击键次数。\documentclass[pstricks,border=12pt]{standalone} \usepackage{pst-node,pst-plot} \pstVerb{realtime srand} \psset{plotpoints=50} \begin{document} \begin{pspicture}(-2,-2)(2,2) \curvepnodes{0}{360}{Rand 1.50 add t PtoC}{X} \psnccurve(0,\Xnodecount){X} \end{pspicture} \end{document}
多种的
详细:
\documentclass[pstricks,border=12pt]{standalone} \usepackage{pst-node,pst-plot} \pstVerb{realtime srand} \psset{plotpoints=50} \begin{document} \psLoop{10}{% \begin{pspicture}(-2,-2)(2,2) \curvepnodes{0}{360}{Rand 1.50 add t PtoC}{X} \def\points{}% empty for each iteration \multido{\i=0+1}{\Xnodecount}{\xdef\points{\points (X\i)}} \expandafter\psccurve\points \end{pspicture}} \end{document}
袖珍的:
\documentclass[pstricks,border=12pt]{standalone} \usepackage{pst-node,pst-plot} \pstVerb{realtime srand} \psset{plotpoints=50} \begin{document} \psLoop{10}{% \begin{pspicture}(-2,-2)(2,2) \curvepnodes{0}{360}{Rand 1.50 add t PtoC}{X} \psnccurve(0,\Xnodecount){X} \end{pspicture}} \end{document}
笔记
\psnline
、\psncurve
和\psnccurve
可用,但\psnpolygon
不可用。
注意力
请注意,Rand
不再产生 0 到 0.5 之间的随机实数(含)。其定义已被默认更改。现在它产生 0 到 1 之间的随机实数(含)。它没有记录,也没有公布,但它仍然很有趣!
上面给出的代码尚未更新,因此会产生不同的输出。我现在没有时间更新它。很抱歉给您带来不便。
答案2
使用该rand
函数,您可以编写\irregularcircle
宏:
\documentclass[tikz]{standalone}
\newcommand\irregularcircle[2]{% radius, irregularity
\pgfextra {\pgfmathsetmacro\len{(#1)+rand*(#2)}}
+(0:\len pt)
\foreach \a in {10,20,...,350}{
\pgfextra {\pgfmathsetmacro\len{(#1)+rand*(#2)}}
-- +(\a:\len pt)
} -- cycle
}
\begin{document}
\begin{tikzpicture}
\coordinate (c) at (0,0);
\coordinate (d) at (1,2);
\draw[blue,rounded corners=1mm] (c) \irregularcircle{1cm}{1mm};
\draw[red,rounded corners=1mm] (d) \irregularcircle{1cm}{1mm};
\end{tikzpicture}
\end{document}
编辑:使用操作的变体let
(来自calc
库):
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\newcommand\irregularcircle[2]{% radius, irregularity
let \n1 = {(#1)+rand*(#2)} in
+(0:\n1)
\foreach \a in {10,20,...,350}{
let \n1 = {(#1)+rand*(#2)} in
-- +(\a:\n1)
} -- cycle
}
\begin{document}
\begin{tikzpicture}
\coordinate (c) at (0,0);
\coordinate (d) at (1,2);
\draw[blue,rounded corners=.5mm] (c) \irregularcircle{1cm}{1mm};
\draw[red,rounded corners=.5mm] (d) \irregularcircle{1cm}{1mm};
\end{tikzpicture}
\end{document}
答案3
您可以使用plot
:
\documentclass{scrbook}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw plot[smooth, tension=.7] coordinates {(-3.5,0.5) (-3,2.5) (-1,3.5) (1.5,3) (4,3.5) (5,2.5) (5,0.5) (2.5,-2) (0,-0.5) (-3,-2) (-3.5,0.5)};
\end{tikzpicture}
\begin{tikzpicture}
\draw plot[smooth, tension=.8] coordinates {(-2.5,-0.5) (-3.5,0) (-2.5,0.5) (-3,1) (-2,1.5) (-2,3) (-1,2.5) (1,4.5) (2.5,3) (3,3.5) (3.5,3) (3,2) (4.5,2) (4.5,0) (3,1) (2.5,-0.5) (3.5,-1.5) (1.5,-1) (0.5,-2) (-2,-2.5) (-1.5,-1) (-2.5,-1.5) (-2.5,-0.5)};
\end{tikzpicture}
\end{document}
使用与上面相同的点,可以使用优秀hobby
包绘制曲线:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{hobby}
\begin{document}
\begin{tikzpicture}[use Hobby shortcut,closed=true]
\draw (-3.5,0.5) .. (-3,2.5) .. (-1,3.5).. (1.5,3).. (4,3.5).. (5,2.5).. (5,0.5) ..(2.5,-2).. (0,-0.5).. (-3,-2).. (-3.5,0.5);
\end{tikzpicture}
\begin{tikzpicture}[use Hobby shortcut,closed=true]
\draw (-2.5,-0.5).. (-3.5,0).. (-2.5,0.5).. (-3,1).. (-2,1.5).. (-2,3).. (-1,2.5).. (1,4.5).. (2.5,3).. (3,3.5).. (3.5,3).. (3,2).. (4.5,2).. (4.5,0).. (3,1).. (2.5,-0.5).. (3.5,-1.5).. (1.5,-1).. (0.5,-2).. (-2,-2.5).. (-1.5,-1).. (-2.5,-1.5).. (-2.5,-0.5);
\end{tikzpicture}
\end{document}
选择您想要的积分,其余的交给hobby
。如需更多详细信息,请使用texdoc hobby
或texdoc.net。
答案4
Paul Gaborit 的答案有点过时了。现在rand
有了这个功能rnd
,并且有一个decorations
库,可用于制作具有尖锐不规则性的不规则圆。
对于平滑不规则性,plot
路径说明符(由用户 11232 使用)也可以与函数一起使用rnd
,从而无需创建坐标。下面的 MWE 介绍了这两种解决方案。
平均能量损失
\documentclass[margin=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\draw plot[domain=0:350, smooth cycle] (\x:2+rnd*0.5);
\draw[decoration={random steps, amplitude=2mm}, decorate] (4.5,0) circle (2);
\end{tikzpicture}
\end{document}