TransWikia.com

Draw a square with given points

TeX - LaTeX Asked on May 11, 2021

Given points A and B, I want to draw a square with vertices A and B.
enter image description here

Of course, there are two possible squares along with a segment AB.

First, I thought that it could be drawn by using "rotate around={90:(A)}". This works well for moving a point, but it is not good for drawing a tilted square.

Using a perpendicular line through B is another way. But, it requires the length of AB. So, it makes too complicated codes.

I think there is a simple method to draw a square with given vertices. Could you let me know?

3 Answers

You cal use the calc library.

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}

Square

Correct answer by hpekristiansen on May 11, 2021

Something like this? tikz/turn is a good choice. enter image description here

documentclass[tikz, border=1cm]{standalone}
usepackage{xparse}
makeatletter
NewDocumentCommand { mysquare } { s O{} D(){a} D(){b} }
  {
    tikz@scan@one@pointpgf@process(#3)
    pgf@xa = pgf@x
    pgf@ya = pgf@y
    tikz@scan@one@pointpgf@process(#4)
    pgfmathsetmacro{square@l}{
      sqrt( (pgf@x - pgf@xa)^2 + (pgf@y - pgf@ya)^2 )
    }
    defsquare@sign{}
    IfBooleanT { #1 } { defsquare@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}

Answered by ZhiyuanLck on May 11, 2021

The tkz-euclide package has a lot of features for making geometric constructions, including making a square from two previously defined coordinates:

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

The first line defines the square based on A and B. The seconds gets the coordinates of the last two corners, and creates named coordinates C and 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}

Answered by Torbjørn T. on May 11, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP