TikZ 中的线条交叉不良

TikZ 中的线条交叉不良

考虑以下:

\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}

相关内容