pgf 箭头的视觉提示

pgf 箭头的视觉提示

在 TikZ & PGF 手册 3.0.1a 版的 PGF 部分中的“定义新箭头类型”一章中,视觉尖端箭头的定义为(第 1016 页)

前端的视觉后端对应部分。

视觉后端,则定义如下。(同上)

视觉后端是路径和箭头在路径上“最后相遇”的位置。

为了说明这些和其他概念,给出了下图。

箭尖。

就此图示而言,视觉后端位于 (-2,0),视觉尖端位于 (1,0)。

我理解视觉后端,但不是视觉尖端按照上面引用的定义(“视觉尖端是视觉后端的对应部分”),视觉尖端将是路径和箭头在路径上“首先相遇”的位置,但这将在 x 轴上 -3 和 -2 之间的某个位置,而不是 (1,0)。

如果有人能给出一个简单的定义,我将不胜感激视觉尖端,不参考定义视觉后端,并根据此定义解释为什么上图中的视觉尖端位于(1,0)。

答案1

该术语visual back end不一定指箭头上的任何几何点。它仅仅是范围提供给箭头设计师。

只有当我们考虑曲线路径时,定义visual back end除了的动机才是明确的back end

在这种情况下,箭头看起来很丑,因为它不在路径上。我们期望 TiZ 键稍微旋转箭头。例如:

这看起来好多了,因为位于visual back end实红线上。bending库将使用选项为您完成这项工作flex

也可以尝试

这看起来也不错,因为back end(绿点)位于实红线上。bending库将使用选项为您完成这项工作flex'


定义的动机visual tip end是相同的:当写入时-{Stealth[reversed]},库需要此反向箭头的坐标visual back end。在这种情况下,visual tip endStealth使用。

到目前为止,我只讲了一半的故事。知道箭头的visual tip end/back end位于原始路径上并不能决定箭头的位置。以下是 TiZ 的flex=1使用情况如下:

  • 移动箭头使得visual tip end与路径的端点重合;
  • 旋转箭头使其visual back end位于路径上。

因此,与我在答案开头所说的类似,visual tip end不一定代表任何几何点。箭头设计者选择将一个点指定为visual tip end,稍后将由 Ti 使用Z 定位箭头。


附录

上面的图是通过获取手册的源代码生成的。特别是pgfmanual-en-base-arrows.tex第 108-117 行。可以很容易地看到,代码分别绘制了路径和箭头。

\documentclass[border=9,tikz]{standalone}
\usetikzlibrary{arrows.meta,bending,calc}
\begin{document}

\begin{tikzpicture}
  \draw [red!50, ,line width=1cm] (0,0) -- (4,0);
  \path [tips, opacity=.25,line width=1cm, -{Stealth[black,line width=0pt,length=4cm, width=4cm, inset=1cm]}] (0,0) -- (6,0);

  \draw [->,thick] (1,0) -- (8,0) node [right] {$x$-axis};
  \draw [->,thick] (5,-2.25) -- (5,2.25) node [above] {$y$-axis};

  \foreach \i in {-3,-2,-1,1,2} \draw (\i+5,-1mm) -- (\i+5,1mm) node [above] {\small$\i$};
  \foreach \i in {-2,-1,1,2} \draw (49mm,\i) -- (51mm,\i) node [right] {\small$\i$};;
\end{tikzpicture}

\begin{tikzpicture}
  \draw [red!50, ,line width=1cm] (0,-4) to[bend left] (4,0);
  \draw [red] (0,-4) to[bend left] (4,0);
  \path [tips, opacity=.25,line width=1cm, -{Stealth[black,line width=0pt,length=4cm, width=4cm, inset=1cm]}] (0,0) -- (6,0);

  \draw [->,thick] (1,0) -- (8,0) node [right] {$x$-axis};
  \draw [->,thick] (5,-2.25) -- (5,2.25) node [above] {$y$-axis};

  \foreach \i in {-3,-2,-1,1,2} \draw (\i+5,-1mm) -- (\i+5,1mm) node [above] {\small$\i$};
  \foreach \i in {-2,-1,1,2} \draw (49mm,\i) -- (51mm,\i) node [right] {\small$\i$};;
\end{tikzpicture}

\begin{tikzpicture}
  \draw [red!50, ,line width=1cm] (0,-4) to[bend left] (4,0);
  \draw [red] (0,-4) to[bend left] (4,0);
  \path [tips, opacity=.25,line width=1cm, -{Stealth[black,line width=0pt,length=4cm, width=4cm, inset=1cm]}] (0,-.6) -- (6,0);

  \draw [->,thick] (1,0) -- (8,0) node [right] {$x$-axis};
  \draw [->,thick] (5,-2.25) -- (5,2.25) node [above] {$y$-axis};

  \foreach \i in {-3,-2,-1,1,2} \draw (\i+5,-1mm) -- (\i+5,1mm) node [above] {\small$\i$};
  \foreach \i in {-2,-1,1,2} \draw (49mm,\i) -- (51mm,\i) node [right] {\small$\i$};;
\end{tikzpicture}

\begin{tikzpicture}
  \draw [red!50, ,line width=1cm] (0,-4) to[bend left] (4,0);
  \draw [red] (0,-4) to[bend left] (4,0);
  \path [tips, opacity=.25,line width=1cm, -{Stealth[black,line width=0pt,length=4cm, width=4cm, inset=1cm]}] (0,-1.3) -- (6,0);
  \fill[green]($(6,0)!4cm!(0,-1.3)$)circle(.1);

  \draw [->,thick] (1,0) -- (8,0) node [right] {$x$-axis};
  \draw [->,thick] (5,-2.25) -- (5,2.25) node [above] {$y$-axis};

  \foreach \i in {-3,-2,-1,1,2} \draw (\i+5,-1mm) -- (\i+5,1mm) node [above] {\small$\i$};
  \foreach \i in {-2,-1,1,2} \draw (49mm,\i) -- (51mm,\i) node [right] {\small$\i$};;
\end{tikzpicture}


\begin{tikzpicture}
  \draw [red!50, ,line width=1cm] (0,0) -- (4,0);
  \path [tips, opacity=.25,line width=1cm, -{Stealth[black,line width=0pt,length=4cm, width=4cm, inset=1cm,reversed]}] (0,0) -- (6,0);

  \draw [->,thick] (1,0) -- (8,0) node [right] {$x$-axis};
  \draw [->,thick] (5,-2.25) -- (5,2.25) node [above] {$y$-axis};

  \foreach \i in {-3,-2,-1,1,2} \draw (\i+5,-1mm) -- (\i+5,1mm) node [above] {\small$\i$};
  \foreach \i in {-2,-1,1,2} \draw (49mm,\i) -- (51mm,\i) node [right] {\small$\i$};;
\end{tikzpicture}

\begin{tikzpicture}[opacity=.25,scale=5]
  \draw [red,line width=1cm,-{Stealth[black,line width=0pt,length=4cm, width=4cm,inset=1cm,flex=0]},preaction={draw,-}]
  (-1,-.5) .. controls (0,-.5) and (0,0) .. (1,0);
\end{tikzpicture}
\begin{tikzpicture}[opacity=.25,scale=5]
  \draw [red,line width=1cm,-{Stealth[black,line width=0pt,length=4cm, width=4cm,inset=1cm,flex=1]},preaction={draw,-}]
  (-1,-.5) .. controls (0,-.5) and (0,0) .. (1,0);
\end{tikzpicture}
\begin{tikzpicture}[opacity=.25,scale=5]
  \draw [red,line width=1cm,-{Stealth[black,line width=0pt,length=4cm, width=4cm,inset=1cm,flex'=1]},preaction={draw,-}]
  (-1,-.5) .. controls (0,-.5) and (0,0) .. (1,0);
\end{tikzpicture}

\end{document}

相关内容