Альтернатива: использование ортогональных координат

Альтернатива: использование ортогональных координат

Как получить одну координату узла в 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», если вы читаете по-французски (я вообще не говорю по-французски, но поскольку мой родной язык — неолатынь, у меня не возникло никаких проблем с чтением).

Связанный контент