TikZ: 경로 생성 중에 현재 좌표를 변수에 기억하는 방법

TikZ: 경로 생성 중에 현재 좌표를 변수에 기억하는 방법

CircuiTikZ를 사용하여 전기 회로를 만들고 있습니다.

이전에 상대 좌표를 사용하여 생성된 특정 지점에 연결해야 하는 경우가 많습니다.

지금은 이 좌표를 미리 계산해야 합니다. 대신 경로 생성 중에 "좌표 변수"를 생성하고 나중에 이 변수를 사용할 수 있기를 원합니다. 또 다른 방법은 양극 단자의 좌표를 추출하는 것입니다.

필요한 결과

여기에 이미지 설명을 입력하세요

솔루션 1(절대 좌표)

이 솔루션은 매우 취약한 코드로 이어지기 때문에 허용되지 않습니다.

\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(2,0) to [R=$R$] ++(2,0);
    \draw (0,0) -- (0,1) to [R=$R$] (4,1) -- (4,0);
\end{circuitikz}

솔루션 2(비밀한 수학 사용)

이것이 나의 현재 솔루션입니다. 분명히 MWE이기 때문에 여기서는 간단하고 별 문제가 아닌 것처럼 보이지만 내 계획에서는 상당히 복잡해집니다.

\newcommand{\mylength}{2}
\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(\mylength,0) to [R=$R$] ++(\mylength,0);
    \draw (0,0) -- (0,1) to [R=$R$] (\mylength*2,1) -- (\mylength*2,0);
\end{circuitikz}

선호하는 솔루션 1번(앵커)

불행하게도 앵커가 위에 있기 때문에 이것은 작동하지 않습니다.양극 자체, 터미널에는 없습니다. ( \currentcoordinate마르코가 찍은여기).

\makeatletter
\newcommand\currentcoordinate{\the\tikz@lastxsaved,\the\tikz@lastysaved}
\makeatother
\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(2,0) to [R=$R$, name=MyResistor] ++(2,0);
    \draw (0,0) -- (0,1) to [R=$R$] (MyResistor.east |- \currentcoordinate) -- (MyResistor.east);
\end{circuitikz}

선호 솔루션 2번 (변수에 좌표 기억하기)

이것은 완벽할 것입니다.

\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(2,0) to [R=$R$, name=MyResistor] ++(2,0) [\MyVariable=\currentcoordinate];
    \draw (0,0) -- (0,1) to [R=$R$] (\MyVariable |- \currentcoordinate) -- (\MyVariable);
\end{circuitikz}

답변1

명명된 좌표가 이미 TikZ에 존재합니다. 심지어 당신이 제안한 것보다 더 멋진 구문을 가지고 있습니다.

\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}
    \draw (0,0) to [R=$R$] ++(2,0) to [R=$R$, name=MyResistor] ++(2,0) coordinate (lr);
    \draw (0,0) -- (0,1) coordinate (ul) to [R=$R$] (lr |- ul) -- (lr);
\end{circuitikz}
\end{document}

여기에 이미지 설명을 입력하세요

단일 경로에 전체를 그릴 수도 있고 명명된 좌표를 전혀 사용하지 않을 수도 있습니다.

\documentclass{standalone}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz}
  \draw ( 0,0) to [R=$R$]
      ++( 2,0) to [R=$R$]
      ++( 2,0) to [short]
      ++( 0,1) to [R,l_=$R$]
      ++(-4,0) to[short]
        ( 0,0) -- cycle;
\end{circuitikz}
\end{document}

관련 정보