在两条线之间画一条线,使每条线平滑地插入

在两条线之间画一条线,使每条线平滑地插入

给定两条线,我想以某种方式连接它们,使得连接线平滑。例如,考虑下图:

\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{arrows}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\coordinate (v1) at (0,0);
\coordinate (v2) at (2,0);
\coordinate (v3) at (4,2);
\coordinate (v4) at (4,4);
\draw[fill, black] (v1) circle[radius=1pt];
\draw[fill, black] (v2) circle[radius=1pt];
\draw[fill, black] (v3) circle[radius=1pt];
\draw[fill, black] (v4) circle[radius=1pt];
\draw (v1)--(v2);
\draw (v3)--(v4);
\draw (2,2) circle(2);
\end{tikzpicture}
\end{document}

我实际上只对连接两条线的四分之一圆感兴趣。但我遇到了麻烦

  1. 移除圆圈的另外 75%,更重要的是
  2. 如何计算非垂直线的这种线。

我尝试使用\draw[bend left],但并不总是能实现顺畅的连接。有人知道更好的方法吗?

答案1

这正是controls命令所做的:顺利加入贝塞尔曲线,无论这些线段是否垂直。此外,您还可以更改标量因子.5.81.5等来控制射击力量。

(A).. controls +(P) and +(Q) .. (B)

相当于

(A).. controls (A)+(P) and (B)+(Q) .. (B)

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\path 
(0,0) coordinate (v1) node[below]{$v_1$}
(1,2) coordinate (v2) node[left]{$v_2$}
(4,2) coordinate (v3) node[right]{$v_3$}
(3,4) coordinate (v4) node[above]{$v_4$}
;
\draw (v1)--(v2) (v3)--(v4);

\draw[red] (v2).. controls +($.5*(v2)-.5*(v1)$) and +($.8*(v3)-.8*(v4)$) .. (v3);  

\foreach \p in {v1,v2,v3,v4}
\fill (\p) circle(2pt);
\end{tikzpicture}
\begin{tikzpicture}
\path 
(0,0) coordinate (v1) node[below]{$v_1$}
(2,0) coordinate (v2) node[below]{$v_2$}
(4,2) coordinate (v3) node[right]{$v_3$}
(4,4) coordinate (v4) node[above]{$v_4$}
;
\draw (v1)--(v2) (v3)--(v4);
    
\draw[blue] (v2).. controls +($.5*(v2)-.5*(v1)$) and +($.8*(v3)-.8*(v4)$) .. (v3);  
    
\foreach \p in {v1,v2,v3,v4}
\fill (\p) circle(2pt);
\end{tikzpicture}
\end{document}

答案2

out您可以使用和键in。 取一个参数(一个角度)并且工作原理基本类似bend left,但您可以选择两端效果最佳的角度。

\documentclass[11pt,a4paper]{amsart}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{arrows}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\coordinate (v1) at (0,0);
\coordinate (v2) at (2,0);
\coordinate (v3) at (4,2);
\coordinate (v4) at (4,4);
\draw[fill, black] (v1) circle[radius=1pt];
\draw[fill, black] (v2) circle[radius=1pt];
\draw[fill, black] (v3) circle[radius=1pt];
\draw[fill, black] (v4) circle[radius=1pt];
\draw (v1)--(v2);
\draw (v3)--(v4);
\draw (2,0) to [out=0, in=270] (4,2);
\end{tikzpicture}
\end{document}

在这个特殊情况下,正如您所指出的,您也可以只插入圆弧。例如,如果将 TikZ 图片的最后一行替换为

\draw (2,0) arc [start angle=-90, end angle=0, radius=2];

相关内容