在 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
在这种情况下,箭头看起来很丑,因为它不在路径上。我们期望 Ti钾Z 键稍微旋转箭头。例如:
这看起来好多了,因为位于visual back end
实红线上。bending
库将使用选项为您完成这项工作flex
。
也可以尝试
这看起来也不错,因为back end
(绿点)位于实红线上。bending
库将使用选项为您完成这项工作flex'
。
定义的动机visual tip end
是相同的:当写入时-{Stealth[reversed]}
,库需要此反向箭头的坐标visual back end
。在这种情况下,visual tip end
将Stealth
使用。
到目前为止,我只讲了一半的故事。知道箭头的visual tip end
/back end
位于原始路径上并不能决定箭头的位置。以下是 Ti钾Z 的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}