如何指定角度的精度并使用角度的绝对值(以 ° ' 和 " 为单位)
\documentclass{article}
\usepackage{pgfplots}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{center}
\begin{tikzpicture}
\coordinate (M) at (0,0) ;
\coordinate (A) at (canvas polar cs:angle=80,radius=4cm) ;
\coordinate (B) at (canvas polar cs:angle=-40,radius=4cm) ;
\coordinate (C) at (canvas polar cs:angle=30,radius=4cm);
\coordinate (D) at (canvas polar cs:angle=125,radius=4cm);
\coordinate (E) at (canvas polar cs:angle=200,radius=4cm);
\coordinate (F) at (canvas polar cs:angle=245,radius=4cm);
\draw (M) circle (4cm);
\draw (B) -- (A) -- (C);
\draw (B) -- (D) -- (C);
\draw (B) -- (E) -- (C);
\draw (B) -- (F) -- (C);
\tkzDrawPoints(A,B,C,D,E,F,M)
\tkzLabelPoints[above](A)
\tkzLabelPoints(B,C,M)
\tkzLabelPoints[left](D,E,F)
\tkzMarkAngle[fill= red,size=1.5cm, opacity=.4](B,A,C)
\tkzMarkAngle[fill= red,size=1.5cm, opacity=.4](B,D,C)
\tkzMarkAngle[fill= red,size=1.5cm, opacity=.4](B,E,C)
\tkzMarkAngle[fill= red,size=1.5cm, opacity=.4](B,F,C)
%\tkzLabelAngle[pos = 0.8](B,A,C){$\alpha$}
\tkzLabelAngle[pos = 0.8](B,D,C){$\beta$}
\tkzLabelAngle[pos = 0.8](B,E,C){$\gamma$}
\tkzLabelAngle[pos = 0.8](B,F,C){$\delta$}
\tkzGetAngle{angleBAC}
\tkzLabelAngle[pos = 0.8](B,A,C){\tkzAngleResult}
\end{tikzpicture}
\end{center}
\end{document}
答案1
要获取正角度,您可以使用\tkzFindAngle(B,A,C)
。它至少在这种情况下有效。然后您使用\tkzGetAngle{angleBAC}
将结果保存在 中\angleBAC
。
为了使其完美,您可以使用\FPround\angleBAC\angleBAC{2}
(手册中的示例 20.7 中演示),但我知道这不是您想要的。
为了获得 DD°MM'SS" 形式的角度,我创建了一个宏ddToddmmss
,使用 PGF 的数学函数将角度从十进制度转换为该形式,然后打印结果。与 一起使用\ddToddmmss{\angleBAC}
,用于非圆整角度。
从您的示例中删除很多不必要的东西(您甚至没有使用pgfplots
):
\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all}
\makeatletter
\newcommand\ddToddmmss[1]{%
\pgfmathtruncatemacro\deg@tmp{#1}%
\pgfmathsetmacro\min@tmp{(#1-\deg@tmp)*60}%
\pgfmathtruncatemacro\Min@tmp{\min@tmp}
\pgfmathtruncatemacro\sec@tmp{(\min@tmp-floor(\min@tmp))*60}%
\ensuremath{\deg@tmp^\circ \Min@tmp ' \sec@tmp ''}}
\makeatother
\begin{document}
\begin{tikzpicture}
% code from tikz
\coordinate (A) at (canvas polar cs:angle=80,radius=4cm) ;
\coordinate (B) at (canvas polar cs:angle=-40,radius=4cm) ;
\coordinate (C) at (canvas polar cs:angle=30,radius=4cm);
\draw (B) -- (A) -- (C);
% code from tkz-euclide no ;
\tkzDrawPoints(A,B,C)
\tkzLabelPoints[above](A)
\tkzLabelPoints(B,C)
\tkzMarkAngle[fill= red,size=1.5cm, opacity=.4](B,A,C)
\tkzFindAngle(B,A,C)
\tkzGetAngle{angleBAC}
%\FPround\angleBAC\angleBAC{2}
\tkzLabelAngle[pos = 0.8](B,A,C){\ddToddmmss{\angleBAC}}
\end{tikzpicture}
\end{document}