TikZ:如何将曲线延伸到点之外

TikZ:如何将曲线延伸到点之外

此示例显示通过反复试验的方法在点后绘制一些额外的曲线。

是否有特定的 tikz 命令可以执行此操作?

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
%
\begin{tikzpicture}
%
\coordinate (n_3) at (1,1);
\coordinate (h_1) at (1.5,3);
%dots
\fill[blue] (n_3) circle (2pt);
\fill[blue] (h_1) circle (2pt);
%Left curve
\draw (n_3) to [bend right=5](h_1);
\draw (n_3) -- ++(-0.2,-0.5);
\draw (h_1) -- ++(0.1,0.5);
%
\end{tikzpicture}
%
\end{document}

蓝点是用来画曲线的,那么蓝点后面的曲线该怎么延伸呢?

答案1

使用shorten > = <negative length>shorten < = <negative length>将用曲线段延伸曲线。如果距离较短,曲率较小,这可能就是您所需要的,但是,正如 Altermundus 指出的那样,如果曲率较大,则线条将不再经过定义的点。

\documentclass[border=5mm]{standalone}
\usepackage{tikz}

\begin{document}
%
\begin{tikzpicture}
%
\coordinate (n_3) at (1,1);
\coordinate (h_1) at (3,1.5);
%dots
\fill[blue] (n_3) circle (2pt);
\fill[blue] (h_1) circle (2pt);
%Left curve
\draw [shorten >=-0.4cm,shorten <=-0.4cm] (n_3) to [bend right=5](h_1);
%
\end{tikzpicture}
%
\end{document}

答案2

更新

[bend right=70]需要调整最后使用的节点,但结果是正确的

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

\coordinate (n_3) at (1,1);
\coordinate (h_1) at (1.5,3);

\fill[blue] (n_3) circle (2pt);
\fill[blue] (h_1) circle (2pt);

\draw (n_3) to [bend right=70] 
                node[pos=0,sloped,minimum width=.8cm] (n_3) {} 
                node[pos=1,sloped,minimum width=.8cm] (h_1) {}
                (h_1) ;
 \draw (n_3.center) --  (n_3.west);  
 \draw (h_1.center) --  (h_1.west);     
\end{tikzpicture}

\end{document} 

在此处输入图片描述

实际上,shorten我们[bend right=70]得到

在此处输入图片描述

在其他情况下,对于简单的曲线,我更喜欢 Jake 的答案,但是我的第一次尝试shorten效率不高,因为我一直\documentclass{standalone}这样做,所以我搜索了另一种方法。

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

\coordinate (n_3) at (1,1);
\coordinate (h_1) at (1.5,3);

\fill[blue] (n_3) circle (2pt);
\fill[blue] (h_1) circle (2pt);

\draw (n_3) to [bend right=5] 
                node[pos=0,sloped,minimum width=.8cm] (n_3) {} 
                node[pos=1,sloped,minimum width=.8cm] (h_1) {}
                (h_1) ;
 \draw (n_3.center) --  (n_3.west);  
 \draw (h_1.center) --  (h_1.east);     
\end{tikzpicture}

\end{document} 

在此处输入图片描述

答案3

这是另一个解决方案:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}

\begin{document}
%
\begin{tikzpicture}
%
\coordinate (n_3) at (1,2);
\coordinate (h_1) at (3,1.5);
%dots
\fill[blue] (n_3) circle (2pt);
\fill[blue] (h_1) circle (2pt);
%Left curve
\path  (n_3) to [bend right=10]coordinate[pos=1.5](end) coordinate[pos=-0.5](begin)(h_1)--(end);
\draw (begin) -- (n_3) to [bend right=10] (h_1) -- (end);
\end{tikzpicture}
%
\end{document}

在此处输入图片描述

相关内容