在 tikzpicture 中,如何取得節點的單一座標?
這是我正在製作的電路,我需要知道節點 (opamp.out) 的 x 座標,以便我可以使 R2 與該節點垂直對齊,並將其與垂直線連接。這是我的 R2 程式碼:
\draw (opamp.-) 到 [short,*-] ++(0,1) 節點{} 到 [R,l=$R_2$] ++(2,0);
其中,我想輸入 ++(opamp.out.x-opamp.-.x,0); 而不是 ++(2,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'impressive”(我根本不會說法語,但由於我的母語是新拉丁語,所以我閱讀它絕對沒有問題)。