
Dados los puntos A y B, quiero dibujar un cuadrado con vértices A y B.
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 calc
biblioteca.
\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}
Respuesta2
El tkz-euclide
paquete 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 A
y B
. Los segundos obtienen las coordenadas de las dos últimas esquinas y crean coordenadas con nombre C
y 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/turn
es una buena elección.
\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}