Đăng ký Đăng nhập
Trang chủ Công nghệ thông tin Kỹ thuật lập trình Kỹ thuật lập trìnhcác phép biến đổi trong đồ họa hai chiều...

Tài liệu Kỹ thuật lập trìnhcác phép biến đổi trong đồ họa hai chiều

.PDF
16
94
82

Mô tả:

ÑOÀ HOÏA MAÙY TÍNH Caùc pheùp bieán ñoåi trong ñoà hoïa hai chieàu Daãn nhaäp • Baûn chaát cuûa pheùp bieán ñoåi hình hoïc laø thay ñoåi caùc moâ taû veà toïa ñoä cuûa ñoái töôïng, töø ñoù laøm ñoái töôïng thay ñoåi veà höôùng, kích thöôùc, hình daïng. • Coù hai quan ñieåm veà pheùp bieán ñoåi hình hoïc, ñoù laø: ♦ Bieán ñoåi ñoái töôïng : thay ñoåi toïa ñoä cuûa caùc ñieåm moâ taû ñoái töôïng theo moät qui taéc naøo ñoù. ♦ Bieán ñoåi heä toïa ñoä : taïo ra moät heä toïa ñoä môùi vaø taát caû caùc ñieåm moâ taû ñoái töôïng seõ ñöôïc chuyeån veà heä toïa ñoä môùi. • Caùc pheùp bieán ñoåi hình hoïc cô sôû : tònh tieán, quay, bieán ñoåi tæ leä. Caùc pheùp bieán ñoåi hình hoïc cô sôû • Moät pheùp bieán ñoåi ñieåm laø moät aùnh xaï T : T : R2 → R2 P(x, y) a Q(x' , y') • Hay T laø haøm soá T(x, y) theo hai bieán (x, y) :  x' = f (x, y)   y' = g (x, y) Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 1/16 ÑOÀ HOÏA MAÙY TÍNH • Pheùp bieán ñoåi affine laø pheùp bieán ñoåi vôùi f (x, y) vaø g (x, y) laø caùc haøm tuyeán tính. Pheùp bieán ñoåi naøy coù daïng :  x' = ax + cy + e   y' = bx + dy + f , a, b, c, d, e, f ∈ R, ad − bc ≠ 0 • Ta chæ khaûo saùt caùc pheùp bieán ñoåi affine, neân seõ duøng cuïm töø “pheùp bieán ñoåi” thay cho “pheùp bieán ñoåi affine” Pheùp tònh tieán • Pheùp tònh tieán duøng ñeå dòch chuyeån ñoái töôïng töø vò trí naøy sang vò trí khaùc. y y Q try (2,3) P (4,3) trx (6,1) (8,1) x x (a) (b) • Neáu goïi trx vaø try laàn löôït laø ñoä dôøi theo truïc hoaønh vaø truïc tung thì toïa ñoä cuûa ñieåm môùi Q(x' , y') sau khi tònh tieán ñieåm P (x, y) seõ laø :  x' = x + trx  ,  y' = y + try (tr , tr ) ñöôïc goïi laø vector tònh tieán hay vector ñoä dôøi. x y Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 2/16 ÑOÀ HOÏA MAÙY TÍNH Pheùp bieán ñoåi tæ leä • Pheùp bieán ñoåi tæ leä laøm thay ñoåi kích thöôùc ñoái töôïng. Ñeå co hay giaõn toïa ñoä cuûa moät ñieåm P(x, y) theo truïc hoaønh vaø truïc tung laàn löôït laø s x vaø s y , ta nhaân s x vaø s y laàn löôït cho caùc toïa ñoä cuûa P.  x' = s x .x   y' = s y . y , s x vaø s y ñöôïc goïi laø caùc heä soá tæ leä. • Khi caùc giaù trò s x , s y nhoû hôn 1, pheùp bieán ñoåi seõ thu nhoû ñoái töôïng, ngöôïc laïi khi caùc giaù trò naøy lôùn hôn 1, pheùp bieán ñoåi seõ phoùng lôùn ñoái töôïng. • Khi s x , s y baèng nhau, ta goïi ñoù laø pheùp ñoàng daïng (uniform scaling), pheùp ñoàng daïng laø pheùp bieán ñoåi baûo toaøn tính caân xöùng cuûa ñoái töôïng. y (2,3) (4,3) (5,1.5) (10,1.5) x • Taâm tæ leä laø ñieåm khoâng bò thay ñoåi qua pheùp bieán ñoåi tæ leä. • Nhaän xeùt raèng khi pheùp bieán ñoåi tæ leä thu nhoû ñoái töôïng, ñoái töôïng seõ ñöôïc dôøi veà gaàn goác toïa ñoä hôn, töông töï khi phoùng lôùn ñoái töôïng, ñoái töôïng seõ ñöôïc dòch chuyeån xa goác toïa ñoä hôn. Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 3/16 ÑOÀ HOÏA MAÙY TÍNH Pheùp quay • Pheùp quay laøm thay ñoåi höôùng cuûa ñoái töôïng. • Moät pheùp quay ñoøi hoûi phaûi coù taâm quay, goùc quay. Goùc quay döông thöôøng ñöôïc quy öôùc laø chieàu ngöôïc chieàu kim ñoàng hoà. Ta coù coâng thöùc bieán ñoåi cuûa pheùp quay ñieåm P (x, y) quanh goác toïa ñoä moät goùc α :  x' = cos α .x − sin α . y   y' = sin α .x + cos α . y y x Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 4/16 ÑOÀ HOÏA MAÙY TÍNH Heä toïa ñoä thuaàn nhaát • Toïa ñoä thuaàn nhaát cuûa moät ñieåm treân maët phaúng ñöôïc bieåu dieãn baèng boä ba soá tæ leä (x h , y h , h) khoâng ñoàng thôøi baèng 0 vaø lieân heä vôùi caùc toïa ñoä (x, y) cuûa ñieåm ñoù bôûi coâng thöùc : x= xh , h y= yh h • Neáu moät ñieåm coù toïa ñoä thuaàn nhaát laø (x, y, z) thì noù cuõng coù toïa ñoä thuaàn nhaát laø (h.x, h. y, h.z) trong ñoù h laø soá thöïc khaùc 0 baát kì. • Moãi ñieåm P (x, y) seõ ñöôïc bieåu dieãn döôùi daïng toïa ñoä thuaàn nhaát laø (x, y,1) . Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 5/16 ÑOÀ HOÏA MAÙY TÍNH Bieåu dieãn ma traän cuûa caùc pheùp bieán ñoåi • Pheùp tònh tieán ( x' y' 1) = (x  1  y 1). 0   trx ( hay Q = P.M T trx , try 0 1 try 0  0  1  1  M T (trx , try ) =  0   trx ) vôùi 0 1 try 0  0  1 • Pheùp bieán ñoåi tæ leä (x' y' 1) = (x  sx  y 1). 0 0  hay Q = P.M S (s x , s y ) vôùi 0 sy 0 0  0 1   sx  M S (s x , s y ) =  0 0  0 sy 0 0  0 1  • Pheùp quay quanh goác toïa ñoä (x' y' 1) = (x  cos α  y 1). − sin α  0  hay Q = P.M R (α ) vôùi Döông Anh Ñöùc, Leâ Ñình Duy sin α cos α 0  cos α  M R (α ) =  − sin α  0  0  0 1  sin α cos α 0 0  0 1  Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 6/16 ÑOÀ HOÏA MAÙY TÍNH Keát hôïp caùc pheùp bieán ñoåi • Quaù trình aùp duïng caùc pheùp bieán ñoåi lieân tieáp ñeå taïo neân moät pheùp bieán ñoåi toång theå ñöôïc goïi laø söï keát hôïp caùc pheùp bieán ñoåi (composing transformation) Keát hôïp caùc pheùp tònh tieán • Neáu ta thöïc hieän pheùp tònh tieán leân P (x, y) ñöôïc P’ , roài laïi thöïc hieän tieáp moät pheùp tònh tieán khaùc leân P’, ta ñöôïc ñieåm Q( x' , y') . Nhö vaäy, Q laø aûnh cuûa pheùp bieán ñoåi keát hôïp hai pheùp tònh tieán lieân tieáp M T1 (trx1 , try1 ) vaø M T 2 (trx 2 , try2 ) coù toïa ñoä : Q = {P.M T1 (trx1 , try1 )}.M T 2 (trx 2 , try 2 ) = P.{M T1 (trx1 , try1 ).M T 2 (trx 2 , try2 )} • Ta coù :  1  M T1 (trx1 , try1 ).M T 2 (trx 2 , try2 ) =  0   trx1  1  = 0   trx1 + trx 2 try1 0 1 + try2 0 1 try1 0  1  0 . 0  1   trx 2 0 1 try2 0  0  1 0  0  1 hay : M T1 (trx1 , try1 ).M T 2 (trx 2 , try 2 ) = M T (trx1 + trx 2 , try1 + try 2 ) • Vaäy keát hôïp hai pheùp tònh tieán laø moät pheùp tònh tieán. Töø ñoù ta coù keát hôïp cuûa nhieàu pheùp tònh tieán cuõng laø moät pheùp tònh tieán. Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 7/16 ÑOÀ HOÏA MAÙY TÍNH Keát hôïp caùc pheùp bieán ñoåi tæ leä • Töông töï nhö pheùp tònh tieán, ta coù toïa ñoä ñieåm Q(x' , y') laø ñieåm coù ñöôïc sau khi keát hôïp hai pheùp tæ leä M S1 (s x1 , s y1 ) vaø M S 2 (s x 2 , s y 2 ) laø : Q = {P.M S1 (s x1 , s y1 )}.M S 2 (s x 2 , s y 2 ) = P.{M S1 (s x1 , s y1 ).M S 2 (s x 2 , s y 2 )} • Ta coù :  s x1  M S1 (s x1 , s y1 ).M S2 (s x 2 , s y2 ) =  0  0   s x1 .s x 2  = 0  0  0 s y1 .s y 2 0 0 s y1 0 0  s x2  0 . 0 1   0 0 s y2 0 0  0 1  0  0 1  hay : M S1 (s x1 , s y1 ).M S2 (s x 2 , s y2 ) = M S (s x1 .s x 2 , s y1 .s y2 ) • Vaäy keát hôïp hai pheùp tæ leä laø moät pheùp tæ leä. Deã daøng môû roäng cho keát quaû : keát hôïp cuûa nhieàu pheùp tæ leä cuõng laø moät pheùp tæ leä. Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 8/16 ÑOÀ HOÏA MAÙY TÍNH Keát hôïp caùc pheùp quay • Töông töï, ta coù toïa ñoä ñieåm Q(x' , y') laø ñieåm phaùt sinh sau khi keát hôïp hai pheùp quay quanh goác toïa ñoä M R1 (α 1 ) vaø M R 2 (α 2 ) laø : Q = {P.M R1 (α 1 )}.M R2 (α 2 ) = P.{M R1 (α 1 ).M R2 (α 2 )} • Ta coù :  cos α 1  M R1 (α 1 ).M R 2 (α 2 ) =  − sin α 1  0  sin α 1 cos α 1 0 0   cos α 2  0 . − sin α 2 1   0 sin α 2 cos α 2 0 0  0 1   cos(α 1 + α 2 ) sin(α 1 + α 2 ) 0    =  − sin(α 1 + α 2 ) cos(α 1 + α 2 ) 0   0 0 1   hay : M R1 (α 1 ).M R 2 (α 2 ) = M R (α 1 + α 2 ) • Vaäy keát hôïp hai pheùp quay quanh goác toïa ñoä laø moät pheùp quay quanh goác toïa ñoä. Töø ñoù deã daøng suy ra keát hôïp cuûa nhieàu pheùp quay quanh goác toïa ñoä cuõng laø moät pheùp quay quanh goác toïa ñoä. Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 9/16 ÑOÀ HOÏA MAÙY TÍNH Pheùp quay coù taâm quay laø ñieåm baát kì • Giaû söû taâm quay coù toïa ñoä I (x R , y R ) , ta coù theå xem pheùp quay quanh taâm I moät goùc α ñöôïc keát hôïp töø caùc pheùp bieán ñoåi cô sôû sau : ♦ Tònh tieán theo vector tònh tieán (− x R ,− y R ) ñeå dòch chuyeån taâm quay veà goác toïa ñoä (ñöa veà tröôøng hôïp quay quanh goác toïa ñoä). ♦ Quay quanh goác toïa ñoä moät goùc α . ♦ Tònh tieán theo vector tònh tieán (x R , y R ) ñeå ñöa taâm quay veà laïi vò trí ban ñaàu. y y y y I(xR,yR) I(xR,yR) α x x (a) x (b) x (c) (d) • Ta coù ma traän cuûa pheùp bieán ñoåi : M R (x R , y R , α ) = M T (− x R ,− y R ).M R (α ).M T (x R , y R )  1  = 0 − x R  0 1 − yR 0   cos α  0 . − sin α 1   0 cos α   = − sin α  (1 − cos α )x + sin α . y R R  Döông Anh Ñöùc, Leâ Ñình Duy sin α cos α 0 0  1  0 . 0 1   x R 0 1 yR 0  0 1  sin α cos α − sin α .x R + (1 − cos α ) y R 0  0 1  Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 10/16 ÑOÀ HOÏA MAÙY TÍNH Moät soá tính chaát cuûa pheùp bieán ñoåi affine • Baûo toaøn ñöôøng thaúng : aûnh cuûa ñöôøng thaúng qua pheùp bieán ñoåi affine laø ñöôøng thaúng. ♦ Ñeå bieán ñoåi moät ñoaïn thaúng qua hai ñieåm A vaø B, chæ caàn thöïc hieän pheùp bieán ñoåi cho A vaø B. ♦ Ñeå bieán ñoåi moät ña giaùc, chæ caàn thöïc hieän pheùp bieán ñoåi ñoái vôùi caùc ñænh cuûa ña giaùc. • Baûo toaøn tính song song : aûnh cuûa hai ñöôøng thaúng song song laø song song. ♦ AÛnh cuûa caùc hình vuoâng, hình chöõ nhaät, hình thoi, hình bình haønh sau pheùp bieán ñoåi laø hình bình haønh. • Baûo toaøn tính tæ leä veà khoaûng caùch : Neáu ñieåm C chia ñoaïn AB theo tæ soá t thì aûnh cuûa C cuõng seõ chia aûnh cuûa ñoaïn AB theo tæ soá t. ♦ Trong hình vuoâng, caùc ñöôøng cheùo caét nhau taïi trung ñieåm cuûa moãi ñöôøng neân caùc ñöôøng cheùo cuûa baát kì hình bình haønh naøo cuõng caét nhau taïi trung ñieåm cuûa moãi ñöôøng. ♦ Trong tam giaùc ñeàu, giao ñieåm cuûa ba ñöôøng trung tuyeán chia moãi ñöôøng theo tæ soá 1:2. Do aûnh cuûa tam giaùc ñeàu qua pheùp bieán ñoåi affine laø moät tam giaùc neân giao ñieåm cuûa caùc ñöôøng trung tuyeán trong moät tam giaùc cuõng seõ chia chuùng theo tæ leä 1:2. Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 11/16 ÑOÀ HOÏA MAÙY TÍNH Pheùp ñoái xöùng • Pheùp ñoái xöùng truïc coù theå xem laø pheùp quay quanh truïc ñoái xöùng moät goùc 1800. • Truïc ñoái xöùng laø truïc hoaønh : • Truïc ñoái xöùng laø truïc tung : M Rfx M Rfy  1 0 0   =  0 − 1 0  0 0 1    − 1 0 0   =  0 1 0  0 0 1   Pheùp bieán daïng • Pheùp bieán daïng laø pheùp bieán ñoåi laøm thay ñoåi, meùo moù hình daïng cuûa caùc ñoái töôïng. • Bieán daïng theo phöông truïc x seõ laøm thay ñoåi hoaønh ñoä coøn tung ñoä vaãn giöõ nguyeân : M Shx  1  =  shxy  0  0 0  1 0 0 1  • Bieán daïng theo phöông truïc y seõ laøm thay ñoåi tung ñoä coøn hoaønh ñoä vaãn giöõ nguyeân : M Shy  1 sh yx  = 0 1 0 0  0  0 1  y (1,3) (3,3) (10,3) (1,1) (3,1) (4,1) (6,1) (12,3) x Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 12/16 ÑOÀ HOÏA MAÙY TÍNH Pheùp bieán ñoåi ngöôïc • Pheùp bieán ñoåi ngöôïc duøng ñeå undo moät pheùp bieán ñoåi ñaõ thöïc hieän. • Q laø aûnh cuûa P qua pheùp bieán ñoåi T coù ma traän bieán ñoåi M laø : Q = PM , neân pheùp bieán ñoåi ngöôïc T-1 seõ coù ma traän bieán ñoåi laø M-1 vôùi M-1 laø ma traän nghòch ñaûo cuûa ma traän M. • Vôùi giaû thieát ban ñaàu veà ma traän M laø ad − bc ≠ 0 , ta coù coâng thöùc tính ma traän nghòch ñaûo M-1 cuûa  a b 0 −b  d    1 M =  c d 0 a M −1 =  −c laø : − ad bc  e f 1  cf − de be − af    0  0 1  • Ma traän cuûa caùc pheùp bieán ñoåi ngöôïc cuûa caùc pheùp bieán ñoåi cô sôû tònh tieán, tæ leä, quay :  1  M T−1 (trx , try ) =  0   − trx 0 1 − try  sy  1 M S−1 (s x , s y ) = 0 sx s y  0  cos α  M R−1 (α ) =  sin α  0  Döông Anh Ñöùc, Leâ Ñình Duy 0 0  0 1  sx 0 − sin α cos α 0 0  0  = M T (− trx ,− try )  1  1   sx  = 0   0   0 1 sy 0  0   1 1   0 = M S  ,   sx s y     1   0  0  = M R (− α ) 1  Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 13/16 ÑOÀ HOÏA MAÙY TÍNH Phaân raõ pheùp bieán ñoåi • Moät pheùp bieán daïng theo phöông truïc x coù theå ñöôïc phaân raõ thaønh tích cuûa moät pheùp bieán ñoåi tæ leä vaø moät pheùp bieán daïng ñôn vò, vaø vôùi moät pheùp bieán ñoåi tæ leä khaùc theo coâng thöùc sau :  1   shxy  0  0 0  1 0 0 1   1   shxy = 0   0    0 0  1 0 0  shxy 1 0  1 1 0  0  0 1  0 0 1  0   0 0  1 0 0 1  • Pheùp bieán daïng ñôn vò coøn coù theå ñöôïc phaân raõ tieáp :  1 0 0   cos α    1 1 0   =  sin α  0 0 1  0    0  φ 0 0  cos β   1 0  0 0  − sin β   φ 1  0 0 1  0   − sin α cos α 0 sin β cos β 0 0  0 1  α = tan −1 (φ ) = 58.28 0  trong ñoù β = tan −1  1  = 31.72 0 φ     • Töø ñoù, moät pheùp bieán ñoåi baát kì coù theå ñöôïc phaân raõ thaønh caùc pheùp bieán ñoåi cô sôû sau : 1 0 0  Q  a b 0     ac + bd 1 0  0  c d 0 =  2    e f 1  Q    0 0 1  0  a  0 0  Q  ad − bc  b 0  −  Q Q  0 1  0   b  0 Q  1 0 0   a  0  0 1 0  Q   0 1  e f 1    2 2 2 trong ñoù Q = a + b • Suy ra : Baát kì pheùp bieán ñoåi naøo cuõng ñöôïc keát hôïp töø caùc pheùp tònh tieán, tæ leä vaø quay. Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 14/16 ÑOÀ HOÏA MAÙY TÍNH Pheùp bieán ñoåi giöõa caùc heä toïa ñoä • Ñeå thuaän tieän cho vieäc moâ taû ñoái töôïng, thoâng thöôøng ñoái töôïng seõ ñöôïc moâ taû trong caùc heä toïa ñoä cuïc boä gaén vôùi chuùng. Tuy nhieân ñeå coù theå hieån thò toaøn boä moät aûnh bao goàm nhieàu ñoái töôïng thaønh phaàn, caùc moâ taû naøy phaûi ñöôïc chuyeån veà moät heä toïa ñoä chung duy nhaát. • Vieäc chuyeån ñoåi naøy thöôøng ñöôïc chia laøm hai loaïi : chuyeån töø caùc heä toïa ñoä khoâng phaûi laø heä toïa ñoä Descartes nhö heä toïa ñoä cöïc, heä toïa ñoä caàu, heä toïa ñoä elliptic, … sang heä toïa ñoä Descartes, vaø chuyeån ñoåi giöõa hai heä toïa ñoä Descartes. Trong phaàn naøy chuùng ta seõ khaûo saùt pheùp bieán ñoåi giöõa hai heä toïa ñoä Descartes vôùi nhau. Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 15/16 ÑOÀ HOÏA MAÙY TÍNH • Giaû söû ta coù heä toïa ñoä (I) coù goác toïa ñoä O vaø caùc vector ñôn vò laàn löôït laø i, j . Heä toïa ñoä (II) laø aûnh cuûa heä toïa ñoä (I) qua pheùp bieán ñoåi T(M), coù goác toïa ñoä laø O’ vaø caùc vector ñôn vò laàn löôït laø u, v . • Luùc naøy moät ñieåm P (x, y) baát kì trong heä toïa ñoä (I) seõ ñöôïc bieán ñoåi thaønh ñieåm Q(a, b) trong heä toïa ñoä (II). Vaán ñeà ñaët ra ôû ñaây laø moái lieân heä giöõa a, b vôùi x, y, M nhö theá naøo. −1 • Ngöôøi ta chöùng minh ñöôïc raèng Q = PM P v u O' j O i Döông Anh Ñöùc, Leâ Ñình Duy Caùc pheùp bieán ñoåi trong ñoà hoïa 2 chieàu 16/16
- Xem thêm -

Tài liệu liên quan