Macro de medição instável

Macro de medição instável

Criei uma macro \measurementque me permite adicionar medidas aos meus desenhos. Funciona bem, mas os rótulos às vezes são voláteis. No exemplo abaixo, os rótulos de medição são girados de forma diferente, embora os comandos sejam virtualmente idênticos. Presumo que deve haver uma maneira melhor de controlar a rotulagem. Alguém tem alguma ideia?

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}

\tikzset{myscale/.code={\edef\myscale{#1}\tikzset{scale=#1}}}
\def\myscale{1}

\newcommand{\measure}[4]{%
\pgfmathsetlengthmacro\mylength{8pt/\myscale}
\draw[very thin] #1 -- ($#1!\mylength!-90:#2$) coordinate (a) -- ($#1!\mylength+0.4*\mylength!-90:#2$);
\draw[very thin] #2 -- ($#2!\mylength!90:#1$) coordinate (b) -- ($#2!\mylength+0.4*\mylength!90:#1$);
\draw[very thin,<->,>=stealth] (a) -- (b) node[auto,sloped,#3] {#4};
}

\begin{document}

\begin{tikzpicture}[myscale=0.12]
\begin{scope}[rotate=20]

\draw[red] (0,0) -- (0,12);
\measure{(0,0)}{(0,12)}{midway,above,rotate=20,font=\small}{red}

\draw[blue] (0,12) -- (0,24);
\measure{(0,12)}{(0,24)}{midway,above,rotate=20,font=\small}{blue}

\end{scope}
\end{tikzpicture}

\end{document}

insira a descrição da imagem aqui

Responder1

Você tem uma linha vertical (exceto para arredondamento), que você gira 20 graus. Dependendo do arredondamento, a linha fica um pouco inclinada para a esquerda ou um pouco para a direita e o nó é naturalmente invertido.

Não tentei investigar o que você tenta fazer ou a melhor forma de fazê-lo - talvez outra questão.

Então a resposta é:Vertical torna instável.

Para ver o efeito, tente este código:

\documentclass[tikz, border=1cm]{standalone}
\tikzset{
nodetest/.pic={
\coordinate (c) at (1,10); %intermediate coordinate to create rounding
\draw (1,0) -- (c) node[auto, sloped, midway] {test};
}}
\begin{document}
\begin{tikzpicture}
\foreach \pos in {0.01,0.02,...,2} 
\pic[scale=\pos] at (10*\pos,0) {nodetest};
\end{tikzpicture}
\end{document}

Linhas dimensionadas de (0,0) a (1,10):

Triângulo de linhas com banda de nós

Linhas dimensionadas de (2,0) a (1,10):

Triângulo de linhas com banda de nós

Linhas dimensionadas de (1,0) a (1,10):

Triângulo de linhas com banda instável de nós

Vê-se que a faixa escura de nós no meio é instável para linhas verticais.

Editar:

Só posso adivinhar o que você quer. O seguinte mostra nós paralelos e abaixo da linha lida da primeira coordenada para a segunda. É estável em todas as escalas.

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\foreach \ang in {0,20,...,340}{
\coordinate (a) at (\ang:1);
\coordinate (b) at (\ang:4);
\draw[Stealth-Stealth] (a) --node[sloped, auto, swap, allow upside down=true]{red} (b);
}
\end{tikzpicture}
\end{document}

Círculo de setas duplas com rótulos

Responder2

Talvez isso ajude - comtkz-euclide

insira a descrição da imagem aqui

MWE

\documentclass{article}
\usepackage{tkz-euclide}
\begin{document}
    

\begin{tikzpicture}[scale=1.2]
    \tkzDefPoints{0/0/A,-4/4/B}
    \tkzDefPointWith[linear,K=0.5](A,B)
    \tkzGetPoint{C}

    \tkzDrawSegment[red, very thick](A,C)
    \tkzDrawSegment[blue,very thick](B,C)
    \tkzDrawPoints[color=black](A,B,C)
    \tkzLabelPoints[above right=3pt](A,B,C)
    \tkzDrawSegment[style=red, dashed, dim={$10$,15pt,midway,font=\scriptsize, rotate=45}](A,C) 
    \tkzDrawSegment[style=blue, dashed, dim={$10$,15pt,midway,font=\scriptsize, rotate=45}](C,B) 
\end{tikzpicture}
\end{document}

informação relacionada