Проблема рисования дуг, связанных с углами

Проблема рисования дуг, связанных с углами

Мне нужно нарисовать дуги для обозначения углов внутри равностороннего треугольника. Для этого я использую функцию arc в tikz с помощью пакета calc. Однако, если я использую автоматическое решение, которое вычисляет степени векторов разности между вершинами, я получаю нежелательный результат (черная дуга в следующем примере кода).

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

Если я отображаю значения начального и конечного углов, они отображаются в pt, которые преобразованы как +60° и -60°. Эти значения явно неверны. И наоборот, если я вручную устанавливаю правильные углы, то дуга получается правильной. Тем не менее, мне нужно пройти через «автоматическое» решение, потому что я не могу вручную вычислить начальный и конечный углы для более сложных фигур. Может ли кто-нибудь сказать мне, как исправить эту проблему? Кроме того, есть ли способ отображать начальный и конечный углы в градусах, а не в точках? Большое спасибо!

решение1

Может быть, вы просто этого хотите?

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

угол

Обратите внимание, что в качестве первого аргумента atan2принимается бит, а не , и что должен начинаться с , а не .yxarc(C1)(C)

решение2

Не уверен, почему вы решили применить такой огромный масштаб, вместо того, чтобы просто использовать более крупные измерения. Хотя это означает загрузку дополнительного пакета, вот пример с tkz-euclide.

Выход

введите описание изображения здесь

Код

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

Связанный контент