如何在不分离轴的情况下计算 TikZ 中的坐标?

如何在不分离轴的情况下计算 TikZ 中的坐标?

下面的代码在 (cos 37°, sin 37°) 处生成坐标 A。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{math,calc}
\title{}
\author{}
\date{}
\begin{document}
\maketitle

\tikzmath{\x=37;} 
\begin{tikzpicture}
\coordinate (A) at ($cos(\x)*(1,0)+sin(\x)*(0,1)$);
\end{tikzpicture}

\end{document}

但是,当我将定义坐标的线改为下面时,它不再起作用。

\coordinate (A) at ($(cos(\x),sin(\x))$);

当轴数很多时,分离轴可能很麻烦。我怎样才能将所有东西都写在一个坐标中?

答案1

您需要保护)三角函数,否则坐标解析器将会做出令人讨厌的事情。

这意味着它会认为cos(\x是一个坐标规范,并且由于它不符合任何其他有效的 TikZ 坐标规范,它将假定它cos(\x是一个坐标或节点的名称:

Package pgf Error: No shape named `cos(37' is known.

然后calc图书馆就不能再处理了), sin(\x

Package tikz Error: + or - expected.

就你的情况而言,这应该是

\coordinate (A) at ($({cos(\x)}, {sin(\x)})$);

或者——在这个简单的情况下——

\coordinate (A) at ($(cos \x, sin \x)$);

请注意,您不需要calc库来实现这一点。TikZ 无论如何都会抛出 PGFmath 中的每个坐标部分:

\coordinate (A) at (cos \x, sin \x);
% or
\coordinate (A) at ({cos(\x)}, {sin(\x)});

PGF/TikZ 也内置了极坐标。你可以直接使用

\coordinate (A) at (\x : 1);

这也可以处理不同的半径:

\coordinate (A) at (\x : 1 and 2); % i.e. cos \x * (1, 0) + sin \x * (0, 2)

相关内容