角度に関連した円弧を描く問題

角度に関連した円弧を描く問題

正三角形内の角度を表すために円弧を描く必要があります。これを行うには、calc パッケージの助けを借りて tikz の arc 関数を使用します。ただし、頂点間の差ベクトルの度数を計算する自動ソリューションを使用すると、望ましくない結果 (次のサンプル コードの黒い円弧) が発生します。

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

関連情報