我使用半径和θ以及坐标通过三角方程测量了不同的长度。我想解决这个问题,因为为了进行进一步的计算,我需要两个测量值匹配。
在背面,有一个 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}
答案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}
我还添加了第三种测量距离的方法,在我看来,这种方法更直接一些。结果一致(准确度合理)。