주어진 점으로 정사각형 그리기

주어진 점으로 정사각형 그리기

점 A와 B가 주어지면 꼭지점 A와 B가 있는 정사각형을 그리고 싶습니다. 여기에 이미지 설명을 입력하세요

물론 세그먼트 AB와 함께 두 개의 가능한 정사각형이 있습니다.

우선 "rotate around={90:(A)}"를 이용하면 그릴 수 있겠다고 생각했습니다. 이는 점을 이동할 때 적합하지만 기울어진 사각형을 그릴 때는 적합하지 않습니다.

B를 지나는 수직선을 사용하는 것도 또 다른 방법입니다. 그러나 AB의 길이가 필요합니다. 그래서 코드가 너무 복잡해집니다.

주어진 꼭지점으로 정사각형을 그리는 간단한 방법이 있다고 생각합니다. 알려주실 수 있나요?

답변1

도서관 을 이용하시면 됩니다 calc.

\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
       \coordinate (A) at (0,0);
       \coordinate (B) at (3,1);
       \fill (A) circle (0.1);
       \fill (B) circle (0.1);
       \draw (A) node[below] {A} -- (B) node[below] {B} -- ($ (B)!1!-90:(A) $) -- ($ (A)!1!90:(B) $) -- cycle;
\end{tikzpicture}
\end{document}

정사각형

답변2

tkz-euclide패키지에는 이전에 정의된 두 좌표로 정사각형을 만드는 것을 포함하여 기하학적 구성을 만들기 위한 많은 기능이 있습니다.

\tkzDefSquare(A,B)
\tkzGetPoints{C}{D}

A첫 번째 줄은 및 를 기준으로 사각형을 정의합니다 B. 초는 마지막 두 모서리의 좌표를 가져오고 명명된 좌표를 생성 C합니다 D.

\documentclass[border=1cm]{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
       \coordinate (A) at (0,0);
       \coordinate (B) at (3,1);
       
       \tkzDefSquare(A,B)
       \tkzGetPoints{C}{D}
       
       \tkzDrawPoints[size=8](A,B,C,D)
       \tkzDrawPolygon(A,B,C,D)
\end{tikzpicture}
\end{document}

답변3

이 같은? tikz/turn좋은 선택입니다. 여기에 이미지 설명을 입력하세요

\documentclass[tikz, border=1cm]{standalone}
\usepackage{xparse}
\makeatletter
\NewDocumentCommand { \mysquare } { s O{} D(){a} D(){b} }
  {
    \tikz@scan@one@point\pgf@process(#3)
    \pgf@xa = \pgf@x
    \pgf@ya = \pgf@y
    \tikz@scan@one@point\pgf@process(#4)
    \pgfmathsetmacro{\square@l}{
      sqrt( (\pgf@x - \pgf@xa)^2 + (\pgf@y - \pgf@ya)^2 )
    }
    \def\square@sign{}
    \IfBooleanT { #1 } { \def\square@sign{-} }
    \draw[#2] (#3) -- (#4)
      -- ([turn]\square@sign 90:\square@l pt)
      -- ([turn]\square@sign 90:\square@l pt)
      -- cycle;
  }
\makeatother

\begin{document}
\begin{tikzpicture}
\coordinate [label=below left:$A$] (a) at (0, 0);
\coordinate [label=right:$B$] (b) at (2, 3);
\coordinate [label=above:$C$] (c) at (2, 1);
\mysquare[thick](a)(b)
\mysquare*[thick, red](a)(c)
\end{tikzpicture}
\end{document}

관련 정보