No tikzpicture, como obtenho uma única coordenada de um nó?
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 p
e 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:
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 let
sintaxe permite alias os pontos com nomes \p1 ... \pN
, onde N
está o número de pontos. Depois, in
você poderia acessar as coordenadas dos pontos com a sintaxe \x1 .. \xN
e \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 \p
atribuições.
A biblioteca calc
permite fazer cálculos com coordenadas e obter as coordenadas resultantes, com a sintaxe ($<calculations>$)
.
Veja pgfmanual.pdf
ou 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).