我想画一些不规则的凸形状,中心有一个基站。
这是我尝试过的代码。但我无法保持其凸性。
\documentclass[margin=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}
\fill[blue!24] plot[domain=0:360, smooth cycle] (\x:5+rnd*4);
\end{tikzpicture}
\end{document}
答案1
目前尚不清楚“随机”的含义,但如果您希望它看起来像“随机”,您可以从凸多边形开始,然后对其进行平滑。
为此,您可以使用rounded corners
,但要小心,的参数rounded corners
不应大于最短边的一半。
\documentclass[tikz,border=7pt]{standalone}
\begin{document}
\begin{tikzpicture}
\fill[blue!24, rounded corners=5mm] plot coordinates{(0,0) (1,0) (2,1) (1,3) (-1,1)}--cycle;
\draw[red!10] plot coordinates{(0,0) (1,0) (2,1) (1,3) (-1,1)}--cycle;
\end{tikzpicture}
\end{document}
另一种可能性是与和 customfilldraw
结合使用。line join=round
line width
\documentclass[tikz,border=7pt]{standalone}
\begin{document}
\begin{tikzpicture}
\filldraw[blue!24, line join=round, line width=1cm] plot coordinates{(0,0) (1,0) (2,1) (1,3) (-1,1)}--cycle;
\draw[red!10] plot coordinates{(0,0) (1,0) (2,1) (1,3) (-1,1)}--cycle;
\end{tikzpicture}
\end{document}
如果你想要随机平滑,你可以这样做:
\documentclass[tikz,border=7pt]{standalone}
\begin{document}
\begin{tikzpicture}[rr/.style={rounded corners=rnd*1cm}]
\fill[blue!24] (0,0) foreach \c in {(1,0),(2,1),(1,3),(-1,1)}{[rr]--\c}[rr]--cycle;
\draw[red!10] plot coordinates{(0,0) (1,0) (2,1) (1,3) (-1,1)}--cycle;
\end{tikzpicture}
\end{document}
注意:这可以与随机点集的凸包相结合。
答案2
我在这里有点猜测,但我假设你想要一条通过随机点的平滑路径。也许有点像这里的深蓝色线?
这是通过元帖子,并且该方法遵循对 OP 的评论。
\documentclass[border=5mm]{standalone}
\usepackage{luatex85}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
path e, r, s;
e = fullcircle xscaled 89 yscaled 55;
r = for i=1 upto 8: point i + 1/8 normaldeviate of e -- endfor cycle;
s = for i=1 upto 8: point i of r {point i+1 of r - point i-1 of r} .. endfor cycle;
draw r withcolor 3/4 white;
draw s withcolor 2/3 blue;
endfig;
\end{mplibcode}
\end{document}
- 定义椭圆
r
定义一条用直线连接椭圆上一些随机点的路径。- 通过确保路径在点处沿着点 的方向向点
p
行进,定义一条通过所有这些点的平滑路径。(这就是 MP符号的作用)。p-1
p+1
{direction}
只要您确保随机性不太大,从而使点之间相距合理,这通常会给您带来一些凸的东西。