tikz到[out =,in =]`曲线后面的公式

问题描述 投票:6回答:1

Tikz manual的14.13节中,它们定义了像\draw $node1 to [out=90, in=180] $node2一样的参数曲线函数。 PDF中的示例类似于enter image description here

我的问题是:这条曲线后面是什么样的数学公式?

[我的第一个猜测是,它绘制了一个三点Bezier曲线,其控制点是out=in=参数定义的两条线的交叉点,但它看起来是错误的。

tex tikz
1个回答
3
投票

人们总是可以要求Ti k Z向我们展示他们的工作方式。一种工具是show path construction装饰,请参阅第40页。 pgfmanual v3.1.5的645]

enter image description here

我复制了curveto部分,并根据问题进行了调整。

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{decorations.pathreplacing}
\tikzset{how does TikZ do that/.style={postaction=decorate,
decoration={show path construction, 
moveto code={},
lineto code={},
curveto code={
\draw [green!75!black,->] (\tikzinputsegmentfirst) .. controls
(\tikzinputsegmentsupporta) and (\tikzinputsegmentsupportb) ..(\tikzinputsegmentlast);
\draw[red,dashed] (\tikzinputsegmentfirst) node[dot,label=above left:start]{}
 -- (\tikzinputsegmentsupporta)  node[dot,label=above left:first control]{};
\draw[red,dashed] (\tikzinputsegmentlast) node[dot,label=above right:target]{}
 -- (\tikzinputsegmentsupportb)  node[dot,label=above:second control]{};
},
closepath code={},
}},dot/.style={circle,inner sep=1.5pt,fill}}
\begin{document}
\begin{tikzpicture}
\draw[how does TikZ do that] (0,0) to[out=90,in=180] (3,2);
\end{tikzpicture}
\end{document}

enter image description here

因此,我们看到这只是三次贝塞尔曲线,其中根据斜率选择了控制点。您可以通过更改松散度来更改虚线的长度,即控制点到起点和目标的距离。尝试例如

\draw[how does TikZ do that] (0,0) to[out=90,in=180,looseness=1.5] (3,2); 

enter image description here

一个人可以分别更改in loosenessout looseness。它们控制各个虚线的长度。

技术细节,即基础代码,可以在tikzlibrarytopaths.code.tex中找到,该文件会自动加载。

通常,如show path construction装饰所建议的,单个路径是以下之一:

  1. 移至,
  2. 行到,
  3. 弯曲到,
  4. 关闭路径。

curve to路径是三次贝塞尔曲线或二次贝塞尔曲线,其中二次可以看作三次三次的特例。三次贝塞尔曲线的可能参数化可以在第(4)页的“ [46.2计算边界框]”部分的方程式(1)中找到。 pgfmanual v3.1.5的581。enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.