座標で平方根を計算する正しい方法は何ですか?

座標で平方根を計算する正しい方法は何ですか?

ピタゴラスの定理を示すファイルを作成しようとしています。

この例では、斜辺の長さは 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};

\pgfmathparseTikZ は座標指定で完全に拡張可能なコンテンツを想定しているため (実際はそうではない)、動作しません。

TikZ はすでにすべてを PGFmath にスローするので、直接使用できますが、パーサーはスマートではなく、次のものまですべてを取得するため、パーサーからsqrt(7)保護する必要があります(括弧が不均衡な場合でも)。))

だから、必要なのは

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

しかし、この単純なケースでは、次のように書くこともできます。

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

2 つ目の TikZ 画像を追加しました。これは、おそらくあなたが望んでいるものに近いものだと思います。


PGFmathは寛容なので、

at (0, sqrt(7)

しかし、これはコードゴルフではありません。

コード

\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}

出力

ここに画像の説明を入力してください ここに画像の説明を入力してください

関連情報