TikZ:使用 draw let 语法时的节点放置

TikZ:使用 draw let 语法时的节点放置

当使用该\draw let ... in语法在两条线之间构造圆弧时,即使圆弧的焦点不是原点,圆弧也会被放置在正确的位置。然而,节点放置情况并非如此。

例如,考虑以下代码:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \coordinate (F) at (2, 0);

  \draw (F) -- ++(30:1cm and 2cm) coordinate (A);
  \draw (F) -- ++(100:1cm) coordinate (P3);

  \draw let
      \p0 = (F),
      \p1 = (A),
      \p2 = (P3),
      \n1 = {atan2(\x1 - \x0, \y1 - \y0)},
      \n2 = {atan2(\x2 - \x0, \y2 - \y0)},
      \n3 = {1cm},
      \n4 = {(\n2 - \n1) / 2}
    in (F) +(\n1:\n3) arc[radius = \n3, start angle = \n1, end angle = \n2]
    node[scale = .75, fill = white, inner sep = 0cm] at
    (\n4:\n3) {\(\nu_A\)};
\end{tikzpicture}
\end{document}

得出的结果为:

在此处输入图片描述

如果我xshift = 2这个节点,我会得到:

在此处输入图片描述

我不明白为什么节点位置不沿着圆弧,因为我指定的位置(\n4:\n3)是圆弧角度的一半,半径相同。也就是说,它应该沿着与两条线等距的圆弧。

如果添加到节点选项pos = .5,节点仍然没有放置在预期的位置。

在此处输入图片描述

对于这种情况,正确的节点语法是什么\draw let .. in

答案1

不幸的是,正如已经讨论过的如何将节点放置在圆弧的中间?节点不能沿着arcs 放置。因此,只需使用 noat并添加pos=.5(或就此而言的任何其他位置)即可将节点放置在原点,TikZ 只是不知道更好的方法。

那么你的代码中有两个问题:首先,你将 定义\n4为 的一半\n2 - \n1,尽管角平分线是.5*(\n2+\n1)
然后,放置节点at (\n4:\n3),它是绝对坐标,与圆弧的中心没有任何关系(F)。我们可以at +(\n4:\n3)在这里使用,但相对坐标所在的最后一个坐标是 的末尾arc,但仍然不是(F)

我们需要在这里使用at ([shift=(F)] \n4:\n3)(F) +(\n4:\n3) node …(→TikZ:当我想从原点以外的点引用时,节点放置出现问题)。

正如已经评论的那样贡萨洛·梅迪纳他的评论最好使用font来改变节点文本的字体大小而不是选项scale

您也已经熟悉了该decorations.markings库,它在不同情况下可能会更有用。

代码

\documentclass[tikz,convert=false]{standalone}
\usetikzlibrary{calc,decorations.markings}
\begin{document}
\begin{tikzpicture}
  \coordinate (F) at (2, 0);

  \draw (F) -- ++(30:1cm and 2cm) coordinate (A);
  \draw (F) -- ++(100:1cm) coordinate (P3);

  \draw let
      \p0 = (F),
      \p1 = (A),
      \p2 = (P3),
      \n1 = {atan2(\x1 - \x0, \y1 - \y0)},
      \n2 = {atan2(\x2 - \x0, \y2 - \y0)},
      \n3 = {1cm},
      \n4 = {(\n2 + \n1) / 2}
    in (F) +(\n1:\n3) arc[radius = \n3, start angle = \n1, end angle = \n2]
    node[fill = white, inner sep = 0cm, font=\small] at ([shift=(F)] \n4:\n3) {\(\nu_A\)}
%    [decoration={name=markings,mark=at position .5 with {\node [inner sep=+0cm,font=\small,fill=white] {$\nu_A$};}},postaction=decorate]
   ;
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容