Tikz:计算并存储两个坐标之间的欧几里得距离

Tikz:计算并存储两个坐标之间的欧几里得距离

有没有简单的方法来存储两个坐标之间的欧几里得距离?

我想将值 4 存储在宏中,以便我可以使用它来指定节点的宽度。

我能想到的最简单的方法是以某种方式将输出存储veclen(x,y)到宏中。我在 tikz-pgf 手册中找到了这一行

\pgfmathparse{veclen(12,5)} \pgfmathresult

但我无法让它工作。

有人知道吗?我在这个网站上找到了几个与计算坐标之间的距离有关的答案,但它们总是使用特定路径内的距离,而不是将其存储在宏中以供以后使用。

答案1

这是一个简单的(?)代码,用于计算距离并将其存储在变量中。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\makeatletter
\newcommand{\Distance}[3]{% % from https://tex.stackexchange.com/q/56353/121799
\tikz@scan@one@point\pgfutil@firstofone($#1-#2$)\relax  
\pgfmathsetmacro{#3}{round(0.99626*veclen(\the\pgf@x,\the\pgf@y)/0.0283465)/1000}
}% Explanation: the calc library allows us, among other things, to add and
% subtract points, so ($#1-#2$) is simply the difference between the points
% #1 and #2. The combination \tikz@scan@one@point\pgfutil@firstofone extracts
% the coordinates of the new point and stores them in \pgf@x and \pgf@y. 
% They get fed in veclen, and \pgfmathsetmacro stores the result in #3. 
% EDIT: included fudge factor, see https://tex.stackexchange.com/a/22702/121799
\makeatother
\begin{document}
\begin{tikzpicture}
\coordinate (X) at (1,0);
\coordinate (Y) at (3,0);
\draw[-] (X) -- (Y);
\node at (0,2) {\Distance{(X)}{(Y)}{\mylen}\mylen};
\end{tikzpicture}
\end{document}

答案2

可以使用以下方法手动计算sqrt(x^2 + y^2)veclen按建议使用:

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\begin{document}

% Euclidian distance from (3, 4) to (12, 5)
\pgfmathparse{sqrt((12 - 3)^2 + (5 - 4)^2)}\pgfmathresult

% Euclidian distance from (3, 4) to (12, 5)
\pgfmathparse{veclen(12 - 3, 5 - 4)}\pgfmathresult

\end{document}

存在舍入差异。

答案3

对于某些特殊情况,您也可以使用fit节点。这样就无需存储距离值。

\documentclass[tikz,border=2mm]{standalone} 
\usetikzlibrary{positioning, fit}

\begin{document}
\begin{tikzpicture}

\draw[fill=black] circle (1pt) node[below]{(0,0)} -- node[above]{4} ++(4,0) circle (1pt) node[below] {(4,0)};

\node[fit={(0,0) (4,0)}, inner xsep=0pt, draw, minimum height=1cm, anchor=south west] at (0,5mm) (a) {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容