Как получить одну координату узла в tikzpicture?
Это схема, которую я создаю, и мне нужно знать координату x узла (opamp.out), чтобы я мог выровнять R2 по вертикали с этим узлом и связать его вертикальной линией. Вот мой код для R2:
\draw (opamp.-) в [short,*-] ++(0,1) узел{} в [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», если вы читаете по-французски (я вообще не говорю по-французски, но поскольку мой родной язык — неолатынь, у меня не возникло никаких проблем с чтением).