在最近的教程风格答案中我如何绘制这些带有阴影区域的多边形?,我遇到了一些奇怪的行为tikz
。下面的代码是该答案代码的略微简化版本。我试图进一步减少它,但这使问题更难发现。
如果我用黑色结束下面的行,则会得到以下结果-- cycle
:
\draw (A1) -- (intersection-1) -- (A4) -- cycle;
注意黑线如何越过 A1 和 A4 处的点。但是,通过不使用-- cycle
起点而是重新指定起点作为终点,我获得了 A1 的更好结果:
\draw (A1) -- (intersection-1) -- (A4) -- (A1);
下面是修复此问题的方法,但是如果使用--cycle
或重新指定起点作为终点,行为为什么会有所不同?
参考:
- 基于如何在 3D 中修复 TikZ 角点,应用
line join=round
确实解决了这个问题并产生了预期的结果:
代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
% Define all the points:
\coordinate (A1) at (0,4);
\coordinate (A2) at (3,6);
\coordinate (A3) at (5,5);
\coordinate (A4) at (6,3);
\coordinate (A5) at (4.5,1.5);
\coordinate (An) at (0,0);
% Draw the lines
\draw [ultra thick, blue, solid ] (An) -- (A1) -- (A2) -- (A3) -- (A4) -- (A5);
% Label the nodes:
\foreach \Index/\Position in {1/left, 2/above, 3/above right, 4/right, 5/below right, n/left} {
\node [\Position] at (A\Index) {$A_{\Index}$};
}%
\draw [gray, ultra thick]
[name path=A1A3] (A1) -- (A3)
[name path=A2A4] (A2) -- (A4)
[name path=A1A4] (A1) -- (A4);
\fill [fill=red!20, draw=black, ultra thick, name intersections={of=A1A3 and A2A4}]
(A1) -- (intersection-1) -- (A4) -- cycle;% produces wacky vertices
%(A1) -- (intersection-1) -- (A4) -- (A1);% this fixes problem at (A)
% % Following fix works
% \fill [fill=red!20, draw=black, line join=round, ultra thick, name intersections={of=A1A3 and A2A4}]
% (A1) -- (intersection-1) -- (A4) -- cycle;
\end{tikzpicture}
\end{document}
答案1
从 PGF 手册中,我发现了以下声明。