我知道,默认情况下,Tikz 使用 30 度的“弯曲角度”。从数学角度来看,Tikz 在弯曲节点之间的边缘时使用哪种类型的曲线?
答案1
弯曲边缘是使用“曲线到”操作构建的,因此正如手册所述,它们是三次贝塞尔曲线。
它内部计算相对角度,然后添加弯曲角度量,并定义支撑点(由looseness
键定义),并将以下控制序列放置在路径流中,由
\edef\tikz@computed@path{%
.. controls \tikz@computed@start and \tikz@computed@end .. (\tikz@toto)%
}
您可以使用和变体来控制角度。如需更精细的控制,bend left=<angle>
您可以在手册中查找选项looseness
、、和。in
out
in looseness
out 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}