TikZ 中交叉口的箭头

TikZ 中交叉口的箭头

我希望箭头指向矩形和线条的交点。这里我有一个 M(N)WE:

\documentclass[border=5pt,tikz]{standalone}
\usetikzlibrary{intersections}
\begin{document}
    \begin{tikzpicture}
        \clip[draw] (0,0) rectangle (3,3);
        \path[name path=a] (0,0) rectangle (3,3);
%       \draw[name path=b] (1.5,1.5) --+ (-2,2);
%           \path[name intersections={of=a and b,by=s}];
%       \node[fill=red,circle,inner sep=1pt] at (s) {};
        \foreach \x in {0,10,...,350}
        {
            \draw[name path=\x,shift={(1.5,1.5)}] (0,0) -- (\x:2);
%           \pgfmathsetmacro{\b}{\x}
            \path[name intersections={of=\x and a,by=s\x}];
        }
    \end{tikzpicture}
\end{document}

当然,我可以手动输入交叉符号,但是我foreach loop也可以在 a 中使用该命令吗?

答案1

我通常以不以宏结尾的方式命名路径。这样,如果我用宏计算两个路径之间的交点,就可以节省时间。

\documentclass[border=5pt,tikz]{standalone}
\usetikzlibrary{intersections}
\begin{document}
    \begin{tikzpicture}
        \clip[draw] (0,0) rectangle (3,3);
        \path[name path=a] (0,0) rectangle (3,3);
      \draw[name path=b] (1.5,1.5) --+ (-2,2);
          \path[name intersections={of=a and b,by=s}];
      \node[fill=red,circle,inner sep=1pt] at (s) {};
        \foreach \x in {0,10,...,350}
        {
            \draw[name path=\x-path,shift={(1.5,1.5)}] (0,0) -- (\x:2);
%           \pgfmathsetmacro{\b}{\x}
            \path[name intersections={of=\x-path and a,by=s\x}];
        }
    \end{tikzpicture}
\end{document}

答案2

没有任何交叉点:

\documentclass[border=5pt,tikz]{standalone}

\begin{document}

  \begin{tikzpicture}
    \draw (0,0) rectangle (3,3);
    \foreach \rot in {0,90,180,270}
      \foreach \x in {-40,-30,...,40} 
        \draw[->] (1.5,1.5) --++([rotate=\rot]\x : {1.5/cos(\x)});
  \end{tikzpicture}

\end{document}

在此处输入图片描述

接触矩形右侧的箭头可以轻松绘制为\draw[->] (1.5,1.5) --++(\x : {1.5/cos(\x)}),其中角度为的每个箭头\x的长度1.5/cos(\x)为。然后,我们应该对矩形的其余上边、左边和下边重复此操作,外\foreach循环通过旋转相应角度的箭头来实现。

答案3

您可以尝试以下操作(切换a\x):

交叉路口

\documentclass[border=5pt,tikz]{standalone}
\usetikzlibrary{intersections}
\begin{document}
    \begin{tikzpicture}
        \clip[draw] (0,0) rectangle (3,3);
        \path[name path=a] (0,0) rectangle (3,3);
%       \draw[name path=b] (1.5,1.5) --+ (-2,2);
%           \path[name intersections={of=a and b,by=s}];
%       \node[fill=red,circle,inner sep=1pt] at (s) {};
        \foreach \x in {0,10,...,350}
        {
            \draw[name path=\x,shift={(1.5,1.5)}] (0,0) -- (\x:2);
%           \pgfmathsetmacro{\b}{\x}
            \path[name intersections={of=a and \x, by=s\x}];
            \draw[->] (1.5,1.5)-- (s\x);
        }
    \end{tikzpicture}
\end{document}

相关内容