
Não entendo como isso é interpretado por um ângulo especificado ao usar coordenadas polares. Preparei três exemplos em meu MWE:
\documentclass{article}
\usepackage{tikz} % TikZ and PGF picture
\usetikzlibrary{intersections}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\usetikzlibrary{matrix,arrows,decorations.pathmorphing}
\usetikzlibrary{positioning}
\newdimen\XCoord
\newdimen\YCoord
\newcommand*{\ExtractCoordinate}[1]{\path (#1); \pgfgetlastxy{\XCoord}{\YCoord};}%
\begin{document}
\begin{figure}[htp]
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (0,1);
\coordinate (C) at (1,1);
\node[left, color=blue] at (A) {A};
\node[left, color=blue] at (B) {B};
\node[right, color=blue] at (C) {C};
\draw (A) -- (B) -- (C);
\draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
\n1={atan2(\y2-\y1,\x3-\x1)} in
(A) -- (\n1:2cm);
\ExtractCoordinate{B};
\node [below] at (1cm,-2cm) {B $(\XCoord,\YCoord)$};
\ExtractCoordinate{C};
\node [below] at (1cm,-2.5cm) {C $(\XCoord,\YCoord)$};
\end{tikzpicture}
\begin{tikzpicture}
\coordinate (A) at (-90.58205pt, 119.0348pt);
\coordinate (B) at (-90.58205pt, 133.26117pt);
\coordinate (C) at (-40.43698pt, 119.0348pt);
\node[left, color=blue] at (A) {A};
\node[left, color=blue] at (B) {B};
\node[right, color=blue] at (C) {C};
\draw (B) -- (A) -- (C);
\draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
\n1={atan2(abs(\y2-\y1), abs(\x3-\x1))} in
(B) -- (74.161134732:2cm);
\draw[right, color=green] (B) -- (0:2cm);
\draw[right, color=red] (B) -- (45:2cm);
\ExtractCoordinate{B};
\node [below] at (1cm,-2cm) {B $(\XCoord,\YCoord)$};
\ExtractCoordinate{C};
\node [below] at (1cm,-2.5cm) {C $(\XCoord,\YCoord)$};
\end{tikzpicture}
\begin{tikzpicture}
\coordinate (A) at (2, 2);
\draw[right, color=green] (A) -- (0:2cm);
\draw[right, color=red] (A) -- (45:2cm);
\draw[right, color=blue] (A) -- (90:2cm);
\draw[right, color=black] (A) -- (74.161134732:2cm);
\end{tikzpicture}
\end{figure}
\end{document}
- primeiro exemplo: tudo funciona bem.
- segundo exemplo: problema:
No seguinte comando:
\draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C), \n1={atan2(abs(\y2-\y1), abs(\x3-\x1))} in (B) -- (74.161134732:2cm);
Tentei calcular o ângulo e juntei B a C. Infelizmente, sem sucesso. Achei que a função atan2 funcionava errado, então substituí o valor na variável \n1 pelo ângulo calculado manualmente, mas novamente não conectei os dois pontos.
Cheguei à conclusão de que não consigo usar corretamente as coordenadas polares, então tentei testar tudo no terceiro exemplo. Eu esperava que a linha verde fosse horizontal, mas em vez disso, a linha é vertical.
Para ilustração, anexo uma foto:
Você pode explicar onde estou errado?
Responder1
Existem dois erros no seu código. O primeiro é matemático: os argumentos para the atan2
são osxe então osim(Eu sei que isso varia de programa para programa, então é algo que você deve sempre verificar ao usar atan2
funções); além disso, para obter o ângulo correto, você não deve tomar os valores absolutos, pois isso altera pelo menos o quadrante. Portanto, a sintaxe correta para o atan2
seu segundo exemplo seria:
\draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
\n1={atan2(\x3-\x1, \y2-\y1)} in
(B) -- (\n:2cm);
A razão pela qual isso não aparece no seu primeiro exemplo é porque ambas as expressões de coordenadas são avaliadas e 1
a ordem não importa e a obtenção de valores absolutos não faz nada.
No entanto, o que foi dito acima ainda não está certo e este é o segundo erro. Você está desenhando uma linha de (B)
até (\n:2cm)
. A segunda posição é especificada emabsolutocoordenadas e também um ponto em \n
graus e2cm
desde a origem. Você quer que seja de (B)
. Para reorientar o sistema de coordenadas, você deve usarrelativocoordenadas. Assim (B) -- ++(\n:2cm)
você consegue o que deseja.
Novamente, isso não aparece no primeiro exemplo porque seu ponto de interesse, (A)
nesse caso, está localizado na origem, então as coordenadas relativas e absolutas dão a mesma resposta.
Este é o mesmo erro no seu terceiro exemplo. A coordenada (0:2cm)
torna-se (2,0)
verticalmente abaixo de (A)
(localizada em (2,2)
). Para obter uma linha horizontal você precisa torná-la relativa: ++(0:2cm)
.
Código completo:
\documentclass{article}
\usepackage{tikz} % TikZ and PGF picture
\usetikzlibrary{intersections}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\usetikzlibrary{matrix,arrows,decorations.pathmorphing}
\usetikzlibrary{positioning}
\newdimen\XCoord
\newdimen\YCoord
\newcommand*{\ExtractCoordinate}[1]{\path (#1);
\pgfgetlastxy{\XCoord}{\YCoord};}%
\begin{document}
\begin{figure}[htp]
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (0,1);
\coordinate (C) at (1,1);
\node[left, color=blue] at (A) {A};
\node[left, color=blue] at (B) {B};
\node[right, color=blue] at (C) {C};
\draw (A) -- (B) -- (C);
\draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
\n1={atan2(\y2-\y1,\x3-\x1)} in
(A) -- (\n1:2cm);
\ExtractCoordinate{B};
\node [below] at (1cm,-2cm) {B $(\XCoord,\YCoord)$};
\ExtractCoordinate{C};
\node [below] at (1cm,-2.5cm) {C $(\XCoord,\YCoord)$};
\end{tikzpicture}
\begin{tikzpicture}
\coordinate (A) at (-90.58205pt, 119.0348pt);
\coordinate (B) at (-90.58205pt, 133.26117pt);
\coordinate (C) at (0pt, 119.0348pt);
\node[left, color=blue] at (A) {A};
\node[left, color=blue] at (B) {B};
\node[right, color=blue] at (C) {C};
\draw (B) -- (A) -- (C);
\draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
\n1={atan2(\x3-\x1,\y1-\y2)} in
(B) -- ++(\n1:4cm);
\draw[right, color=green] (B) -- ++(0:2cm);
\draw[right, color=red] (B) -- ++(45:2cm);
\ExtractCoordinate{B};
\node [below] at (1cm,-2cm) {B $(\XCoord,\YCoord)$};
\ExtractCoordinate{C};
\node [below] at (1cm,-2.5cm) {C $(\XCoord,\YCoord)$};
\end{tikzpicture}
\begin{tikzpicture}
\coordinate (A) at (2, 2);
\draw[right, color=green] (A) -- ++(0:2cm);
\draw[right, color=red] (A) -- ++(45:2cm);
\draw[right, color=blue] (A) -- ++(90:2cm);
\draw[right, color=black] (A) -- ++(74.161134732:2cm);
\end{tikzpicture}
\end{figure}
\end{document}
Resultado: