P. 1
Clipping

Clipping

|Views: 1|Likes:
Published by Hoai Nguyen Quy
Cad
Cad

More info:

Categories:Types, School Work
Published by: Hoai Nguyen Quy on May 06, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

09/29/2015

pdf

text

original

ÑOÀ HOÏA MAÙY TÍNH

Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 1/11
C
C
a
a
ù
ù
c
c
t
t
h
h
u
u
a
a
ä
ä
t
t
t
t
o
o
a
a
ù
ù
n
n
x
x
e
e
ù
ù
n
n
ñ
ñ
i
i
e
e
å
å
m
m
,
,
ñ
ñ
o
o
a
a
ï
ï
n
n
t
t
h
h
a
a
ú
ú
n
n
g
g
Ð Ða a n n n nh ha a p p
• Thao fac IoaI bo cac phan hình anh nam ngoaI mof
vung cho fruoc duoc goI Ia xon hình.
• Vung duoc dung do xon hình goI Ia cua so xon |cIIp
vIndov).
• Cho cua so hình chu nhaf co foa do cua cac dIom
duoI bon fraI va dIom fron bon phaI Ian Iuof Ia
( )
mIn mIn
, y x
va
( )
max max
, y x
.
• Mof dIom
( ) y x P ,
duoc coI Ia nam bon frong cua so
nou fhoa ho baf phuong frình :



≤ ≤
≤ ≤
max mIn
max mIn
y y y
x x x
.
• Ðay gIo, fa so xof baI foan xon doan fhang duoc cho
boI haI dIom
( )
1 1 1
, y x P
va
( )
2 2 2
, y x P
vao cua so hình
chu nhaf fron.
(a)
Window
P
1
P
2
P
3
P
4
P
5
P
6
P
7
P
8
(b)
Window
P
1
P
2
P'
5
P'
6
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 2/11
V Va a n n d do o f fo o I I u uu u h ho o a a f fo o c c d do o
• Y fuong chung :
♦ ÐoI voI cac doan fhang dac bIof nhu nam hoan foan
frong hoac hoan foan bon ngoaI cua so |ví du nhu doan
P
1
P
2
va P
3
P
4
frong hình fron) : khong can phaI fìm gIao
dIom.
♦ ÐoI voI cac doan fhang co kha nang caf cua so : can phaI
dua ra cach fìm gIao dIom nhanh.
• Nhan xof
♦ Cac doan fhang ma co ca haI dIom nam hoan foan frong
cua so fhì ca doan fhang nam frong cua so, day cung
chính Ia kof qua sau khI xon |ví du nhu doan fhang
P
1
P
2
), maf khac doI voI cac doan fhang ma co haI dIom
nam vo cung mof phía cua cua so fhì Iuon nam ngoaI cua
so va so bj maf sau khI xon |ví du nhu doan fhang P
3
P
4
).
♦ VoI cac doan fhang co kha nang caf cua so |ví du nhu
doan fhang P
5
P
6
va P
7
P
8
) do vIoc fìm gIao dIom nhanh
can ruf gon vIoc fìm gIao dIom voI nhung bieân cöûa soå
khoâng caàn thieát do xac djnh phan gIao nou co cua doan
fhang va cua so.
• NguoI fa fhuong su dung phuong frình fham so cua
doan fhang frong vIoc fìm gIao dIom gIua doan fhang
voI cua so.
( )
( ) 1 0 , ,
,
1 2 1 1 2 1
1 2 1 1 2 1
≤ ≤ − = + = − + =
− = + = − + =
t y y Dy tDy y y y t y y
x x Dx tDx x x x t x x
• Nou gIao dIom ung voI gIa frj f nam ngoaI doan [ ] 1 , 0
fhì gIao dIom do so khong fhuoc vo cua so.
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 3/11
T Th hu ua a f f f fo oa a n n C Co oh ho on n - - S Su uf fh ho or rI Ia an nd d
• Koo daI cac bIon cua cua so, fa chIa maf phang
fhanh chín vung gom cua so va fam vung xung
quanh no.
• KhaI nIom ma vung |aroa codo)
♦ Mof con so 4 bIf nhj phan goI Ia ma vung so duoc gan
cho moI vung do mo fa vj frí fuong doI cua vung do so voI
cua so.
♦ Ðang cach danh so fu 1 don 4 fhoo fhu fu fu phaI qua
fraI, cac bIf cua ma vung duoc dung fhoo quy uoc sau do
chI mof frong bon vj frí fuong doI cua vung so voI cua so
bao gom : fraI, phaI, fron, duoI. Ví du :
ÐIf 1 : fraI |IÐIT)
ÐIf 2 : phaI |RICHT)
ÐIf 3 : fron |TOP)
ÐIf 4 : duoI |ÐOTTOM)
♦ CIa frj 1 fuong ung voI vj frí bIf nao frong ma vung so
chI ra rang dIom do o vj frí uong ung, nguoc IaI bIf do so
duoc daf bang 0.
♦ Cac gIa frj bIf frong ma vung duoc fính bang cach xac
djnh foa do cua dIom
( ) y x,
fhuoc vung do voI cac bIon
cua cua so. ÐIf 1 duoc daf Ia 1 nou
mIn
x x <
, cac bIf khac
duoc fính fuong fu.
0100
Window
0110 0101
0001
1001
0010
1010 1000
0000
1 2 3 4
LEFT
RIGHT
TOP
BOTTOM
TOP
LEFT RIGHT
BOTTOM
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 4/11
T Th hu ua a f f f fo oa a n n
• Can ma vung fuong ung cho cac dIom dau cuoI
2 1
, P P
cua doan fhang can xon Ian Iuof Ia
2 1
, c c
. Ta
co nhan xof :
♦ Cac doan fhang nam hoan foan bon frong cua so so co
0000
2 1
= = c c
, ung voI cac doan nay, kof qua sau khI
xon Ia chính no.
♦ Nou fon faI
4 ,.. 1 ∈ k
, sao cho voI bIf fhu k cua
2 1
, c c
dou
co gIa frj 1, Iuc nay doan fhang so nam vo cung phía ung
voI bIf k so voI cua so, do do nam hoan foan ngoaI cua
so. Ðoan nay so bj IoaI bo sau khI xon. Ðo xac djnh fính
chaf nay, don gIan chI can fhuc hIon phop foan IogIc
ANÐ fron 2 1
, c c
. Nou kof qua khac 0000, doan fhang so
nam hoan foan ngoaI cua so.
♦ Nou 2 1
, c c
khong fhuoc vo haI fruong hop fron, doan
fhang co fho hoac khong caf ngang cua so, chac chan so
fon faI mof dIom nam ngoaI cua so, khong maf fính fong
quaf gIa su dIom do Ia
1
P
. Ðang cach xof ma vung cua
1
P
Ia 1
c
fa co fho xac djnh duoc cac bIon ma doan
fhang co fho caf do fu do chon mof bIon va fIon hanh
fìm gIao dIom
'
1
P
cua doan fhang voI bIon do. Iuc nay,
doan fhang ban dau duoc xon fhanh
'
1 1
P P
. Sau do chung
fa IaI Iap IaI fhao fac da xof cho doan fhang moI
'
1 1
P P
cho foI khI xac djnh duoc phan nam frong hoac IoaI bo
foan bo doan fhang.
♦ Cac dIom gIao voI cac bIon cua so cua doan fhang co fho
duoc fính fu phuong frình fham so. Ví du : fung do y cua
dIom gIao doan fhang voI bIon dung cua cua so co fho
fính fu cong fhuc
( )
1 1
x x m y y − + =
, frong do x co fho Ia
mIn
x
hay
max
x
.
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 5/11
Löu ñoà thuaät toaùn Cohen - Sutherland
// Ðoan CT fính ma vung
void EnCode(POINT p, CODE &c, RECT rWin)
{
c = 0;
if(p.x < rWin.Left)
c |= LEFT;
if(p.x > rWin.Right)
c |= RIGHT;
if(p.y > rWin.Top)
c |= TOP;
if(p.y < rWin.Bottom)
c |= BOTTOM;
}
Begin
EnCode(P1,c1);
EnCode(P2,c2)
(c1!=0000) || (c2!=0000)
Yes
(c1&c2 == 0000)
Yes
Xcc c|nh g|cc c|em cUc cccn
lhcng vc| c|en cUc cUc ºc
ccng ccch xel mc vUng cUc
c|em ncm ngcc| cUc ºc
No
No
End
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 6/11
T Th hu ua a f f f fo oa a n n I II Ia an ng g - - Ð Ða ar rs sk ky y
• Thuaf foan IIang-Ðarsky duoc phaf frIon dua vao
vIoc phan fích dang fham so cua phuong frình doan
fhang.
( )
( ) 1 0 , ,
,
1 2 1 1 2 1
1 2 1 1 2 1
≤ ≤ − = + = − + =
− = + = − + =
t y y Dy tDy y y y t y y
x x Dx tDx x x x t x x
• !ng voI moI gIa frj f, fa so co mof dIom P fuong ung
fhuoc duong fhang.
♦ Cac dIom ung voI
1 ≥ t
so fhuoc vo fIa P
2
x.
♦ Cac dIom ung voI
0 ≤ t
so fhuoc vo fIa P
2
x’.
♦ Cac dIom ung voI
1 0 ≤ ≤ t
so fhuoc vo doan fhang
2 1
P P
.
• Tap hop cac dIom fhuoc vo phan gIao cua doan fhang
va cua so ung voI cac gIa frj f fhoa ho baf phuong
frình :





≤ ≤
≤ + ≤
≤ + ≤
1 0
max 1 mIn
max 1 mIn
t
y tDy y y
x tDx x x
P1(x1, y1)
P
2
(x
2
, y
2
)
t=0
t=1
t>1
x
x'
t<0
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 7/11
• Ðaf
1 max 4 4
mIn 1 3 3
1 max 2 2
mIn 1 1 1
,
,
,
,
y y q Dy p
y y q Dy p
x x q Dx p
x x q Dx p
− = =
− = − =
− = =
− = − =
• Iuc nay fa vIof ho phuong frình fron duoI dang :



≤ ≤
= ≤
1 f 0
4 , 3 , 2 , 1 , k q t p
k k
• Nhu vay vIoc fìm doan gIao fhuc chaf Ia fìm nghIom
cua ho baf phuong frình nay. Co haI kha nang xay
ra do Ia :
♦ Ho baf phuong frình vo nghIom, nghIa Ia duong fhang
khong co phan gIao voI cua so non so bj IoaI bo.
♦ Ho baf phuong frình co nghIom, Iuc nay fap nghIom so
Ia cac gIa frj f fhoa
[ ] [ ] 1 , 0 ,
2 1
⊆ ∈ t t t
.
• Ta xof cac fruong hop :
♦ Nou
{ } ) 0 | ) 0 | : 4 , 3 , 2 , 1 < ∧ = ∈ ∃
k k
q p k
fhì ro rang baf
phuong frình ung voI k fron Ia vo nghIom, do do ho vo
nghIom.
♦ Nou
{ } ) 0 | ) 0 | : 4 , 3 , 2 , 1 ≥ ∨ ≠ ∈ ∀
k k
q p k
fhì voI cac baf
phuong frình ma ung voI p
k
= 0 Ia cac baf phuong frình
hIon nhIon, Iuc nay ho baf phuong frình can gIaI fuong
duong voI ho baf phuong frình co p
k
≠ 0.
♦ VoI cac baf phuong frình
k k
q t p ≤
ma
0 <
k
p
, fa co
k k
p q t / ≥
.
♦ VoI cac baf phuong frình
k k
q t p ≤
ma
0 >
k
p
, fa co
k k
p q t / ≤
.
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 8/11
• Vay nghIom cua ho baf phuong frình Ia
[ ]
2 1
, t t
voI :
{ }
{ }


















> =






< =
2 1
2
1
) 1 0 , mIn|
) 0 0 , max|
t t
p
p
q
t
p
p
q
t
k
k
k
k
k
k
U
U
• Nou ho fron co nghIom fhì doan gIao
2 1
Q Q
so Ia
) , | ), , |
2 1 2 1 2 1 1 1 1 1
Dy t y Dx t x Q Dy t y Dx t x Q + + + +
.
• Nou xof fhuaf foan nay o khía canh hình hoc fa co :
♦ Truong hop
{ } ) 0 | ) 0 | : 4 , 3 , 2 , 1 < ∧ = ∈ ∃
k k
q p k
fuong ung
voI fruong hop doan fhang can xof song song voI mof
frong cac bIon cua cua so |
0 =
k
p
) va nam ngoaI cua so
|
0 <
k
q
) non so bj IoaI bo sau khI xon.
♦ VoI
0 ≠
k
p
, gIa frj
k k k
p q r t / = =
so fuong ung voI
gIao dIom cua doan fhang voI bIon k koo daI cua cua so.
Truong hop
0 <
k
p
, koo daI cac bIon cua so va doan
fhang vo vo cuc, fa co duong fhang dang xof so co huong
dI fu bon ngoaI vao bon frong cua so. Nou
0 >
k
p
, duong
fhang so co huong dI fu bon frong cua so dI ra. Ðo do haI
dau muf cua doan gIao so ung voI cac gIa frj
2 1
, t t
duoc
fính nhu sau : CIa frj
1
t
chính Ia gIa frj Ion nhaf cua cac
k k k
p q r / =
ma
0 <
k
p
|duong fhang dI fu ngoaI vao
frong cua so) va 0; gIa frj
2
t
chính Ia gIa frj nho nhaf
cua cac
k k k
p q r / =
ma
0 >
k
p
|duong fhang dI fu frong
cua so dI ra) va 1.
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 9/11
T
T
h
h
u
u
a
a
ä
ä
t
t
t
t
o
o
a
a
ù
ù
n
n
x
x
e
e
ù
ù
n
n
ñ
ñ
a
a
g
g
i
i
a
a
ù
ù
c
c
S
S
u
u
t
t
h
h
e
e
r
r
l
l
a
a
n
n
d
d
-
-
H
H
o
o
d
d
g
g
e
e
m
m
a
a
n
n
d
d
Ð Ða a n n n nh ha a p p
• Chung fa co fho hIou chInh cac fhuaf foan xon doan
fhang do xon da gIac bang cach xom da gIac nhu Ia
mof fap cac doan fhang IIon fIop noI voI nhau. Tuy
nhIon, kof qua sau khI xon nhIou khI IaI Ia fap cac
doan fhang roI nhau.
• ÐIou chung fa mong muon o day do Ia kof qua sau
khI xon phaI Ia mof cac da gIac do sau nay co fho
chuyon fhanh cac vung fo.
(a) (b) (c)
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 10/11
T Th hu ua a f f f fo oa a n n S Su uf fh ho or rI Ia an nd d - - H Ho od dg go om ma an n
• Thuaf foan nay so fIon hanh xon da gIac Ian Iuof voI
cac bIon cua so. Ðau fIon, da gIac so duoc xon doc
fhoo bIon fraI cua cua so, kof qua sau buoc nay so
duoc dung do xon fIop bIon phaI, roI cu fuong fu nhu
vay cho cac bIon fron, duoI. Sau khI xon hof voI bon
bIon cua cua so, fa duoc kof qua cuoI cung.
• VoI moI Ian xon da gIac doc fhoo mof bIon nao do
cua cua so, nou goI
1
,
+ i i
V V
Ia haI dInh ko canh
1 + i i
V V
, fa co 4 fruong hop co fho xay ra khI xof fung
cap dInh cua da gIac ban dau voI bIon cua cua so nhu
sau:
♦ Nou
i
V
nam ngoaI,
1 + i
V
nam frong, fa Iuu gIao dIom I
cua
1 + i i
V V
voI bIon cua cua so va
1 + i
V
.
♦ Nou ca i
V
,
1 + i
V
dou nam frong, fa so Iuu ca i
V
,
1 + i
V
.
♦ Nou
i
V
nam frong,
1 + i
V
nam ngoaI, fa so Iuu i
V
va I.
♦ Nou ca
i
V
, 1 + i
V
dou nam ngoaI, fa khong Iuu gì ca.
V
i
V
i+1
I V
i
V
i+1
V
i
V
i+1
I
(i)
V
i
V
i+1
(ii) (iii) (iv)
ÑOÀ HOÏA MAÙY TÍNH
Döông Anh Ñöùc, Leâ Ñình Duy Caùc thuaät toaùn xeùn hình 11/11
Caøi ñaët haøm xeùn ña giaùc theo moät caïnh cuûa cöûa soå
void ClipEdge(POINT *pIn, int N, POINT *pOut, int &Cnt, int Edge, RECT rWin)
{
int FlagPrevPt = FALSE;
Cnt = 0;
POINT pPrev;
pPrev = pIn[0];
if(Inside(pPrev, Edge, rWin)) // Save point
{
pOut[Cnt] = pPrev;
Cnt++;
FlagPrevPt = TRUE;
}
for(int i=1; i<N; i++)
{
if(FlagPrevPt) // Diem bat dau nam trong
{
if(Inside(pIn[i], Edge, rWin)) // Save point P
{
pOut[Cnt] = pIn[i];
Cnt++;
}
else // Save I
{
FlagPrevPt = FALSE;
pOut[Cnt] = Intersect(pPrev, pIn[i], Edge, rWin);
Cnt++;
}
}
else // Diem bat dau canh nam ngoai
{
if(Inside(pIn[i], Edge, rWin)) // Save point I, P
{
FlagPrevPt = TRUE;
pOut[Cnt] = Intersect(pPrev, pIn[i], Edge, rWin);
Cnt++;
pOut[Cnt] = pIn[i];
Cnt++;
}
}
pPrev = pIn[i];
}
// Neu Diem cuoi va dau giao voi bien cua cua so Save point I
if(!(Inside(pIn[N], Edge, rWin) == Inside(pPrev, Edge, rWin)))
{
pOut[Cnt] = Intersect(pPrev, pIn[N], Edge, rWin);
Cnt++;
}
pOut[Cnt] = pOut[0];
}// ClipEdge

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->