Perigal's Dissection: Pembuktian Geometris Teorema Pythagoras di LaTeX

Teorema Pythagoras adalah salah satu prinsip dasar matematika yang paling terkenal. Ada banyak cara untuk membuktikannya, baik secara aljabar maupun geometris. Salah satu bukti geometris yang paling elegan dan visual adalah Diseksi Perigal (Perigal’s Dissection), yang ditemukan oleh Henry Perigal pada tahun 1873.
Dalam artikel ini, kita akan mempelajari bagaimana membuat visualisasi Diseksi Perigal menggunakan paket TikZ di LaTeX.
Pendahuluan
Diseksi Perigal adalah metode pembuktian Teorema Pythagoras () dengan cara memotong (mendiseksi) persegi yang berada di atas kaki segitiga siku-siku yang lebih panjang menjadi empat bagian yang kongruen.
Potongan-potongan ini dilakukan dengan menarik dua garis lurus yang saling tegak lurus melalui pusat persegi tersebut, di mana salah satu garisnya sejajar dengan hipotenusa (sisi miring) segitiga.
Keempat potongan tersebut, bersama dengan persegi utuh dari kaki segitiga yang lebih pendek, dapat disusun ulang secara pas untuk menutupi seluruh area persegi yang berada di atas hipotenusa.
Kode LaTeX Lengkap
Berikut adalah kode LaTeX lengkap menggunakan library TikZ (intersections dan math) untuk menghasilkan diagram diseksi Perigal secara presisi:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections}
\usetikzlibrary{math}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{0.125pt}
% Nama file: perigals-dissection.tex
% Deskripsi: Bukti geometris Teorema Pythagoras dengan metode Diseksi Perigal.
% Pembuat: Efraín Soto Apolinar.
\begin{document}
\begin{tikzpicture}[scale=0.75]
\tikzmath{function rotacionx(\x,\y,\angulo) {return \x*cos(\angulo) + \y*sin(\angulo);};}
\tikzmath{function rotaciony(\x,\y,\angulo) {return -\x*sin(\angulo) + \y*cos(\angulo);};}
\pgfmathsetmacro{\dx}{0.25}
% Titik-titik sudut segitiga siku-siku
\pgfmathsetmacro{\Ax}{0}
\pgfmathsetmacro{\Ay}{0}
\coordinate (A) at (\Ax,\Ay);
\pgfmathsetmacro{\Bx}{4}
\pgfmathsetmacro{\By}{0}
\coordinate (B) at (\Bx,\By);
\pgfmathsetmacro{\Cx}{4}
\pgfmathsetmacro{\Cy}{3}
\coordinate (C) at (\Cx,\Cy);
% Panjang sisi-sisi segitiga
\pgfmathsetmacro{\lAB}{sqrt((\Bx - \Ax)*(\Bx - \Ax) + (\By - \Ay)*(\By - \Ay))}
\pgfmathsetmacro{\lAC}{sqrt((\Cx - \Ax)*(\Cx - \Ax) + (\Cy - \Ay)*(\Cy - \Ay))}
\pgfmathsetmacro{\lBC}{sqrt((\Cx - \Bx)*(\Cx - \Bx) + (\Cy - \By)*(\Cy - \By))}
% Kemiringan sisi-sisi segitiga
\pgfmathsetmacro{\mAC}{(\Cy - \Ay)/(\Cx - \Ax)}
\pgfmathsetmacro{\mAB}{(\By - \Ay)/(\Bx - \Ax)}
\pgfmathsetmacro{\angA}{atan(\mAC)}
\pgfmathsetmacro{\angB}{90.0}
\pgfmathsetmacro{\angC}{90.0-\angA}
\pgfmathsetmacro{\angAH}{45+\angA}
% Koordinat titik-titik sudut persegi pada sisi-sisi segitiga
\pgfmathsetmacro{\Dx}{0}
\pgfmathsetmacro{\Dy}{-\lAB}
\coordinate (D) at (\Dx,\Dy);
\pgfmathsetmacro{\Ex}{\Bx}
\pgfmathsetmacro{\Ey}{-\lAB}
\coordinate (E) at (\Ex,\Ey);
\pgfmathsetmacro{\Fx}{\Bx+\lBC}
\pgfmathsetmacro{\Fy}{0}
\coordinate (F) at (\Fx,\Fy);
\pgfmathsetmacro{\Gx}{\Bx+\lBC}
\pgfmathsetmacro{\Gy}{\lBC}
\coordinate (G) at (\Gx,\Gy);
\pgfmathsetmacro{\Hx}{sqrt(2.0)*\lAC*cos(45+\angA)}
\pgfmathsetmacro{\Hy}{sqrt(2.0)*\lAC*sin(45+\angA)}
\coordinate (H) at (\Hx,\Hy);
\pgfmathsetmacro{\Ix}{rotacionx(\Cx,\Cy,-90)}
\pgfmathsetmacro{\Iy}{rotaciony(\Cx,\Cy,-90)}
\coordinate (I) at (\Ix,\Iy);
% Koordinat titik pusat persegi di atas hipotenusa
\pgfmathsetmacro{\Mx}{0.5*(\Ax+\Hx)}
\pgfmathsetmacro{\My}{0.5*(\Ay+\Hy)}
\coordinate (M) at (\Mx,\My);
% Titik-titik bantu untuk menggambar pembagian diseksi pada hipotenusa
\pgfmathsetmacro{\Jx}{\Mx+0.5*\lBC}
\pgfmathsetmacro{\Jy}{\My+0.5*\lBC}
\coordinate (J) at (\Jx,\Jy);
\pgfmathsetmacro{\Kx}{\Mx-0.5*\lBC}
\pgfmathsetmacro{\Ky}{\My+0.5*\lBC}
\coordinate (K) at (\Kx,\Ky);
\pgfmathsetmacro{\Lx}{\Mx-0.5*\lBC}
\pgfmathsetmacro{\Ly}{\My-0.5*\lBC}
\coordinate (L) at (\Lx,\Ly);
\pgfmathsetmacro{\Nx}{\Mx+0.5*\lBC}
\pgfmathsetmacro{\Ny}{\My-0.5*\lBC}
\coordinate (N) at (\Nx,\Ny);
% Ukuran panjang untuk diseksi
\pgfmathsetmacro{\mCH}{(\Hy - \Cy)/(\Hx - \Cx)}
\pgfmathsetmacro{\xp}{\Cx+(\Jy-\Cy)/\mCH}
\pgfmathsetmacro{\yp}{\Jy}
\pgfmathsetmacro{\ld}{sqrt((\Jx - \xp)*(\Jx - \xp) + (\Jy - \yp) * (\Jy - \yp))}
% Titik-titik sudut diseksi pada kaki segitiga yang lebih panjang (AB)
\pgfmathsetmacro{\Cunox}{\Bx}
\pgfmathsetmacro{\Cunoy}{\By - \ld}
\coordinate (Cuno) at (\Cunox,\Cunoy);
\pgfmathsetmacro{\Cdosx}{\Ax + \ld}
\pgfmathsetmacro{\Cdosy}{\Ay}
\coordinate (Cdos) at (\Cdosx,\Cdosy);
\pgfmathsetmacro{\Ctresx}{\Dx}
\pgfmathsetmacro{\Ctresy}{\Dy + \ld}
\coordinate (Ctres) at (\Ctresx,\Ctresy);
\pgfmathsetmacro{\Ccuatrox}{\Ex - \ld}
\pgfmathsetmacro{\Ccuatroy}{\Ey}
\coordinate (Ccuatro) at (\Ccuatrox,\Ccuatroy);
\path[name path=UT] (Cuno) -- (Ctres);
\path[name path=DC] (Cdos) -- (Ccuatro);
\path[name intersections={of=UT and DC}];
\coordinate (Q) at (intersection-1);
\pgfmathsetmacro{\ejex}{max(\Ax,\Bx,\Cx) + 1.0}
\pgfmathsetmacro{\ejey}{max(\Ay,\By,\Cy) + 1.0}
% Menggambar Segitiga Siku-Siku
\draw[black] (\Bx-\dx,0) -- (\Bx-\dx,\dx) -- (\Bx,\dx);
\draw[blue,thick] (A) -- (B) -- (C) -- cycle;
\fill[blue] (A) circle (1.0pt) node[below left]{$A$};
\fill[blue] (B) circle (1.0pt) node[below right]{$B$};
\fill[blue] (C) circle (1.0pt) node[above right]{$C$};
% Menggambar Persegi di Sisi-sisi Segitiga
\draw[cyan,thick] (0,0) rectangle (\lAB,-\lAB); % Sisi AB (kaki panjang)
\draw[cyan,thick,rotate=\angA] (0,0) rectangle (\lAC,\lAC); % Sisi AC (hipotenusa)
\draw[blue,thick,fill=cyan!15,shift={(\Bx,\By)}] (0,0) rectangle (\lBC,\lBC); % Sisi BC (kaki pendek)
% Menggambar Area Diseksi pada Hipotenusa
\draw[blue,thick,fill=cyan!15] (J) -- (K) -- (L) -- (N) -- (J);
% Menghitung titik potong diseksi di hipotenusa
\coordinate (Jp) at (\Jx+2.0,\Jy);
\path[name path=CH] (C) -- (H);
\path[name path=JJp] (J) -- (Jp);
\path[name intersections={of=CH and JJp}];
\coordinate (Huno) at (intersection-1);
\coordinate (Np) at (\Nx,\Ny-2.0);
\path[name path=AC] (A) -- (C);
\path[name path=NNp] (N) -- (Np);
\path[name intersections={of=AC and NNp}];
\coordinate (Hdos) at (intersection-1);
\coordinate (Lp) at (\Lx-2.0,\Ly);
\path[name path=AI] (A) -- (I);
\path[name path=LLp] (L) -- (Lp);
\path[name intersections={of=AI and LLp}];
\coordinate (Htres) at (intersection-1);
\coordinate (Kp) at (\Kx,\Ky+2.0);
\path[name path=HI] (H) -- (I);
\path[name path=KKp] (K) -- (Kp);
\path[name intersections={of=HI and KKp}];
\coordinate (Hcuatro) at (intersection-1);
% Mewarnai bagian diseksi pada hipotenusa
\draw[cyan,fill=yellow!35,opacity=0.5] (C) -- (Huno) -- (J) -- (Hdos) -- cycle;
\draw[cyan,fill=gray!35,opacity=0.5] (A) -- (Hdos) -- (N) -- (Htres) -- cycle;
\draw[cyan,fill=pink!35,opacity=0.5] (I) -- (Htres) -- (L) -- (Hcuatro) -- cycle;
\draw[cyan,fill=green!35,opacity=0.5] (H) -- (Huno) -- (K) -- (Hcuatro) -- cycle;
% Mewarnai bagian diseksi pada kaki terpanjang (AB)
\draw[cyan,fill=gray!35,opacity=0.5] (Q) -- (Cuno) -- (B) -- (Cdos) -- cycle;
\draw[cyan,fill=yellow!35,opacity=0.5] (Q) -- (Cdos) -- (A) -- (Ctres) -- cycle;
\draw[cyan,fill=green!35,opacity=0.5] (Q) -- (Ctres) -- (D) -- (Ccuatro) -- cycle;
\draw[cyan,fill=pink!35,opacity=0.5] (Q) -- (Ccuatro) -- (E) -- (Cuno) -- cycle;
\end{tikzpicture}
\end{document}Keluaran kode tersebut adalah sebagai berikut:

Penjelasan Detail Kode
Mari kita analisis konsep-konsep matematika dan perintah TikZ utama yang digunakan pada kode di atas:
1. Rotasi Titik Kustom (\tikzmath)
Untuk membantu menghitung posisi rotasi secara geometris, didefinisikan fungsi matematika kustom menggunakan library math:
\tikzmath{function rotacionx(\x,\y,\angulo) {return \x*cos(\angulo) + \y*sin(\angulo);};}
\tikzmath{function rotaciony(\x,\y,\angulo) {return -\x*sin(\angulo) + \y*cos(\angulo);};}Fungsi rotacionx dan rotaciony menghitung koordinat dan yang baru setelah sebuah titik diputar sejauh sudut \angulo (dalam derajat). Ini penting untuk menempatkan persegi pada sisi hipotenusa yang miring secara presisi.
2. Pengukuran Menggunakan PGF (\pgfmathsetmacro)
Konstanta geometri seperti panjang sisi segitiga siku-siku (, , sehingga ), sudut kemiringan hipotenusa (\angA), dan posisi pusat diseksi dihitung secara dinamis menggunakan makro \pgfmathsetmacro. Hal ini membuat diagram menjadi sangat fleksibel dan akurat.
3. Persimpangan Jalur (intersections)
Pemisahan garis potong diseksi dihitung menggunakan library intersections. TikZ dapat mendeteksi titik pertemuan antara dua lintasan garis secara otomatis:
\path[name path=UT] (Cuno) -- (Ctres);
\path[name path=DC] (Cdos) -- (Ccuatro);
\path[name intersections={of=UT and DC}];
\coordinate (Q) at (intersection-1);Baris kode ini mendeteksi titik potong Q yang bertindak sebagai pusat pemotongan diseksi pada persegi (kaki terpanjang).
4. Visualisasi Potongan Geometris
Setiap potongan diwarnai menggunakan tingkat transparansi (opacity=0.5) dengan warna yang berbeda-beda (yellow, gray, pink, green) untuk memudahkan pembaca melihat bagaimana potongan dari persegi di bawah () dapat dipindahkan dan disusun ulang secara tepat pada persegi sisi miring (hipotenusa).
Persegi kaki terpendek () tetap dibiarkan utuh berwarna biru muda (cyan!15) dan diposisikan di tengah persegi sisi miring sebagai bagian penyusun kelima.
Cara Mengompilasi Dokumen
Untuk memproses dokumen di atas:
- Pastikan Anda memiliki editor LaTeX yang terpasang (seperti TeX Live, MiKTeX, atau Overleaf).
- Salin kode LaTeX di atas ke dalam file baru bernama
perigals-dissection.tex. - Kompilasi dokumen menggunakan compiler pdfLaTeX atau XeLaTeX.
- Paket
previewakan secara otomatis memotong PDF keluaran agar pas dengan ukuran grafik.
Kesimpulan
Diseksi Perigal memberikan bukti visual yang sangat menakjubkan bagi Teorema Pythagoras tanpa membutuhkan persamaan aljabar yang rumit. Dengan bantuan pustaka math dan intersections pada TikZ LaTeX, kita dapat memvisualisasikan teori-teori geometri klasik secara interaktif, presisi, dan estetis. Selamat mencoba dan berkreasi!




