在 tikzpicture 中,如何获取节点的单个坐标?
这是我正在制作的电路,我需要知道节点 (opamp.out) 的 x 坐标,以便我可以让 R2 与该节点垂直对齐,并用垂直线将其链接起来。这是我的 R2 代码:
\draw (opamp.-) 到 [short,*-] ++(0,1) node{} 到 [R,l=$R_2$] ++(2,0);
其中,我不想输入 ++(2,0),而是输入 ++(opamp.out.x-opamp.-.x,0);
答案1
替代方案:使用正交坐标
(p -| q)
指与 水平对齐的点p
和与 垂直对齐的点q
。 的-|
选择方式很容易记住哪个是哪个;-
边是水平的,边|
是垂直的。CircuiTikz 手册有更多信息。
完整示例:
代码:
\documentclass[border=10pt,varwidth]{standalone}
\usepackage{tikz}
\usepackage[american,siunitx]{circuitikz}
\usetikzlibrary{calc,positioning}
\begin{document}
An alternative solution
\begin{circuitikz}
\draw
(0,0) node[op amp](opamp){}
(opamp.out) to[short,*-o] (2,0)node[]{} node[right]{$v_{out}$};
\draw (opamp.-) -- ++(-0.2,0) to[R,l_=$R_1$] ++ (-2,0)node[ground,rotate=-90]{};
\draw (opamp.+) to[short,-o] ++ (-0.5,0)node[left]{$V_{in}$};
\draw (opamp.-) to [short,*-] ++(0,1) node{} to [R,l=$R_2$] ([yshift=1cm]opamp.- -|opamp.out);
\end{circuitikz}
\medskip
@Astrinus' solution
\begin{circuitikz}
\draw
(0,0) node[op amp](opamp){}
(opamp.out) to[short,*-o] (2,0)node[]{} node[right]{$v_{out}$};
\draw (opamp.-) -- ++(-0.2,0) to[R,l_=$R_1$] ++ (-2,0)node[ground,rotate=-90]{};
\draw (opamp.+) to[short,-o] ++ (-0.5,0)node[left]{$V_{in}$};
\draw let \p1=(opamp.out),\p2=(opamp.-) in (opamp.-) to [short,*-] ++(0,1)
node{} to [R,l=$R_2$] ++($(\x1,0)-(\x2,0)$);
\end{circuitikz}
\end{document}
答案2
\draw let \p1=(opamp.out),\p2=(opamp.-) in (opamp.-) to [short,*-] ++(0,1) node{} to [R,l=$R_2$] ++($(\x1,0)-(\x2,0)$);
请留意,你必须\usetikzlibrary{calc}
。
该let
语法允许您使用名称为点添加别名\p1 ... \pN
,其中N
是点数。然后,之后in
,您可以使用语法和访问点的坐标\x1 .. \xN
(\y1 .. \yN
我认为也可以访问极坐标,但老实说我不记得语法了 :-8),匹配分配的顺序\p
。
该库calc
允许您使用坐标进行计算并使用语法获取结果坐标($<calculations>$)
。
如果您读法语,请看pgfmanual.pdf
一下“TikZ pour l'impatient”(我根本不会说法语,但由于我的母语是新拉丁语,所以我读起来完全没有问题)。