Vẽ hình vuông nội tiếp tam giác cho trước

Lượt xem: 54

Description

Vẽ hình vuông nội tiếp tam giác cho trước. Đây là bài các thầy nhóm TikZ-tikzE đang vẽ. Dưới đây là mã tôi vẽ thuần TikZ, post ra đây để các thầy cô tham khảo nhé! Mã hơi dài, nhưng nên vẽ thế. Chú thích thêm: phân biệt 3 màu nét vẽ và nhãn điểm: màu xanh/xám/đỏ cho các nét vẽ ban đầu/trung gian/hình vuông cần dựng. Điểm M tinh chỉnh cho thật đẹp \coordinate (M) at (intersection of A–F and B–C);
\draw (M) node[shift={(80:.3)}]{\M};

Tất nhiên là cũng có thể dùng tkz-euclide (mã lệnh sẽ ngắn hơn do có lệnh \tkzSquare).

Đây vốn là bài toán cổ điển. Tìm google “square inscribed in s triangle” sẽ thấy nhiều cách làm, chẳng hạn https://www.cut-the-knot.org/…/Geomet…/InscribedSquare.shtml

Code

% Dựng hình vuông nội tiếp tam giác cho trước
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture} [line join=round, line cap=round]

% Phân biệt 3 màu nét vẽ
\colorlet{input}{blue!80!black} 
\colorlet{med}{gray}
\colorlet{output}{red!70!black}

% viết nhãn cho gọn
\def\A{\textcolor{input}{$A$}} 
\def\B{\textcolor{input}{$B$}}
\def\C{\textcolor{input}{$C$}} 
\def\D{\textcolor{med}{$D$}}
\def\E{\textcolor{med}{$E$}}
\def\F{\textcolor{med}{$F$}}
\def\M{\textcolor{output}{$M$}}
\def\N{\textcolor{output}{$N$}}
\def\P{\textcolor{output}{$P$}}
\def\Q{\textcolor{output}{$Q$}}

% Các điểm ban đầu của tam giác ABC
\coordinate[label=below left:\A] (A) at (-2,0);
\coordinate[label=below right:\B] (B) at (5,0);
\coordinate[label=above:\C] (C) at (0,4);

% Xác định hình vuông trung gian CDEF
\coordinate[label=below:\D] (D) at ($(A)!(C)!(B)$);
\path let \p1 =($(C)-(D)$),
\n1 = {veclen(\x1,\y1)}
in coordinate[label=below:\E] (E) at ($(D)!\n1!(B)$);
\coordinate[label=above:\F] (F) at ($(C)+(E)-(D)$);

% Lấy M là giao của của AF và CE
% từ đó xác định hình vuông MNPQ cần dựng
\coordinate (M) at (intersection of A--F and B--C);
\draw (M) node[shift={(80:.3)}]{\M};
\coordinate[label=below:\N] (N) at ($(A)!(M)!(B)$);
\path let \p1 =($(M)-(N)$),
\n1 = {veclen(\x1,\y1)}
in coordinate[label=below:\P] (P) at ($(N)!\n1!90:(M)$);
\coordinate[label=above left:\Q] (Q) at ($(M)+(P)-(N)$);

% Nối các cạnh
\draw[med] (D)--(C)--(F)--(E) (A)--(F);
\draw[input] (A)--(B)--(C)--cycle;
\draw[output] (M)--(N)--(P)--(Q)--cycle;
\end{tikzpicture}
\end{document}