如何计算tikz坐标的几何函数?

如何计算tikz坐标的几何函数?

我在 tikz 中有两个点(m1m4),想计算这两个点与水平线定义的线的角度。

数学应该是atan( (x2-x1) / (y2-y2) ),我尝试做这个实现(将结果存储在变量中\start

\pgfmathsetmacro{\start}{atan((\pgfextracty{m4}-\pgfextracty{m1})/(\pgfextractx{m4}-\pgfextractx{m1}))}

不幸的是,这不能编译并抛出这个错误:

! You can't use a prefix with `the character ='.
<to be read again> 
=
l.41 ...y{m1})/(\pgfextractx{m4}-\pgfextractx{m1}))}

我感兴趣的是如何使用 tikz 坐标进行比加法和乘法更复杂的计算。以上只是一个例子。这里有一个小的 mwe,它采用两个坐标进行一个小计算并将结果打印到节点,作为一个略显艺术化的例子。

\documentclass{article} 
\usepackage{tikz} 
\usetikzlibrary{calc}
\usepackage[active,tightpage]{preview}
\setlength\PreviewBorder{2pt}
\begin{document} 
\begin{preview}
\begin{tikzpicture}
\coordinate (m1) at (0,0);
\coordinate (m4) at ($(m1) +(170:70)$);
\pgfmathsetmacro{\start}{atan((\pgfextracty{m4}-\pgfextracty{m1})/(\pgfextractx{m4}-\pgfextractx{m1}))}

\node at (1,1) {\start};
\end{tikzpicture}
\end{preview}
\end{document}

答案1

如果您的目的是计算由两个点定义的线与水平轴之间的角度(m1)--(m4),那么您可以根据需要选择两种方案。首先,您可以将 pgf 数学引擎与\pgfmathanglebetweenpoints用于此目的的命令一起使用。第二种选择是使用tkz-euclide包(内部加载 tikz),但您需要三个点。请参阅下面的示例以了解说明:

\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all} % Important
\begin{document}

\begin{tikzpicture}
\coordinate(m1)at(0,0);
\coordinate(m4)at(5,2);
\coordinate(m0)at([xshift=5cm]m1);    
\draw (m0)--(m1)--(m4);

% first method
\pgfmathanglebetweenpoints{\pgfpointanchor{m1}{center}}{\pgfpointanchor{m4}{center}}
\edef\twomangle{\pgfmathresult}    
\node  at (0,-2){\twomangle};

% Second method
\tkzFindAngle(m0,m1,m4)
\tkzGetAngle{angleBCA};    
\node at (0,-3){\angleBCA};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容