在教授三角学时,有时用某种“螺旋弧”来表示大于 360º 的角度很有用。例如:
图中的-440º角度。
我的问题是:
我怎样才能在 TikZ 中很好地做到这一点?
我可以通过使用几个连续的来做到这一点arcs
,但我想知道是否有更优雅的解决方案。
答案1
\documentclass[11pt]{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\newcommand\bigangle[2][]{%
\draw[->,domain=0:#2,variable=\t,samples=200,>=latex,#1]
plot ({(\t+#2)*cos(\t)/(#2)},
{(\t+#2)*sin(\t)/(#2)}) node[right=.5cm] {$#2^\circ$}
;}
\begin{tikzpicture}
\draw [thick] ( 0,0) -- (3,0);
\draw [thick] ( 0,0) -- (0,3);
\draw [red,thick] ( 0,0) -- (400:3);
\bigangle[blue,dashed]{400}
\end{tikzpicture}
\end{document}
答案2
杰克的方法可能更简单,但在这里我调整了螺旋的标准参数方程,并添加了偏移量,以便螺旋不会从原点开始,从而得到:
笔记:
- 分母中的
440
是为了使图形标准化,以便弧在 ay=1 处结束。 - 极坐标方程应该能得到与更简单方程相似的结果。
- 棕色线有问题(尽管它处于正确的位置),因为它没有在我认为应该结束的地方结束,但这与产生螺旋无关。
代码:
\documentclass{article}
\usepackage{pgfplots}
\newcommand*{\Offset}{360}%
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=-2.5,xmax=2.5,ymin=-2.5,ymax=2.5, axis lines=center]
\addplot[blue,densely dashed,domain=0:440,samples=200,-latex]
({(x+\Offset)*cos(x+\Offset)/(440+\Offset)},
{(x+\Offset)*sin(x+\Offset)/(440+\Offset)});
% Show the 440 degree angle
\pgfmathsetmacro{\XValue}{1.0}%
\pgfmathsetmacro{\YValue}{\XValue*tan(440)}%
\draw [brown, thick] (axis cs: 0,0) -- (axis cs: \XValue,\YValue);
\end{axis}
\end{tikzpicture}
\end{document}