从提取的 x/y 部分创建命名坐标

从提取的 x/y 部分创建命名坐标

如果在绘制路径的命令中使用 let,我找不到有效识别点坐标的方法。我的例子:

  \draw[gray] let \p1=(D), \p2=(intersect), \p3=(C) in (\x1,\y2)
           -- +(-\x1,0) node[left, red]{$f(c)$} -- (\x1,\y2) node[above, red]{$F$}
           -- (\x3,\y2) node[right, red]{$E$};

现在我想为带有文本 $F$ 的节点创建命名坐标:

  \coordinate (F) at (\x1,\y2);

但出现错误。我该如何解决?谢谢。

答案1

您只需命名节点... (\x1,\y2) node[...] (F) {$F$},然后就可以通过访问该节点(F),因此您可以执行以下操作:

\draw (F) circle (5pt);

如果你确实需要 x 和 y 坐标,你可以使用以下解决方案提取 TikZ 中任意点的 x,y 坐标

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

% https://tex.stackexchange.com/questions/33703/extract-x-y-coordinate-of-an-arbitrary-point-in-tikz/33706#33706
\newdimen\XCoord
\newdimen\YCoord
\newcommand*{\ExtractCoordinate}[1]{\path (#1); \pgfgetlastxy{\XCoord}{\YCoord};}%


\begin{document}
\begin{tikzpicture}
\coordinate (C) at (0,0);
\coordinate (D) at (2,0);
\coordinate (intersect) at (1,1);

  \draw[gray] let \p1=(D), \p2=(intersect), \p3=(C) in (\x1,\y2)
           -- +(-\x1,0) node[left, red]{$f(c)$} -- (\x1,\y2) node[above, red] (F) {$F$}
           -- (\x3,\y2) node[right, red]  {$E$};

\draw (F) circle (5pt);% can just use the node name

\ExtractCoordinate{F}
node [below] (F) {$(\XCoord,\YCoord)$}
\end{tikzpicture}
\end{document}

答案2

您可以使用正交交叉点来避免let操作,因此calc使用此类应用程序的库。

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

\coordinate (C) at (2cm,2cm);
\coordinate (D) at (-2cm,-3cm);
\coordinate (intersect) at (1cm,1cm);

\draw[thick,gray] (D |- intersect) coordinate (F) -- 
+([scale=-1]D|-{{(0,0)}}) node[left, red]{$f(c)$} -- 
(F) node[above, red] {$F$}--
(C|-intersect) node[right, red]  {$E$};

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

感谢@Jake,我的问题很容易解决:

  \draw[gray] let \p1=(D), \p2=(intersect), \p3=(C) in (\x1,\y2)
              -- +(-\x1,0) node[left, red]{$f(c)$} 
              -- (\x1,\y2) node[above, red]{$F$} coordinate (F) at (\x1,\y2) 
              -- (\x3,\y2) node[right, red]{$E$}; 

相关内容