
Necesito dibujar arcos para indicar ángulos dentro de un triángulo equilátero. Para hacer esto, estoy usando la función arc en tikz con la ayuda del paquete calc. Sin embargo, si uso una solución automática que calcula los grados de los vectores de diferencia entre los vértices, obtengo un resultado no deseado (el arco negro en el siguiente código de ejemplo).
\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}
Si muestro los valores de los ángulos inicial y final, aparecen en pt y convertidos son como +60° y -60°. Estos valores están claramente equivocados. Viceversa, si configuro los ángulos correctos manualmente, entonces el arco está bien. Sin embargo, necesito pasar por la solución "automática" porque no puedo calcular manualmente los ángulos inicial y final para figuras más complejas. ¿Alguien puede decirme cómo solucionar este problema? Además, ¿hay alguna manera de mostrar los ángulos inicial y final en grados en lugar de puntos? ¡Muchas gracias!
Respuesta1
¿Quizás sólo quieres esto?
\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}
Tenga en cuenta que atan2
toma el y
bit como primer argumento, no el x
, y que el arc
debe comenzar desde (C1)
y no (C)
.
Respuesta2
No estoy seguro de por qué decidiste aplicar una escala tan grande, en lugar de simplemente usar medidas más grandes. Aunque esto significa cargar un paquete adicional, aquí hay un ejemplo con tkz-euclide
.
Producción
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}