抱歉,大家,我真的不知道该怎么做......
请考虑下图:
绘制者:
\begin{tikzpicture}
\begin{scope}[rotate=+60]
\foreach \x in {-0.3, -0.2, -0.1, 0.0, +0.1, +0.1, +0.2, +0.3}
\draw[xshift=\x cm] (0, +2) -- (0, 0);
\end{scope}
\begin{scope}[rotate=-60]
\foreach \x in {-0.3, -0.2, -0.1, 0.0, +0.1, +0.1, +0.2, +0.3}
\draw[xshift=\x cm] (0, +2) -- (0, 0);
\end{scope}
\begin{scope}[rotate=180]
\foreach \x in {-0.3, -0.2, -0.1, 0.0, +0.1, +0.1, +0.2, +0.3}
\draw[xshift=\x cm] (0, +2) -- (0, 0);
\end{scope}
\fill[white] (-1, -1) -- (+1, -1) -- (0, +1) -- cycle;
\draw[very thick] (-1, -1) -- (+1, -1) -- (0, +1) -- cycle;
\draw (0, -0.3) node {+};
\end{tikzpicture}
现在我该如何在其中添加箭头?(我希望每条线与三角形相交处都有一个箭头。)
如您所见,我已经不得不做一些糟糕的修改,在这些线条上方绘制一个白色三角形,因为 TikZ 似乎不允许任意裁剪。但如果我能让线条停在三角形的边缘,就不需要裁剪了 --- 这也使得添加箭头变得微不足道。
经过大约一个小时的反复尝试,我最终设法使连接节点的语法真正起作用。但随后所有线都会汇聚到三角形的中心,而不是像我希望的那样保持平行。
\begin{tikzpicture}
\node[name=add, regular polygon, regular polygon sides=3, draw, very thick] at (0, 0) {+};
\begin{scope}[rotate=60]
\foreach \x in {-0.3, -0.2, -0.1, 0.0, +0.1, +0.1, +0.2, +0.3}
\draw[xshift=\x cm, ->] (0, +2) to (add);
\end{scope}
\end{tikzpicture}
有什么提示吗?
答案1
您可以使用锚点来定位箭头,并且按照@Ignasi 所建议的,以角度指定坐标。
平均能量损失
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}
\node(add)[regular polygon,regular polygon sides=3,draw,very thick,minimum size=2cm]{+};
\foreach\ang[count=\i] in {60,180,300}{
\begin{scope}[rotate=\ang]
\foreach \x in {0,.1,.2,.3}{
\draw[<-]([xshift=\x cm]add.side \i)--+(90:2cm);
\draw[<-]([xshift=-\x cm]add.side \i)--+(90:2cm);
}
\end{scope}
}
\end{tikzpicture}
\end{document}