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를 표시했습니다. (보시다시피 삼각형 모양이 핀과 완벽하게 일치합니다.

위 이미지에 대해 두 가지 솔루션을 제안합니다.

\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노드는 아니지만 유사한 기능을 갖는 작은 그림( )이 있습니다 (가능한 노드 앵커에서 세 개의 모서리만 -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}

두 경우 모두 결과는 동일합니다

관련 정보