![TikZ 中的线条交叉不良](https://linux22.com/image/237220/TikZ%20%E4%B8%AD%E7%9A%84%E7%BA%BF%E6%9D%A1%E4%BA%A4%E5%8F%89%E4%B8%8D%E8%89%AF.png)
考虑以下:
\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line width = 4]
\coordinate (a) at (0,0);
\coordinate (b) at (1,0);
\coordinate (c) at (1,1);
\draw (a) -- (intersection of a--b and b--c);
\draw (c) -- (intersection of a--b and b--c);
\end{tikzpicture}
\end{document}
其结果为:
我该如何填补这个角落?添加并[cap=rounded]
不能解决问题。我知道我可以这样做\draw (a) -- (b) -- (c)
,但我需要使用交集来获得相同的效果。
谢谢!
编辑1:我试图弄清楚如何处理两个独立的线段及其交点。例如:
\begin{tikzpicture}[scale=4,line width=7]
\coordinate (a1) at (0,0);
\coordinate (b1) at (1,1);
\coordinate (b2) at (1,-1);
\draw (b1) -- (b2);
\foreach \x in {0,20,30,40,45}
{
\coordinate (a2) at (\x:10);
\draw (a1) -- (intersection of a1--a2 and b1--b2);
}
\end{tikzpicture}
在这里,我事先并不知道(我知道,但为了回答这个问题,我不知道)两个线段的相交点在哪里,以及相交点是否是一个共同的端点。
答案1
为了正确绘制角落,应使用单个\draw
命令绘制路径。您仍然可以使用intersection of
以下命令:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line width = 4]
\coordinate (a) at (0,0);
\coordinate (b) at (1,0);
\coordinate (c) at (1,1);
\draw (a) -- (intersection of a--b and b--c) -- (c);
\end{tikzpicture}
\end{document}
答案2
我认为,最好的处理方法是,从要绘制的线的边缘clip
开始截断延伸的线。要做到这一点有点麻烦(但如果没有出色的库,这几乎是不可能的),并且不能保证以下内容是可靠的。我尝试不假设您的线条与轴对齐,但我只小心地将剪辑路径放在从到的线上。(a1)
calc
(b1)
(b2)
顺便说一句,这与选项的交互效果不佳,scale
因为选项会缩放坐标,但不会缩放线宽。因此,为了放大您的图片,我使用了x=4cm,y=4cm
重新定义标准单位的语法。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[line width=7,y=4cm,x=4cm]
\coordinate (a1) at (0,0);
\coordinate (b1) at (1,1);
\coordinate (b2) at (1,-1);
\coordinate (ab) at ($($(b1)!(a1)!(b2)$)!-.5\pgflinewidth!(a1)$);
\coordinate (ab1) at ($(b1)!(ab)!90:(b2)$);
\coordinate (ab2) at ($(b2)!(ab)!90:(b1)$);
\draw[red] (b1) -- (b2);
\clip ($(ab1)!-1cm!(ab2)$) -- ($(ab2)!-1cm!(ab1)$) -| (a1) |- ($(ab1)!-1cm!(ab2)$);
\foreach \x in {0,20,30,40,45}
{
\coordinate (a2) at (\x:10);
\draw (a1) -- ($(a1)!1.1!(intersection of a1--a2 and b1--b2)$);
}
\end{tikzpicture}
\end{document}
答案3
我认为您必须(重新)绘制角落作为连续路径的一部分:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=4,line width=7]
\coordinate (a1) at (0,0);
\coordinate (b1) at (1,1);
\coordinate (b2) at (1,-1);
\coordinate (a0) at (0:10);
\draw (b1) -- (b2) ;
\foreach \x in {0,20,30,40,45}
{
\coordinate (a2) at (\x:10);
\draw (a1) -- (intersection of a1--a2 and b1--b2) -- (b2);
}
\draw (b1) -- (a1) -- (intersection of a1--a0 and b1--b2);
\end{tikzpicture}
\end{document}