TikZ: como memorizar a coordenada atual em uma variável durante a criação do caminho

TikZ: como memorizar a coordenada atual em uma variável durante a criação do caminho

Estou criando circuitos elétricos usando CircuiTikZ.

Muitas vezes preciso me conectar a um determinado ponto, que foi criado anteriormente usando coordenadas relativas.

Agora tenho que calcular essas coordenadas com antecedência. Em vez disso, quero poder criar uma "variável de coordenadas" durante a criação do caminho e usar essa variável posteriormente. Outra forma seria extrair as coordenadas de um terminal bipolar.

Resultado necessário

insira a descrição da imagem aqui

Solução 1 (coordenadas absolutas)

Esta solução é inaceitável porque conduz a um código muito frágil.

\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}

Solução 2 (usando matemática misteriosa)

Esta é a minha solução atual. Obviamente parece simples e não é grande coisa aqui porque é um MWE, mas nos meus esquemas fica bem complicado.

\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}

Solução preferida nº 1 (âncoras)

Infelizmente isso não funciona, porque a âncora está nopróprio bipolar, e não no terminal. ( \currentcoordinatemarco retirado deaqui).

\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}

Solução preferida №2 (memorizar coordenadas em uma variável)

Isso seria perfeito.

\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}

Responder1

Coordenadas nomeadas já existem no TikZ. Eles ainda têm uma sintaxe melhor do que a que você propõe.

\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}

insira a descrição da imagem aqui

Você também pode desenhar tudo em um único caminho e não usar coordenadas nomeadas.

\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}

informação relacionada