Top Banner
ÑOÀ HOÏA 2D ÑOÀ HOÏA 2D CAÙC PHEÙP BIEÁN ÑOÅI CAÙC PHEÙP BIEÁN ÑOÅI Giaûng vieân Buøi Tieán Leân
46

chuong_3b [Compatibility Mode].pdf

Jan 16, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: chuong_3b [Compatibility Mode].pdf

ÑOÀ HOÏA 2DÑOÀ HOÏA 2D

CAÙC PHEÙP BIEÁN ÑOÅICAÙC PHEÙP BIEÁN ÑOÅI

Giaûng vieân Buøi Tieán Leân

Page 2: chuong_3b [Compatibility Mode].pdf

Pheùp bieán ñoåi laø gì ?Pheùp bieán ñoåi laø gì ?

Pheùp bieán ñoåi laø moät aùnh xaï töø khoâng gian R2 vaøo R2 :-Bieán moät ñieåm P thaønh moät ñieåm P’-Bieán moät ñoái töôïng S thaønh ñoái töôïng S’

P’

T

Trang Trang Trang Trang Trang Trang Trang Trang 22222222

P

P’

S

S’

AÛnh

Page 3: chuong_3b [Compatibility Mode].pdf

Coâng thöùc pheùp bieán ñoåiCoâng thöùc pheùp bieán ñoåi

=

)P(T'P

haøm daïng ñoåi Bieán

P' P

R R : T

xaï aùnh daïng ñoåi Bieán22

Trang Trang Trang Trang Trang Trang Trang Trang 33333333

=

=

=

)P,P(TP

)P,P(T P

hay

)P(T'P

yxy'

y

yxx'

x

Page 4: chuong_3b [Compatibility Mode].pdf

Ñònh nghóa bieán ñoåi affineÑònh nghóa bieán ñoåi affine

Pheùp bieán ñoåi affine laø pheùp bieán ñoåi maø caùc haøm bieán ñoåi Tx, Ty coù daïng tuyeán tính.

Tx(x, y) = ax + cy + eTy(x, y) = bx + dy + f

Trang Trang Trang Trang Trang Trang Trang Trang 44444444

Page 5: chuong_3b [Compatibility Mode].pdf

Heä toïa ñoä thuaàn nhaátHeä toïa ñoä thuaàn nhaát

Heä toïa ñoä Ñeà caùc Heä toïa ñoä thuaàn nhaát

P(Px, Py) P(Px, Py, 1)

P(Px, Py) P(wPx, wPy, w)

Trang Trang Trang Trang Trang Trang Trang Trang 55555555

Page 6: chuong_3b [Compatibility Mode].pdf

Coâng thöùc xaùc ñònh aûnh cuûa moät ñieåmCoâng thöùc xaùc ñònh aûnh cuûa moät ñieåm

++=

++=

traän ma Daïng

fdPbPP

ecPaPP

haøm Daïng

yx'

y

yx'

x

Trang Trang Trang Trang Trang Trang Trang Trang 66666666

( ) ( )

=

=

1fe

0dc

0ba

.1PP1PP

hoaëc

M.P'P

traän ma Daïng

yx'

y'

x

Ma traän bieán ñoåi

Page 7: chuong_3b [Compatibility Mode].pdf

Coâng thöùc xaùc ñònh aûnh cuûa moät ñieåmCoâng thöùc xaùc ñònh aûnh cuûa moät ñieåm

++=

+=

ñoåi bieán traän ma daïng Hoaëc

4 2y 2x- y) (x,T

5 –3y 2x y) (x,T

haøm daïng ñoåi bieán thöùc Coâng

y

x

Trang Trang Trang Trang Trang Trang Trang Trang 77777777

145

023

022

ñoåi bieán traän ma daïng Hoaëc

Page 8: chuong_3b [Compatibility Mode].pdf

Caáu truùc döõ lieäuCaáu truùc döõ lieäu// Lưu thông tin phep bien doi affine

struct TAffine2D {

double M[3][3];

};

Trang Trang Trang Trang Trang Trang Trang Trang 88888888

Page 9: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi ñieåm Bieán ñoåi ñieåm –– Caøi ñaëtCaøi ñaëtTPoint2D TransformPoint2D(TAffine2D T, TPoint2D P)

{

TPoint2D Q;

Q.x = T.M[0][0]*P.x + T.M[1][0]*P.y + T.M[2][0];

Q.y = T.M[0][1]*P.x + T.M[1][1]*P.y + T.M[2][1];

return

Trang Trang Trang Trang Trang Trang Trang Trang 99999999

return Q;

}

Page 10: chuong_3b [Compatibility Mode].pdf

Caøi ñaëtCaøi ñaëtvoid Read_Transform_Convert_Draw_2D(CDC *pDC, char *filenamefilename, TAffine2D T){

. . .

TPoint2D P1, P2;

CPoint Q1, Q2;

int r, g, b;

// Doc doan thang tu tap tin

f >> P1.x >> P1.y >> P2.x >> P2.y >> r >> g >> b;

// Bien doi doan thang

P1 = TransformPoint2D(T, P1);

P2 = TransformPoint2D(T, P2);

ñoïcñoïc bieán ñoåibieán ñoåi xeùnxeùn chuyeån toïa ñoächuyeån toïa ñoä veõveõ

Trang Trang Trang Trang Trang Trang Trang Trang 1010101010101010

// Chuyen toa do doan thang

Q1 = ConvertWorldToScreen2D(P1);

Q2 = ConvertWorldToScreen2D(P2);

// Ve doan thang

pDC->MoveTo(Q1.x, Q1.y);

pDC->LineTo(Q2.x, Q2.y);

. . .

}

Page 11: chuong_3b [Compatibility Mode].pdf

Tính chaát pheùp bieán ñoåi affineTính chaát pheùp bieán ñoåi affine

Moät pheùp bieán ñoåi affine luoân coù 3 tính chaát-Baûo toaøn tính thaúng-Baûo toaøn tæ leä-Baûo toaøn song song

Trang Trang Trang Trang Trang Trang Trang Trang 1111111111111111

Page 12: chuong_3b [Compatibility Mode].pdf

Baûo toaøn tính thaúngBaûo toaøn tính thaúng

GTd laø ñöôøng thaúngd’ = T(d)

KL d’ laø ñöôøng thaúng

T

d d’

Trang Trang Trang Trang Trang Trang Trang Trang 1212121212121212

d d’

Page 13: chuong_3b [Compatibility Mode].pdf

Baûo toaøn tæ leäBaûo toaøn tæ leä

GT

A, B, C laø 3 ñieåm thaúng haøngA’ = T(A) B’ = T(B) C’ = T(C)

A

B

C

A’

B’

C’T

Trang Trang Trang Trang Trang Trang Trang Trang 1313131313131313

C’ = T(C)

KL A’:B’:C’ = A:B:C

A A’

Page 14: chuong_3b [Compatibility Mode].pdf

Baûo toaøn song songBaûo toaøn song song

GTd1 // d2

d1’ = T(d1)

d2’ = T(d2)

KL d1’ // d2

T

d d

d1’

d2’

Trang Trang Trang Trang Trang Trang Trang Trang 1414141414141414

d1d2

Page 15: chuong_3b [Compatibility Mode].pdf

Heä quaûHeä quaû

-Ñoaïn thaúng bieán thaønh ñoaïn thaúng.-Ña giaùc bieán thaønh ña giaùc.-Ñöôøng cong bezier bieán thaønh ñöôøng cong Bezier.

TT

Trang Trang Trang Trang Trang Trang Trang Trang 1515151515151515

T

Page 16: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi ñoái töôïngBieán ñoåi ñoái töôïng

Trang Trang Trang Trang Trang Trang Trang Trang 1616161616161616

Page 17: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi ñoái töôïngBieán ñoåi ñoái töôïng

Trang Trang Trang Trang Trang Trang Trang Trang 1717171717171717

Page 18: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi ñoái töôïngBieán ñoåi ñoái töôïng

Trang Trang Trang Trang Trang Trang Trang Trang 1818181818181818

Page 19: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi ñoái töôïngBieán ñoåi ñoái töôïng

Trang Trang Trang Trang Trang Trang Trang Trang 1919191919191919

Page 20: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi ñoái töôïngBieán ñoåi ñoái töôïng

Trang Trang Trang Trang Trang Trang Trang Trang 2020202020202020

Page 21: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi ñoái töôïngBieán ñoåi ñoái töôïng

Trang Trang Trang Trang Trang Trang Trang Trang 2121212121212121

Page 22: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi ñoái töôïngBieán ñoåi ñoái töôïng

Trang Trang Trang Trang Trang Trang Trang Trang 2222222222222222

Page 23: chuong_3b [Compatibility Mode].pdf

Coâng thöùc xaùc ñònh aûnh cuûa moät ñieåmCoâng thöùc xaùc ñònh aûnh cuûa moät ñieåm

( ) ( )

=

B' thaønh bieán B

145

023

022

122145

A' thaønh bieán A

Trang Trang Trang Trang Trang Trang Trang Trang 2323232323232323

( ) ( )

=

145

023

022

113103

B' thaønh bieán B

Page 24: chuong_3b [Compatibility Mode].pdf

Caùc pheùp bieán ñoåi affine cô sôûCaùc pheùp bieán ñoåi affine cô sôû

Coù 3 pheùp bieán ñoåi cô sôû-Pheùp tònh tieán-Pheùp quay-Pheùp tæ leä

Trang Trang Trang Trang Trang Trang Trang Trang 2424242424242424

Page 25: chuong_3b [Compatibility Mode].pdf

Pheùp tònh tieán (translation)Pheùp tònh tieán (translation)

Duøng ñeå thay ñoåi vò trí cuûa caùc ñoái töôïng töø vò trí naøy sang vò trí khaùc.Tham soá :- Ñoä dòch chuyeån treân truïc Ox : tx

- Ñoä dòch chuyeån treân truïc Oy : ty

Trang Trang Trang Trang Trang Trang Trang Trang 2525252525252525tx

ty

Page 26: chuong_3b [Compatibility Mode].pdf

Pheùp tònh tieán Pheùp tònh tieán –– coâng thöùccoâng thöùc

+=

+=

001

traän ma Daïng

tPP

tPP

haøm Daïng

yy'

y

xx'

x

Trang Trang Trang Trang Trang Trang Trang Trang 2626262626262626

=

1tt

010

001

M

yx

Page 27: chuong_3b [Compatibility Mode].pdf

Pheùp tònh tieán Pheùp tònh tieán –– Caøi ñaëtCaøi ñaëtTAffine2D BuildTranslation2D(double tx, double ty)

{

TAffine2D T;

T.M[0][0]=1; T.M[0][1]=0; T.M[0][2]=0;

T.M[1][0]=0; T.M[1][1]=1; T.M[1][2]=0;

T.M[2][0]=tx; T.M[2][1]=ty; T.M[2][2]=1;

Trang Trang Trang Trang Trang Trang Trang Trang 2727272727272727

return T;

}

Page 28: chuong_3b [Compatibility Mode].pdf

Pheùp quay (rotation)Pheùp quay (rotation)

Duøng ñeå thay ñoåi höôùng cuûa caùc ñoái töôïngTham soá :- Taâm quay : O- Goùc quay : α

Trang Trang Trang Trang Trang Trang Trang Trang 2828282828282828

O

α

Page 29: chuong_3b [Compatibility Mode].pdf

Pheùp quay Pheùp quay –– coâng thöùccoâng thöùc

αα

α+α=

α−α=

0sincos

traän ma Daïng

PcosPsinP

PsinPcosP

haøm Daïng

yx'

y

yx'

x

Trang Trang Trang Trang Trang Trang Trang Trang 2929292929292929

αα−

αα

=

100

0cossin

0sincos

M

Page 30: chuong_3b [Compatibility Mode].pdf

Pheùp quay Pheùp quay –– caøi ñaëtcaøi ñaëtTAffine2D BuildRotation2D(double alpha)

{

TAffine2D T;

alpha *= PI/180;

T.M[0][0]=cos(alpha); T.M[0][1]=sin(alpha); T.M[0][2]=0;

T.M[1][0]=-sin(alpha); T.M[1][1]=cos(alpha); T.M[1][2]=0;

T.M[2][0]=0; T.M[2][1]=0; T.M[2][2]=1;

Trang Trang Trang Trang Trang Trang Trang Trang 3030303030303030

return T;

}

Page 31: chuong_3b [Compatibility Mode].pdf

Pheùp tæ leä (scaling)Pheùp tæ leä (scaling)

Duøng ñeå thay ñoåi kích thöôùc cuûa caùc ñoái töôïngTham soá :- Taâm tæ leä : O- Heä soá tæ leä : sx, sy

Trang Trang Trang Trang Trang Trang Trang Trang 3131313131313131

O

Page 32: chuong_3b [Compatibility Mode].pdf

Pheùp tæ leä Pheùp tæ leä –– coâng thöùccoâng thöùc

=

=

00s

traän ma Daïng

PsP

PsP

haøm Daïng

x

yy'

y

xx'

x

Trang Trang Trang Trang Trang Trang Trang Trang 3232323232323232

=

100

0s0M y

x

Page 33: chuong_3b [Compatibility Mode].pdf

Pheùp tæ leä Pheùp tæ leä –– caøi ñaëtcaøi ñaëtTAffine2D BuildScaling2D(double sx, double sy)

{

TAffine2D T;

T.M[0][0]=sx; T.M[0][1]=0; T.M[0][2]=0;

T.M[1][0]=0; T.M[1][1]=sy; T.M[1][2]=0;

T.M[2][0]=0; T.M[2][1]=0; T.M[2][2]=1;

Trang Trang Trang Trang Trang Trang Trang Trang 3333333333333333

return T;

}

Page 34: chuong_3b [Compatibility Mode].pdf

Nguyeân lyù keát hôïp caùc pheùp bieán ñoåiNguyeân lyù keát hôïp caùc pheùp bieán ñoåi

Neáu T1, T2 laø pheùp bieán ñoåi affineThì

- T = T1 + T2 laø pheùp bieán ñoåi affine- M = M1 x M2

Trang Trang Trang Trang Trang Trang Trang Trang 3434343434343434

T1, M1 T2, M2

T, M

Page 35: chuong_3b [Compatibility Mode].pdf

Nguyeân lyù phaân raõ pheùp bieán ñoåiNguyeân lyù phaân raõ pheùp bieán ñoåi

Moïi pheùp bieán ñoåi affine baát kyø ñeàu coù theå phaân raõ thaønh moät chuoãi caùc pheùp bieán ñoåi cô baûn.

T

Trang Trang Trang Trang Trang Trang Trang Trang 3535353535353535

T1

T2 T3

Tn

Page 36: chuong_3b [Compatibility Mode].pdf

Caøi ñaët nguyeân lyù keát hôïpCaøi ñaët nguyeân lyù keát hôïpTAffine2D operator + (TAffine2D T1, TAffine2D T2)

{

TAffine2D T;

for(int i=0; i<3; i++)

for(int j=0; j<3; j++)

{

T.M[i][j] =

T1.M[i][0]*T2.M[0][j] +

Trang Trang Trang Trang Trang Trang Trang Trang 3636363636363636

T1.M[i][0]*T2.M[0][j] +

T1.M[i][1]*T2.M[1][j] +

T1.M[i][2]*T2.M[2][j];

}

return T;

}

Page 37: chuong_3b [Compatibility Mode].pdf

Pheùp ñoàng nhaát (Identity)Pheùp ñoàng nhaát (Identity)

Bieán “noù” thaønh chính “noù”

=

=

traän ma Daïng

PP

PP

haøm Daïng

y'

y

x'

x

Trang Trang Trang Trang Trang Trang Trang Trang 3737373737373737

=

100

010

001

M

traän ma Daïng

Page 38: chuong_3b [Compatibility Mode].pdf

Pheùp ñoàng nhaát Pheùp ñoàng nhaát –– Caøi ñaëtCaøi ñaëtTAffine2D BuildIdentity2D()

{

TAffine2D T;

T.M[0][0] = 1; T.M[0][1] = 0; T.M[0][2] = 0;

T.M[1][0] = 0; T.M[1][1] = 1; T.M[1][2] = 0;

T.M[2][0] = 0; T.M[2][1] = 0; T.M[2][2] = 1;

Trang Trang Trang Trang Trang Trang Trang Trang 3838383838383838

return T;

}

Page 39: chuong_3b [Compatibility Mode].pdf

Pheùp ñoái xöùng (reflection)Pheùp ñoái xöùng (reflection)

yÑoái xöùng qua Oy

Trang Trang Trang Trang Trang Trang Trang Trang 3939393939393939

O x

Ñoái xöùng qua Ox

Page 40: chuong_3b [Compatibility Mode].pdf

Pheùp ñoái xöùng Pheùp ñoái xöùng –– coâng thöùccoâng thöùc

−=

=

traän ma Daïng

PP

PP

haøm Daïng

Ox truïc qua xöùng Ñoái

y'

y

x'

x

=

−=

traän ma Daïng

PP

PP

haøm Daïng

Oy truïc xöùng Ñoái

y'

y

x'

x

Trang Trang Trang Trang Trang Trang Trang Trang 4040404040404040

−=

100

010

001

M

traän ma Daïng

=

100

010

001

M

traän ma Daïng

Page 41: chuong_3b [Compatibility Mode].pdf

Pheùp bieán daïng (shearing)Pheùp bieán daïng (shearing)

Duøng ñeå laøm nghieâng ñoái töôïng theo moät truïc naøo ñoù.Tham soá :- Truïc nghieâng : Ox- Goùc nghieâng : β

Trang Trang Trang Trang Trang Trang Trang Trang 4141414141414141

O x O x

β

Page 42: chuong_3b [Compatibility Mode].pdf

Pheùp bieán daïng Pheùp bieán daïng –– coâng thöùccoâng thöùc

=

β+=

001001

traän ma Daïng

PP

PtgPP

haøm Daïng

y'

y

yx'

x

Trang Trang Trang Trang Trang Trang Trang Trang 4242424242424242

=

β=

100

01sh

001

M hoaëc

100

01tg

001

M x

Page 43: chuong_3b [Compatibility Mode].pdf

Pheùp nghòch ñaûoPheùp nghòch ñaûo

T

Trang Trang Trang Trang Trang Trang Trang Trang 4343434343434343

T-1

Page 44: chuong_3b [Compatibility Mode].pdf

Pheùp nghòch ñaûoPheùp nghòch ñaûo

=

coù T thì

0 bc - ad vôùi,

1fe

0dc

0ba

M

coù T Neáu

1-

Trang Trang Trang Trang Trang Trang Trang Trang 4444444444444444

−−−

−−

=

1bcad

afbebcad

decf

0bcad

abcad

c

0bcad

bbcad

d

M

coù T thì

1-

Page 45: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi moâ hình ñoái töôïng phaân caápBieán ñoåi moâ hình ñoái töôïng phaân caáp

Trang Trang Trang Trang Trang Trang Trang Trang 4545454545454545

Page 46: chuong_3b [Compatibility Mode].pdf

Bieán ñoåi moâ hình ñoái töôïng phaân caápBieán ñoåi moâ hình ñoái töôïng phaân caáp

T = T + T

Trang Trang Trang Trang Trang Trang Trang Trang 4646464646464646

Tcon = Tcon-cha + Tcha

Heä qui chieáu goác