tikzで直角三角形をノードとして定義する方法

tikzで直角三角形をノードとして定義する方法

正三角形を作るには

\tikzstyle{triangle} = [fill=green!20, regular polygon, regular polygon sides=3]

しかし、直角三角形のtikzノードを定義するのに苦労しています

私はこんなことをしようと思った

\tikzstyle{anytriangle} = [draw, A--B--C--A]

その後

\begin{tikzpicture}[ auto, node distance=4em]

% Gridline
\draw [step=0.5cm,draw=gray] (-4,-4) grid (4,4);

\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (C) at (0,4);

\node [anytriangle] {};

\end{tikzpicture}

しかし、エラーが発生します: 座標Aが不明です

答え1

おそらく次のようになります (ただし、あなたが何を達成したいのかを完全に理解していないことを認めなければなりません):

\documentclass[tikz]{standalone}

\begin{document}

\tikzset{triangle/.append style={fill=green!20, regular polygon, regular polygon sides=3},
         anytriangle/.append style={draw, append after command={ \pgfextra{ \draw (A) -- (B) -- (C) -- (A); } }}}

\begin{tikzpicture}[auto, node distance=4em]

% Gridline
\draw [step=0.5cm,draw=gray] (-4,-4) grid (4,4);

\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (C) at (0,4);

\node [anytriangle] {};

\end{tikzpicture}

\end{document}

答え2

isosceles triangleで図形を使用できますapex angle=90

\documentclass[tikz,border=2mm]{standalone} 
\usetikzlibrary{positioning, shapes.geometric}

\begin{document}
\begin{tikzpicture}[
    right angle triangle/.style={
        isosceles triangle,
        isosceles triangle apex angle=90},
    every node/.style={right angle triangle, 
        draw, inner sep=0pt,
        anchor=left corner,
        shape border rotate=90},
    paint/.style={draw=#1!75, fill=#1!20}
    ]


\draw[help lines] grid (5,2);

\foreach \a/\c in {1.5/blue, 1/green, 0.5/red}{
    \node[paint=\c, minimum width=\a cm] at (0,0) {};
    \node[paint=\c, minimum height=\a cm] at (2,0) {};
    }

\begin{scope}[yshift=-3cm,
    every node/.style={
        right angle triangle,
        isosceles triangle stretches=false,
        draw, inner sep=0pt,
        minimum height=1cm,
        anchor=apex}
    ]
\draw[help lines] (0,0) grid (2,2);
\foreach \a/\c in {45/blue, 135/green,225/red,315/orange}
     \node[paint=\c, 
        shape border rotate=\a] at (1,1) {};

\end{scope}
\end{tikzpicture}
\end{document}

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

答え3

あなたの質問から、あなたが探しているのは次のものだと分かりました:

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

座標 A、B、C にピンでラベルを付けました (ご覧のとおり、三角形は完全に一致しています)。

上記の画像に対して、私は 2 つの解決策を提案します。

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{shapes.geometric}

\begin{document}
    \begin{tikzpicture}[
trian/.style = {isosceles triangle,
     isosceles triangle apex angle=90,
     minimum size=4cm/sqrt(2), inner sep=0pt,
     anchor=east,rotate=-135,
     draw, fill=green!20}
                        ]
\coordinate[pin=below:A] (A) at (0,0);
\coordinate[pin=below:B] (B) at (4,0);
\coordinate[pin=C]       (C) at (0,4);
%
\node [trian] {};
    \end{tikzpicture}
\end{document}
  • 小さな画像 ( \pic) はノードではありませんが、同様の機能を持っています (可能なノード アンカーから、3 つのコーナーのみを-a-bおよび ˙-c` として定義します)。

\documentclass[tikz, margin=3mm]{standalone}

\begin{document}
    \begin{tikzpicture}[
trian/.pic = {
    \draw [fill=green!20]
        (0,0) coordinate (-a) --
        (4,0) coordinate (-b) --
        (0,4) coordinate (-c) -- cycle;
            }
                        ]
\coordinate[pin=below:A] (A) at (0,0);
\coordinate[pin=below:B] (B) at (4,0);
\coordinate[pin=C]       (C) at (0,4);
%
\pic[above right] at (A) {trian};
    \end{tikzpicture}
\end{document}

どちらの場合も結果は同じです

関連情報