Uma alternativa: uso de coordenadas ortogonais

Uma alternativa: uso de coordenadas ortogonais

No tikzpicture, como obtenho uma única coordenada de um nó?

insira a descrição da imagem aqui

Este é o circuito que estou fazendo, e preciso saber a coordenada x do nó (opamp.out) para poder alinhar R2 verticalmente com esse nó e vinculá-lo a uma linha vertical. Este é o meu código para R2:

\draw (opamp.-) para [short,*-] ++(0,1) nó{} para [R,l=$R_2$] ++(2,0);

onde, em vez de ++(2,0), eu gostaria de inserir ++(opamp.out.x-opamp.-.x,0);

Responder1

Uma alternativa: uso de coordenadas ortogonais

(p -| q)refere-se ao ponto alinhado horizontalmente pe alinhado verticalmente com q. O -|foi escolhido de forma que seja fácil lembrar qual é qual; o -lado é horizontal e o |lado é vertical. OManual do CircuiTikztem mais informações.

Exemplos completos:

Diagrama resultante

Código:

\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}

Responder2

\draw let \p1=(opamp.out),\p2=(opamp.-) in (opamp.-) to [short,*-] ++(0,1) node{} to [R,l=$R_2$] ++($(\x1,0)-(\x2,0)$);

Observe que você precisa \usetikzlibrary{calc}.

A letsintaxe permite alias os pontos com nomes \p1 ... \pN, onde Nestá o número de pontos. Depois, invocê poderia acessar as coordenadas dos pontos com a sintaxe \x1 .. \xNe \y1 .. \yN(acho que é possível acessar também as coordenadas polares, mas sinceramente não me lembro da sintaxe: -8), combinando a ordem das \patribuições.

A biblioteca calcpermite fazer cálculos com coordenadas e obter as coordenadas resultantes, com a sintaxe ($<calculations>$).

Veja pgfmanual.pdfou em "TikZ pour l'impaciente" se você lê francês (não sei falar francês, mas como minha língua materna é o neolatino, não tive absolutamente nenhum problema em lê-lo).

informação relacionada