Vẽ hình học phẳng với metapost -1

Bài toán vẽ chuỗi dây chuyền papus. Trong mặt phẳng cho ba điểm $A, C, B$ thẳng hàng theo thứ tự đó. Dựng các đường tròn đường kính $AB$ và $AC$. Hãy vẽ các đường tròn tiếp xúc ngoài nhau, tiếp xúc trong với đường tròn lớn và tiếp xúc ngoài với đường tròn nhỏ trong hai đường tròn nói trên.

 

khaibao3

 

Dùng phép nghịch đảo cực A nhận đường tròn tâm $A$ bán kính $AB$ làm đường tròn nghịch đảo.

Khi đó đường tròn đường kính $AB$ sẽ biến thành đường thẳng $d_B$ tiếp xúc với đường tròn nghịch đảo tại $B$,

đường tròn đường kính $AC$ sẽ biến thành đường thẳng $d_D$ song song với đường thẳng $d_B$ và đi qua điểm $D$ là ảnh của $C$ qua phép nghịch đảo (điểm $D$ hoàn toàn dựng được bằng thước kẻ và com-pa).
 
khaibao4
Ta vẽ đường tròn đường kính $CB$ và ảnh của nó qua phép nghịch đảo, ảnh này chính là đường tròn đường kính BD.
khaibao5
 
Dùng phép tịnh tiến ta vẽ các đường tròn bằng đường tròn đường kính $BD$ và tiếp xúc với đường tròn đó.
khaibao6
 
Bây giờ ta dùng phép nghịch đảo để biến các hình tròn trong rãnh $d_B;d_D$ thành các hình tròn trong vành đai như trong hình dưới đây:
khaibao7
 

1. Khai báo.
khaibao1

 

 

Bắt đầu vào metapost sử dụng gói geom2d.mp , khai báo các độ dài và các điểm dựa vào độ dài đã khai báo.
 
\thispagestyle{empty}
\begin{mplibcode}
input geom2d;
gddU:=1.25cm;
beginfig(1);
r = 2.5;
R = 3.5;
A = Point(0,0);
B = Point(2R,0);
C = Point(2r,0);


Ta định nghĩa và ra lệnh vẽ các đường tròn: đường tròn nghịch đảo $C_A$, đường tròn $C_V$ đường kính $AB$, đường tròn $C_U$ đường kính $AC$, đường tròn đường kính $CB$ và hai đường thẳng song song là ảnh của $C_U, C_V$ qua phép nghịch đảo. Vẽ đường tròn đường kính $BD$ là ảnh của đường tròn đường kính $CB$, đồng thời xác định tâm và bán kính của nó.

C_A = Cercle(A,2*R); trace C_A dashed evenly;
C_V = CercleD(A,B); trace C_V avecCrayon(1.5,Blue);
C_U = CercleD(A,C); trace C_U avecCrayon(2,Red);
C_CB=CercleD(C,B); trace C_CB avecCrayon(1.3,DodgerBlue);
I_CU = Inversion(C_U,C_A); trace I_CU avecCrayon(2,Red);
I_CV = Inversion(C_V,C_A); trace I_CV avecCrayon(1,5,Blue);
L_AB = Droite(A,B); trace L_AB dashed evenly;
Up = IntersectionDroites(L_AB,I_CU);
Vp = IntersectionDroites(L_AB,I_CV);
Cp0 = CercleD(Vp,Up); trace Cp0;
Rp= Rayon(Cp0);
Ip[0] = Milieu(Vp,Up); pointe(Ip[0]);

 
Ta dùng vòng lặp để vẽ $38$ đường tròn trong rãnh $d_B;d_D$, sau đó dùng phép nghịch đảo để vẽ $38$ đường tròn nằm trong vành đai tạo bởi hai đường tròn ban đầu. Chú ý dòng lệnh thứ 3 ở dưới bị thiếu ký tự, hãy đổi if(i0) thành kb1 1

N=19;
for i:=-N upto N:
if(i0):
Ip[i] = Addition(Ip[0],Point(0,i*2*Rp));
Mp[i] = Addition(Ip[i],Point(-Rp,0));
Mq[i] = Addition(Ip[i],Point(Rp,0));
Mr[i] = Addition(Ip[i],Point(0,-Rp));
Np[i] = Inversion(Mp[i],C_A);
Nq[i] = Inversion(Mq[i],C_A);
Nr[i] = Inversion(Mr[i],C_A);
T[i]=CercleTroisPoints(Mp[i],Mq[i],Mr[i]) ; trace(T[i]) avecCrayon(1.5,red);
t[i]=CercleTroisPoints(Np[i],Nq[i],Nr[i]) ; trace(t[i]) avecCrayon(1.5,blue);
fi
endfor;


 
Cuối cùng viết tên các điểm tham gia vào việc dựng hình.

marque.ulft "A"; marque.lrt "B"; marque.lrt "C";
Fenetre(-1,-2.5R,3*R,3*R);
endfig;
\end{mplibcode}

khaibao2

 

Chia sẻ

About TS. Nguyễn Thái Sơn

TS. Nguyễn Thái Sơn
Nguyên trưởng Khoa Toán-Tin học ĐHSP TP HCM (1999-2009). Nguyên Giám đốc- Tổng biên tập NXB ĐHSP TP HCM (2009-2011). Nguyên Tổng thư ký Hội Toán học TP HCM (2008-2013).

Bài Viết Tương Tự

Ký hiệu Toán học LaTeX