Dibuja un cuadrado con puntos dados.

Dibuja un cuadrado con puntos dados.

Dados los puntos A y B, quiero dibujar un cuadrado con vértices A y B. ingrese la descripción de la imagen aquí

Por supuesto, hay dos cuadrados posibles junto con un segmento AB.

Primero, pensé que se podría dibujar usando "rotar alrededor={90:(A)}". Esto funciona bien para mover un punto, pero no es bueno para dibujar un cuadrado inclinado.

Usar una línea perpendicular que pase por B es otra forma. Pero requiere la longitud de AB. Entonces, genera códigos demasiado complicados.

Creo que existe un método sencillo para dibujar un cuadrado con vértices dados. ¿Podrías avisarme?

Respuesta1

Puedes usar la calcbiblioteca.

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

Cuadrado

Respuesta2

El tkz-euclidepaquete tiene muchas características para realizar construcciones geométricas, incluida la creación de un cuadrado a partir de dos coordenadas previamente definidas:

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

La primera línea define el cuadrado basado en Ay B. Los segundos obtienen las coordenadas de las dos últimas esquinas y crean coordenadas con nombre Cy 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}

Respuesta3

¿Algo como esto? tikz/turnes una buena elección. ingrese la descripción de la imagen aquí

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

información relacionada