tikzpicture에서 노드의 단일 좌표를 어떻게 얻나요?
이것이 제가 만들고 있는 회로입니다. R2를 해당 노드와 수직으로 정렬하고 수직선과 연결할 수 있도록 노드(opamp.out)의 x 좌표를 알아야 합니다. 이것은 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>$)
.
프랑스어를 읽으신다면 "TikZ pour l'impatient"를 보거나 보세요. pgfmanual.pdf
(저는 프랑스어를 전혀 할 수 없지만 모국어가 네오라틴어이기 때문에 읽는 데 전혀 문제가 없었습니다.)