我希望箭头指向矩形和线条的交点。这里我有一个 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}