在 tikz 中,三角函数和坐标的长度测量不同

在 tikz 中,三角函数和坐标的长度测量不同

我使用半径和θ以及坐标通过三角方程测量了不同的长度。我想解决这个问题,因为为了进行进一步的计算,我需要两个测量值匹配。

在背面,有一个 MWE:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\usetikzlibrary{math, calc, angles}
\title{MWE}

\begin{document}
\begin{tikzpicture}
\def\angleTheta{30}
\pgfmathsetmacro\angleThetaComplementaire{90-\angleTheta/2}
\def\r{4cm}

\pgfmathsetmacro\lengthabtrigo{2*\r*sin(\angleTheta/2)}

\path
 (0,0) coordinate [label=above left:a,inner sep=0pt] (a)
 arc [radius=\r, start angle= 90+\angleTheta/2, end angle=90-\angleTheta/2] 
 coordinate [label=above right:b,inner sep=0pt] (b); 

\pgfgetlastxy{\xb}{\yb}
\tikzmath{\lengthabcoord= sqrt(\xb*\xb +\yb*\yb);}     
\node [label=right:O,inner sep=0pt] 
        (O)      at ++(-\angleThetaComplementaire:\r) {};

\draw (a) -- (b) -- (O) -- (a);
\pic [thick, draw, above left, <->, angle eccentricity=1, angle radius=2cm] {angle=b--O--a};
\node at (1, -1.5) {$\theta$};

\node at (5,-2) {ab (from trigo)=\lengthabtrigo};
\node at (5,-3) {ab (from coord)=\lengthabcoord};

\end{tikzpicture}
\end{document}

测量 ab

答案1

代码中的最后一个坐标不是您所想的那样。为了看到这一点,我\path (b);在 之前添加了\pgfgetlastxy{\xb}{\yb}。出现差异的原因coordinate [label=above right:b,inner sep=0pt]在于您的代码,它在坐标后添加了标签。因此,您将标签的坐标与您的分析计算进行比较。如果您改用坐标,b差异就会消失。(当然,存在微小的残留差异,因为 TeX 计算的准确性不是无限的。)

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\usetikzlibrary{math, calc, angles}
\title{MWE}

\begin{document}
\begin{tikzpicture}
\def\angleTheta{30}
\pgfmathsetmacro\angleThetaComplementaire{90-\angleTheta/2}
\def\r{4cm}

\pgfmathsetmacro\lengthabtrigo{2*\r*sin(\angleTheta/2)}

\path
 (0,0) coordinate [label=above left:a,inner sep=0pt] (a)
 arc [radius=\r, start angle= 90+\angleTheta/2, end angle=90-\angleTheta/2] 
 coordinate [label=above right:b,inner sep=0pt] (b); 
\path(b);
\pgfgetlastxy{\xb}{\yb}
\tikzmath{\lengthabcoord= sqrt(\xb*\xb +\yb*\yb);}     
\node [label=right:O,inner sep=0pt] 
        (O)      at ++(-\angleThetaComplementaire:\r) {};

\draw (a) -- (b) -- (O) -- (a);
\pic [thick, draw, above left, <->, angle eccentricity=1, angle radius=2cm] {angle=b--O--a};
\node at (1, -1.5) {$\theta$};

\node at (5,-2) {ab (from trigo)=\lengthabtrigo};
\node at (5,-3) {ab (from coord)=\lengthabcoord};
\path  let \p1=($(b)-(a)$),\n1={veclen(\x1,\y1)} in (5,-4) node
 {ab (from calc)=\n1};

\end{tikzpicture}
\end{document}

在此处输入图片描述

我还添加了第三种测量距离的方法,在我看来,这种方法更直接一些。结果一致(准确度合理)。

相关内容