En tikzpicture, ¿cómo obtengo una coordenada única de un nodo?
Este es el circuito que estoy haciendo y necesito saber la coordenada x del nodo (opamp.out) para poder alinear R2 verticalmente con ese nodo y vincularlo con una línea vertical. Este es mi código para R2:
\draw (opamp.-) a [short,*-] ++(0,1) nodo{} a [R,l=$R_2$] ++(2,0);
donde, en lugar de ++(2,0), me gustaría ingresar ++(opamp.out.x-opamp.-.x,0);
Respuesta1
Una alternativa: uso de coordenadas ortogonales.
(p -| q)
se refiere al punto alineado horizontalmente p
y alineado verticalmente con q
. Fue -|
elegido de tal manera que sea fácil recordar cuál es cuál; el -
lado es horizontal y el |
lado es vertical. Elmanual de circuito tikztiene más información.
Ejemplos 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}
Respuesta2
\draw let \p1=(opamp.out),\p2=(opamp.-) in (opamp.-) to [short,*-] ++(0,1) node{} to [R,l=$R_2$] ++($(\x1,0)-(\x2,0)$);
Tenga en cuenta que debe hacerlo \usetikzlibrary{calc}
.
La let
sintaxis le permite asignar alias a los puntos con nombres \p1 ... \pN
, donde N
está el número de puntos. Luego, después de in
, podrías acceder a las coordenadas de los puntos con la sintaxis \x1 .. \xN
y \y1 .. \yN
(creo que también es posible acceder a las coordenadas polares pero, sinceramente, no recuerdo la sintaxis: -8), coincidiendo con el orden de \p
las asignaciones.
La biblioteca calc
te permite realizar cálculos con coordenadas y obtener las coordenadas resultantes, con la sintaxis ($<calculations>$)
.
Mira pgfmanual.pdf
o mira "TikZ pour l'impatient" si lees francés (no puedo hablar francés en absoluto, pero como mi lengua materna es el neolatino, no tuve ningún problema para leerlo).