
Preciso desenhar arcos para denotar ângulos dentro de um triângulo equilátero. Para fazer isso, estou usando a função arc no tikz com a ajuda do pacote calc. No entanto, se eu usar uma solução automática que calcula os graus dos vetores de diferença entre os vértices, obtenho um resultado indesejado (o arco preto no código de exemplo a seguir).
\begin{tikzpicture}[scale=8]
\coordinate (center) at (0, 0);
\coordinate (A) at (-0.5, 0);
\coordinate (B) at (0.5, 0);
\coordinate (C) at (0, {sqrt(3)/2});
\draw (A) -- (B) -- (C) -- cycle;
\coordinate (C1) at ($(C)!0.1!(A)$);
\coordinate (C2) at ($(C)!0.1!(B)$);
\draw
let \p1 = ($(C1) - (C)$),
\p2 = ($(C2) - (C)$),
\n0 = {veclen(\x1,\y1)},
\n1 = {atan2(\x1, \y1)},
\n2 = {atan2(\x2, \y2)}
in (C) arc(\n1:\n2:\n0);
\path
let \p1 = ($(C1) - (C)$),
\p2 = ($(C2) - (C)$),
\n0 = {veclen(\x1, \y1)},
\n1 = {atan2(\x1, \y1)},
\n2 = {atan2(\x2, \y2)}
in node at (C) {$\n1,\, \n2$};
\draw[red] (C1) arc(240:300:0.1);
\end{tikzpicture}
Se eu exibir os valores dos ângulos inicial e final, eles aparecerão em pt que convertidos são como +60° e -60°. Esses valores estão claramente errados. Vice-versa, se eu definir os ângulos corretos manualmente, o arco estará correto. No entanto, preciso passar pela solução "automática" porque não consigo calcular manualmente os ângulos inicial e final para figuras mais complexas. Alguém pode me dizer como resolver esse problema? Além disso, existe uma maneira de exibir os ângulos inicial e final em graus e não em pontos? Muito obrigado!
Responder1
Talvez você só queira isso?
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=8]
\draw (-0.5,0) coordinate (A) -- (0.5,0) coordinate (B) -- (0,{sqrt(3)/2}) coordinate (C) -- cycle ($(C)!0.1!(A)$) coordinate (C1) ($(C)!0.1!(B)$) coordinate (C2);
\draw
let \p1 = ($(C1) - (C)$),
\p2 = ($(C2) - (C)$),
\n0 = {veclen(\x1,\y1)},
\n1 = {atan2(\y1,\x1)},
\n2 = {atan2(\y2,\x2)}
in (C1) arc(\n1:\n2:\n0);
\end{tikzpicture}
\end{document}
Observe que atan2
o y
bit é considerado o primeiro argumento - não o x
- e que o arc
deve começar com (C1)
e não (C)
.
Responder2
Não sei por que você decidiu aplicar uma escala tão grande, em vez de usar apenas medidas maiores. Embora isso signifique carregar um pacote extra, aqui está um exemplo com tkz-euclide
.
Saída
Código
\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{tikzpicture}
\tkzDefPoint(-4,0){A}
\tkzDefPoint(4,0){B}
\tkzDefTriangle[equilateral](A,B)
\tkzGetPoint{C}
\tkzDrawPolygon(A,B,C)
\tkzMarkAngle[size=1cm](A,C,B)
\end{tikzpicture}
\end{document}