Zeichnen Sie ein Quadrat mit vorgegebenen Punkten

Zeichnen Sie ein Quadrat mit vorgegebenen Punkten

Gegeben seien die Punkte A und B. Ich möchte ein Quadrat mit den Eckpunkten A und B zeichnen. Bildbeschreibung hier eingeben

Natürlich gibt es zwei mögliche Quadrate sowie ein Segment AB.

Zuerst dachte ich, dass es mit „rotate around={90:(A)}“ gezeichnet werden könnte. Das funktioniert gut, um einen Punkt zu verschieben, aber nicht, um ein geneigtes Quadrat zu zeichnen.

Eine andere Möglichkeit ist die Verwendung einer senkrechten Linie durch B. Dafür ist jedoch die Länge von AB erforderlich. Dadurch entstehen zu komplizierte Codes.

Ich glaube, es gibt eine einfache Methode, um ein Quadrat mit vorgegebenen Eckpunkten zu zeichnen. Können Sie mir das mitteilen?

Antwort1

Sie können die calcBibliothek nutzen.

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

Quadrat

Antwort2

Das tkz-euclidePaket verfügt über zahlreiche Funktionen zum Erstellen geometrischer Konstruktionen, darunter die Erstellung eines Quadrats aus zwei zuvor definierten Koordinaten:

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

Die erste Zeile definiert das Quadrat basierend auf Aund B. Die zweite ruft die Koordinaten der letzten beiden Ecken ab und erstellt benannte Koordinaten Cund 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}

Antwort3

So etwas tikz/turnist eine gute Wahl. Bildbeschreibung hier eingeben

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

verwandte Informationen