You are on page 1of 6

L thuyt hnh hc trong ton tin

Nguyn Th Anh
1. im, ng thng, on thng:
a. im (Point):
Trong hnh hc, chng ta xt trong h cc xoy, th mt im c to : (x,y).
Chnh v th ta lu ta mt im trong mt bn ghi Record:
Type
point = Record
x , y : integer ;
End ;
Point_Chung = Record
x ,y : Real ;
End ;
Chnh v vy khi xt ti to ca P(x,y) th ta xt P.x, P.y
Chng ta bit khong cch gia hai im P(x1,y1)v Q(x2,y2) trong mt phng:
Function Khoang_Cach(P,Q: Point_Chung ) : Real ;
Begin
Khoang_Cach:=Sqrt(Sqr(P.x-Q.x)+Sqr(P.y-Q.y));
End ;
b. ng thng (line):
Trong hnh hc, chng ta c phng trnh ca mt ng thng trong mt phng:
Ax+By+C =0. Chng ta coi A, B, C l biu din cho ng thng . Nu mt ng
thng (d):
Ax + By + C = 0, i qua 2 im A (x1,y1) v B(x2,y2) th n c:
A:= y1- y2;
B:= x2 - x1;
C:= -(A.x1+B.y1).
Chnh v th chng ta dng th tc xc nh A, B, C ca mt ng thng i qua 2 im
nh sau:
Procedure Xac_DinhABC(P, Q: Point, var A , B , C: Longint );
Begin
A := P.y-Q.y ;
B := Q.x-P.x ;
C := -(A*P.x+B*P.y ) ;
End ;
V chng ta c th coi ng thng l mt kiu:
Type
Lines = Record
a , b , c : Longint;
End ;
Ch :
* Lines ch khng phi l Line, v trong Pascal c th tc Line v ng thng.

Thng thng chng ta lm bi hnh hc quan st trc quan th chng ta thng biu
din ln hnh v. Chnh v th chng ta cn phi trnh nhng sai st khng ng c.
* S d chng ta phi khai bo A, B, C trong Longint v nu chng ta lu A, B, C trong
Longint th lc chng ta tnh ton phng trnh khng trn b nh s hc.
c. on thng:
on thng l mt phn ca ng thng, b gii hn x, y. Chng ta xt on thng thng
thng cho i qua 2 im. Chnh v th to x, y b gii hn trong khong .
2. Phng trnh tng quan gia im v ng thng, on thng:
a. Tng quan gia im v ng thng:
Cho ng thng (d) c phng trnh: Ax +By + C = 0 v P(x,y).
Th phng trnh:
F(x,y) = A*P.x + B*P.y + C, l phng trnh tng quan ca P vi (d). ng vy:
* Nu F (x,y)=0 th P thuc (d). Ngc li nu F(x,y)<>0 th P khng thuc (d).
* Nu Q (x1,y1) m nm cng pha khng thuc (d) th F (x1,y1)*F(x,y)>0, v nu khc
pha th F(x1,y1)*F(x,y)<0. y l mt trong nhng iu kin gip ch cho ta rt nhiu
trong gii ton tin hnh hc v cng l mt phng tin thit k chng trnh trong hnh
hc d dng hn.
Chng ta xy dng hm Phuong_Trinh xc nh mi tng quan ca ng thng vi
mt im:
Function Phuong_trinh (L : Lines ; P : Point_Chung ) : Real ;
Begin
Phuong_Trinh:=L.a*P.x+L.b*P.y+L.c;
End ;
b. Tng quan ca im vi on thng.
Chng ta bit rng, on thng l mt phn ng thng. Nn mi tng quan gia im
P(x,y) vi on thng AB, (A (x1,y1), B(x2,y2)) l:
- Nu P[AB] th:
+ F(x,y)=0, tc l: a*x+b*y+c=0, vi a=y1-y2; b=x2-x1 v c=- (a*x1+b*y1).
+ (x-x1)*(x-x2)<=0 v (y-y1)*(y-y2)<=0.
- Nu P[AB] th:
+ Nu F(x,y)=0 th: (x-x1)*(x-x2)>0 hoc (y-y1)*(y-y2)>0.
+ Nu F(x,y)<>0 th P khng thuc ng thng qua A, B.
Ta c th xy dng hm kim tra 1 im P c thuc on AB nh sau:
Function thuoc_doan ( P : Point_Chung ; A, B : Point ) : Boolean ;
Var a , b , c : longint ; t : Real ;
Begin
xac_dinhABC (A, B ,a,b,c) ;
thuoc_doan:=false ;
t := a * P.x + b*P.y + c ;
if t<>0 then exit ;
if ( (P.x-A.x)*(P.x-B.x)>0)
r((P.y-A.y) * (P.y-B.y)>0)
then
Exit ;
thuoc_doan:=True;
End ;

3. Ct nhau:
a. ng thng ct ng thng:
(1): A1*x+B1*y+C1=0 v (2): A2*x+B2*y+C2=0. Th ta gi mi tng quan gia (1)v
(2) c biu din qua h phng trnh sau:
A1*x+B1*y=-C1
A2*x+B2*y=-C2
t: D=A1*B2-A2*B1;
Dx=B1*C2 - B2*C1;
Dy=C1*B2-A1*C2
* Hai ng thng ct nhau khi v ch khi: D0. To im giao ca hai ng thng
ny l: x=Dx/D, y= Dy/D
* Hai ng thng song song vi nhau khi v ch khi: D=0 v Dx 0 hoc Dy 0.
* Hai ng thng trng nhau khi: D=Dx=Dy=0.
Chng ta c th xy dng hm kim tra ct nhau ca hai ng thng.
Hm Lines_Cut c gi tr:
1: Nu hai ng thng ct nhau
2: Nu hai ng thng song song nhau
3: Nu hai ng thng trng nhau.
Function Lines_cut ( L1 , L2 : Lines ) : Byte ;
var D, Dx,Dy : Longint ;
Begin
D := L1.a*L2.b -L2.a*L1.b;
Dx :=L1.b*L2.c-L1.c*L2.B ;
Dy:=L1.c*L2.b-L1.b*L2.c ;
If D<>0 then Lines_cut:=1
else If D=0 then
Begin
If (Dx<>0)Or(Dy<>0)Then
Lines_cut:=2 ;
If (Dx=0)And(Dy=0)
ThenLines_Cut:=3;
End ;
End ;
b. ng thng ct on thng:
(1): A1*x+B1*y+C1=0 v on AB, A (x1,y1), B(x2,y2).
t A2:=y1-y2; B2:=x2-x1;
C2:=-(A2*x1+B2*y)
D=A1*B2-A2*B1; Dx=B1*C2 -B2*C1; Dy=C1*B2-A1*C2
Mi quan h gia (1) v AB c th hin:
* Nu D 0 v im P(Dx/D,Dy/D) nm trn on AB th (1) ct AB.
* Nu D 0 v im P(Dx/D,Dy/D) nm ngoi on AB th (1) ct ng thng cha AB
nhng khng ct AB.
* Nu D=Dx=Dy=0 th AB(1).
* Nu D=0, Dx/D0 hoc Dy/D0 th AB song song vi (1).
Chng ta xy dng hm: Lines_Cut_AB
Lines_Cut_AB bng:

1: Nu on thng ct ng thng.
2: Nu on thng song song vi ng thng
3: Nu on thng thuc ng thng.
4: Nu ng thng cha on thng ct ng thng mt im nm ngoi ng thng.
Function Lines_Cut_AB (L1:Lines ; P,Q : Point ): Byte;
Var L2 : Lines;
Giao : Point_Chung ;
D , Dx , Dy : Longint ;
Begin
With L2 do Xac_DinhABC (P,Q,a,b,c);
D := L1.a*L2.b -L2.a*L1.b;
Dx :=L1.b*L2.c-L1.c*L2.B ;
Dy:=L1.c*L2.b-L1.b*L2.c ;
If D=0 Then
Begin If (Dx=0)And (Dy=0)Then Lines_Cut_AB:=3;
If ( Dx<>0)Or(Dy<>0)Then Lines_Cut_AB:=2 ;
End ;
If D<>0 Then
Begin
Giao.x := Dx/D ;
Giao.y := Dy/D ;
If Thuoc_Doan (Giao,P,Q) then
Lines_Cut_AB:=1
Else Lines_Cut_AB:=4 ;
End ;
End ;
c. on thng ct on thng:
Xt hai on thng AB v CD th chng ct nhau hay khng th chng ta c th xt theo
hai cch. Trong bi ny ti xin ngh c hai cch, mi cch c nhng u, nhc im
khc nhau.
Cch 1:
Cch Theo Phng Trnh ng Thng:
Function Cat_Nhau1 (P,Q,M,N: Point) : Boolean ;
Var L : Lines ;
Begin
Cat_Nhau1:=False;
With L Do
Xac_DinhABC(P,Q,a,b,c);
If Lines_Cut_AB(L,M,N)<>1 then Exit;
With L Do
Xac_DinhABC(M,N,a,b,c);
If Lines_Cut_AB(L,P,Q)<>1 then Exit ;
Cat_Nhau1:=True ;
End ;
Cch 2:
(Tham kho sch Cm nang thut ton - tp 2)

Function ccw ( P0 , p1 , p2 : Point ) : Integer ;


Var Dx1,Dx2,Dy1,Dy2: Integer ;
Begin
Dx1 := P1. x -P0.x ;
Dy1 :=P1.y-P0.y ;
Dx2 := P2. x -P0.x ;
y2 :=P2.y-P0.y ;
If Dx1*Dy2>Dy1*Dx2 then
ccw :=1 ;
If Dx1*Dy2
ccw := -1 ;
If Dx1*Dy2=Dx2*Dy1 then
Begin
If (Dx1*Dx2<0) Or (Dy1*Dy2<0)
Then ccw:=-1
Else If (Dx1*Dx1+Dy1*Dy1) >= (Dx2*Dx2+Dy2*Dy2) then
ccw:=0
else ccw:=1 ;
End ;
End ;
Function Cat_Nhau2(P,Q,M,N : Point) : Boolean ;
Begin
Cat_Nhau2:=((ccw(P,Q,M)*ccw(P,Q,N))<=0)And ((ccw(M,N,P)*ccw(M,N,Q))<=0)
End ;
4. a gic:
a. Tam gic:
Mt tam gic c nh ngha l tp ba im khng thng hng: A (x1,y1); B(x2,y2);
C(x3,y3).
Chng ta c th tnh din tch tam gic theo cng thc tnh din tch a gic (cng thc
hnh thang hoc cng thc Pic m ti s bn sau). Hoc chng ta tnh theo cng thc
Herong:
S:=Sqrt((p-a)*(p-b)*(p-c)*p);
Trong a, b, c l di ba cnh ca tam gic. P=(a+b+c)/2;
b. Hnh ch nht: (trng hp cho cch cnh song song cc trc to ).
Chng ta xt trong h ta mt hnh ch nht ABCD, A (x1,y1); B(x2,y2); C(x3,y3); D
(x4,y4).
Nhng c mt iu c bit l chng ta ch cn xc nh to nh ca hai nh i
nhau th xc nh c mt hnh ch nht duy nht. Chnh v th thng thng chng ta
gi to ca im di tri v nh trn phi l hai im c trng cho hnh ch nht
.
c. Hnh a gic:
Mt a gic A1A2An c to : Ai (xi ,yi).
* Ngi ta nh ngha a gic l li khi mi im cn li ca a gic nm cng pha
vi nhau so vi mt cnh no .
* Din tch mt a gic c tnh theo cng thc hnh thang nh sau:
S : = |[(Xi-Xi+1)*(Yi+Yi+1)/2]|

d. Bao li:
(Ch gii thiu, phn chi tit ng s bo trc).
Bao li ca mt tp im l mt hnh a gic khp kn c cc nh l mt trong cc nh
ca tp im , v tho mn a gic li. Thng thng chng ta cn phi tm a gic
bao vi chu vi nh nht. C nhiu thut ton gii quyt bi ton ny. c bit phng
php qut:
Phng php qut ng thng:
Chng ta i t mt nh chc chn thuc bao li (l nhng im c tung honh ln
nht hoc nh nht). Chng ta tm cc nh tip theo, nh no tho mn cha ton b cc
nh cn li mt bn mt phng th ta ly im cho n khi lp li im ban u.
Th tc gii quyt n nh sau:
Procedure Scan;
Begin
Xc nh thuc a gic ;
Repeat
tm nh tip theo m tho mn iu kin li ca a gic ;
Until lp li nh ban u ;
End ;
Nhng bi ton hnh hc th khng kh v gii thut nhng li rm r v chng trnh.
Chnh v th ch cn mt sai st nh th chng ta s khng th no c th sa chng
trnh trong thi gian cho php, c bit l khi ngi trong phng thi tm trng khng n
nh. Chnh v th hc phn ny mt cch bi bn, nghim tc th chng s hn khng
kh i vi chng ta. Khng nn khinh thng nhng th s ng nh trn. Nu cc bn
mun c b bi tp v hnh hc th c gi mail cho mnh. Rt mong nhn c th ca
cc bn

You might also like