当我“弯曲”边缘时,Tikz 使用哪种类型的曲线?

当我“弯曲”边缘时,Tikz 使用哪种类型的曲线?

我知道,默认情况下,Tikz 使用 30 度的“弯曲角度”。从数学角度来看,Tikz 在弯曲节点之间的边缘时使用哪种类型的曲线?

答案1

弯曲边缘是使用“曲线到”操作构建的,因此正如手册所述,它们是三次贝塞尔曲线。

它内部计算相对角度,然后添加弯曲角度量,并定义支撑点(由looseness键定义),并将以下控制序列放置在路径流中,由

\edef\tikz@computed@path{%
    .. controls \tikz@computed@start and \tikz@computed@end .. (\tikz@toto)%
}

您可以使用和变体来控制角度。如需更精细的控制,bend left=<angle>您可以在手册中查找选项looseness、、和。inoutin loosenessout looseness

要显示控制点,您可以使用以下代码:

\documentclass[tikz]{standalone}
\usetikzlibrary{calc,decorations.pathreplacing,shapes.misc}
\tikzset{
    show control points/.style={
        decoration={show path construction, curveto code={
                \draw [blue, dashed]
                    (\tikzinputsegmentfirst) -- (\tikzinputsegmentsupporta)
                    node [at end, cross out, draw, solid, red, inner sep=2pt]{};
                \draw [blue, dashed]
                    (\tikzinputsegmentsupportb) -- (\tikzinputsegmentlast)
                    node [at start, cross out, draw, solid, red, inner sep=2pt]{};
            }
        },
        postaction=decorate
    },
}
\begin{document}
  \begin{tikzpicture}
  \node(A){A} ++(2,0) node (B){B};
  \draw (A) edge[bend left, show control points] (B)
            edge[bend left=80, show control points] (B)
            edge[looseness=.7,bend right, show control points] (B)
            edge[looseness=.3,bend right, show control points] (B);
  \end{tikzpicture}
\end{document}

控制点

相关内容