我需要绘制圆弧来表示等边三角形内的角度。为此,我在 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
将位y
作为其第一个参数 - 而不是x
- 并且应该从而不是arc
开始。(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}