替代方案:使用正交坐标

替代方案:使用正交坐标

在 tikzpicture 中,如何获取节点的单个坐标?

在此处输入图片描述

这是我正在制作的电路,我需要知道节点 (opamp.out) 的 x 坐标,以便我可以让 R2 与该节点垂直对齐,并用垂直线将其链接起来。这是我的 R2 代码:

\draw (opamp.-) 到 [short,*-] ++(0,1) node{} 到 [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”(我根本不会说法语,但由于我的母语是新拉丁语,所以我读起来完全没有问题)。

相关内容