计算坐标中的平方根的正确方法是什么?

计算坐标中的平方根的正确方法是什么?

我正在尝试创建一个演示勾股定理的文件。

在这个例子中,斜边长度为 4,底边长度为 3。所以高应该是 7 的平方根。

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

\node (A) at (0,0) {A};
\node (B) at (3,0) {B};
\node (C) at (0,\pgrmathparse{sqrt(7)}\pgfmathresult) {C};
\draw (A) -- (B) -- (C) -- (A);

\end{tikzpicture}
\end{document}

但是我无法放置高度节点。将第 9 行替换为 并\node (C) at (0,sqrt(7)) {C};不能解决问题。我的代码有什么问题?

答案1

线路

\node (C) at (0,\pgfmathparse{sqrt(7)}\pgfmathresult) {C};

将不起作用,因为 TikZ 需要坐标规范中完全可扩展的内容(但\pgfmathparse事实并非如此)。

由于 TikZ 已将所有内容放入 PGFmath 中,因此您可以直接使用sqrt(7),但您需要保护它)不受解析器的影响,因为所述解析器并不智能,并且会抓取所有内容直到下一个)解析器 - 即使括号不平衡。

所以你需要

\node (C) at (0, {sqrt(7)}) {C};

不过,在这个简单的例子中,你也可以只写

\node (C) at (0, sqrt 7) {C};

我添加了第二张 TikZ 图片,我相信它看起来更像你想要的东西。


因为 PGFmath 很宽容,你甚至可以做

at (0, sqrt(7)

但这不是 Code Golf。

代码

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node (A) at (0,0) {A};
\node (B) at (3,0) {B};
\node (C) at (0, sqrt 7) {C};
\draw (A) -- (B) -- (C) -- (A);
\end{tikzpicture}

\begin{tikzpicture}
\coordinate[label=left: $A$] (A) at (0, 0);
\coordinate[label=right:$B$] (B) at (3, 0);
\coordinate[label=left: $C$] (C) at (0, sqrt 7);
\draw (A) -- (B) -- (C) -- cycle;
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述 在此处输入图片描述

相关内容