在 TikZ 中绘制许多随机路径

在 TikZ 中绘制许多随机路径

我正在尝试在 TikZ 中绘制一个图表,以直观地解释我在论文中尝试进行的类比。基本上,我想从一个包含许多不同长度的随机路径的平面开始,例如下面的平面。我通过在 LuaLaTeX 中编译下面的代码来创建该图表,它结合了网站上的另外两个答案(在绘制随机路径在随机位置绘图——您将需要使用后者提到的泊松盘采样库)。

我想对输出进行一些调整。首先,为了使其整洁,我不希望路径能够如此轻易地自行返回,从而消除某些路径中指向“错误”方向的尖锐弯折和箭头。其次,如果可能的话,我希望某些路径彼此松散相关:就好像某些路径具有某种质量,在某种程度上以引力吸引周围的路径。并且我希望这些特定路径以不同于所有其他路径的颜色绘制。

这可能吗?我将非常感激任何帮助。

包含许多不同长度的随机路径的平面

\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage{tikz}
\usepackage{poisson}
\begin{document}
\edef\mylist{\poissonpointslist{10}{5}{0.33}{20}}

\begin{tikzpicture}

\foreach \x/\y in \mylist {
    \draw[->, rounded corners=5pt] (\x,\y)
        \foreach \i in {1,...,3} {
            -- ++(rnd*180:rnd)
        };
}

\end{tikzpicture}
\end{document}

答案1

像这样吗?

\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage{tikz}
\usepackage{poisson}
\begin{document}
\edef\mylist{\poissonpointslist{10}{5}{0.33}{20}}

\begin{tikzpicture}

\foreach \x/\y in \mylist {
    \pgfmathsetmacro{\myrnd}{rnd*360}
    \pgfmathsetmacro{\mydist}{pow(\x*\x+\y*\y,1/3)/4}
    \draw[->, rounded corners=5pt] (\mydist*\x,\mydist*\y)
        \foreach \i in {1,...,3} {
            -- ++(\myrnd+rnd*60:rnd)
        };
}
\end{tikzpicture}
\end{document}

在此处输入图片描述

我首先计算一个主角度,然后向其中添加 -60 到 +60 之间的波动。为了使对象聚类,我添加了一个函数,该函数会将靠近聚类点的事物移近一点,将远离聚类点的事物移远一点。

这是另一个方案,其中方向是相关的,尖角消失了。它们出现在上方是因为有些片段非常短。

\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage{tikz}
\usepackage{poisson}
\begin{document}
\edef\mylist{\poissonpointslist{10}{5}{0.33}{20}}

\begin{tikzpicture}
\foreach \x/\y in \mylist {
    \pgfmathsetmacro{\myrnd}{(rnd-0.5)*60+veclen(\x,\y)*180}
    %\pgfmathsetmacro{\mydist}{pow(\x*\x+\y*\y,1/3)/4}
    \draw[->, rounded corners=3pt] (\x,\y)
        \foreach \i in {1,...,3} {
            -- ++({\myrnd+(rnd-0.5)*60}:{0.4+0.6*rnd})
        };
}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容