Transcript
Page 1: 2D Transformations Các phép biến đổi 2D

11

2D Transformations2D TransformationsCác phép biến đổi 2DCác phép biến đổi 2D

Page 2: 2D Transformations Các phép biến đổi 2D

22

• Bản chất của phép biến đổi hình học là thay đổi vị trí của đối tượng, làm Bản chất của phép biến đổi hình học là thay đổi vị trí của đối tượng, làm thay đổi đối tượng về hướng, kích thước, hình dạng.thay đổi đối tượng về hướng, kích thước, hình dạng.

• Hai phương pháp để biến đổi hình học:Hai phương pháp để biến đổi hình học:– Biến đổi đối tượng: thay đổi tọa độ của đối tượng.Biến đổi đối tượng: thay đổi tọa độ của đối tượng.

– Biến đổi hệ tọa độ: tạo hệ tọa độ mới và tất cả đối tượng sẽ được chuyển về hệ Biến đổi hệ tọa độ: tạo hệ tọa độ mới và tất cả đối tượng sẽ được chuyển về hệ tọa độ mới.tọa độ mới.

• Các phép biến đổi hình học cơ bản: tịnh tiến, quay, biến đổi tỉ lệ, biến Các phép biến đổi hình học cơ bản: tịnh tiến, quay, biến đổi tỉ lệ, biến dạng.dạng.

Giới thiệuGiới thiệu

Page 3: 2D Transformations Các phép biến đổi 2D

33

• Một phép biến đổi là một ánh xạ Một phép biến đổi là một ánh xạ TT::

Phép biến đổi hình họcPhép biến đổi hình học

)','(),(

: 22

yxQyxP

RRT

P(x,y)

Q(x’,y’)

),('

),('

yxgy

yxfx

Page 4: 2D Transformations Các phép biến đổi 2D

44

• Phép biến đổi Affine là phép biến đổi với f(x,y) và g(x,y) là 2 hàm Phép biến đổi Affine là phép biến đổi với f(x,y) và g(x,y) là 2 hàm tuyến tính:tuyến tính:

• Biểu diễn phép biến đổi Affine dưới dạng ma trận:Biểu diễn phép biến đổi Affine dưới dạng ma trận:

• Thông thường, chúng ta chỉ khảo sát phép biến Affine nên ta Thông thường, chúng ta chỉ khảo sát phép biến Affine nên ta thường dùng thuật ngữ phép biến đổi để ngụ ý là phép biến đổi thường dùng thuật ngữ phép biến đổi để ngụ ý là phép biến đổi Affine.Affine.

Phép biến đổi hình học (cont.)Phép biến đổi hình học (cont.)

feydxy

cbyaxx

'

'

PTQy

x

fed

cba

y

x

.

11001

'

'

Page 5: 2D Transformations Các phép biến đổi 2D

55

• Phép tịnh tiến dùng để dịch chuyển đối tượng từ vị trí này sang vị Phép tịnh tiến dùng để dịch chuyển đối tượng từ vị trí này sang vị trí khác.trí khác.

Phép tịnh tiến - TranslationPhép tịnh tiến - Translation

trx

try

P

Q

Page 6: 2D Transformations Các phép biến đổi 2D

66

Gọi tr = (trGọi tr = (trxx , tr , tryy) là vector tịnh tiến từ điểm P đến điểm Q thì:) là vector tịnh tiến từ điểm P đến điểm Q thì:

Ma trận biến đổi của phép tịnh tiến: Ma trận biến đổi của phép tịnh tiến:

Phép tịnh tiến (cont.)Phép tịnh tiến (cont.)

y

x

tryy

trxx

'

'

100

10

01

),( y

x

yx tr

tr

trtrT

Page 7: 2D Transformations Các phép biến đổi 2D

77

• Đổi hướng đối tượng.Đổi hướng đối tượng.

• Phép quay gồm có tâm quay C, góc quay Phép quay gồm có tâm quay C, góc quay αα. .

• Biến đổi điểm P thành Q sao cho:Biến đổi điểm P thành Q sao cho:– P và Q nằm trên đường tròn tâm C, P và Q nằm trên đường tròn tâm C,

– Góc PCQ bằng Góc PCQ bằng αα

• Do vị trí của tâm quay nên ta có 2 loại phép quay:Do vị trí của tâm quay nên ta có 2 loại phép quay:– Phép quay quanh gốc tọa độPhép quay quanh gốc tọa độ

– Phép quay quanh một tâm bất kìPhép quay quanh một tâm bất kì

• Góc quay theo qui ước chiều dương là ngược chiều kim đồng hồ.Góc quay theo qui ước chiều dương là ngược chiều kim đồng hồ.

Phép quay - RotationPhép quay - Rotation

+

CC

αα

QQ

PP

Page 8: 2D Transformations Các phép biến đổi 2D

88

Phép quay một góc Phép quay một góc αα quanh gốc tọa độ quanh gốc tọa độ

P

Q

O

O

100

0cossin

0sincos

cos sin'

sin cos'

Tyxy

yxx

Page 9: 2D Transformations Các phép biến đổi 2D

99

Phép quay một góc Phép quay một góc αα quanh gốc tọa độ quanh gốc tọa độPhép đối xứng tâm (gốc tọa độ)Phép đối xứng tâm (gốc tọa độ)

P và Q đối xứng qua gốc tọa độ. Do đó, phép đối xứng tâm là phép P và Q đối xứng qua gốc tọa độ. Do đó, phép đối xứng tâm là phép quay quanh gốc tọa độ một góc 180quay quanh gốc tọa độ một góc 18000..

=1800

P

Q

O O

100

010

001

180'

' 0Tyy

xx

Page 10: 2D Transformations Các phép biến đổi 2D

1010

Phép quay một góc Phép quay một góc αα quanh tâm bất kì quanh tâm bất kì

P

Q

O

C(xc,yc)

P’

Q’

PPT(-xT(-xcc,-y,-ycc))

P’P’T(T(αα))

Q’Q’T(xT(xcc,y,ycc))

QQ

Page 11: 2D Transformations Các phép biến đổi 2D

1111

• Ta có thể chứng minh phép quay tâm C(xTa có thể chứng minh phép quay tâm C(xcc, y, ycc) một góc ) một góc αα l làà k kếết t

hhợợp cp củủa ca cáác phc phéép bip biếến n đổđổi sau i sau đâđây:y:– Tịnh tiến theo vector (-xTịnh tiến theo vector (-xcc,-y,-ycc) để dịch chuyển tâm quay về gốc tọa độ: ) để dịch chuyển tâm quay về gốc tọa độ:

P’ = T(-xP’ = T(-xcc, -y, -ycc) . P) . P

– Quay quanh gốc tọa độ một góc Quay quanh gốc tọa độ một góc : Q’ = T(: Q’ = T() . P’) . P’

– Tịnh tiến theo vector (xTịnh tiến theo vector (xcc,y,ycc) để đưa tâm quay về vị trí ban đầu: Q = ) để đưa tâm quay về vị trí ban đầu: Q =

T(xT(xcc,y,ycc) . Q’) . Q’

• Kết hợp 3 phép biến đổi trên ta được: Q = T(xKết hợp 3 phép biến đổi trên ta được: Q = T(xcc,y,ycc) . T() . T() . T(-x) . T(-xcc,-,-

yycc) . P) . P

• Như vậy, ma trận biến đổi của phép quay tâm bất kì là: Như vậy, ma trận biến đổi của phép quay tâm bất kì là:

Phép quay một góc Phép quay một góc αα quanh tâm bất kì (cont.) quanh tâm bất kì (cont.)

100

)cos1( sincossin

sin)cos1(sincos

,),(,, cc

cc

cccccc yx

yx

yxTTyxTyxT

Page 12: 2D Transformations Các phép biến đổi 2D

1212

Phép biến đổi tỉ lệ - ScalingPhép biến đổi tỉ lệ - Scaling

ysy

xsx

y

x

'

'• Co giCo giảản n đốđối ti tượượngng

• ssxx v vàà s syy đượđược gc gọọi li làà h hệệ s sốố co gi co giảản theo trn theo trụục x vc x vàà tr trụục yc y

100

00

00

),( y

x

yx s

s

ssT

Page 13: 2D Transformations Các phép biến đổi 2D

1313

• Khi sKhi syy = 1 thì đối tượng co giản theo trục x = 1 thì đối tượng co giản theo trục x

• Khi sKhi sxx = 1 thì đối tượng co giản theo trục y = 1 thì đối tượng co giản theo trục y

Phép biến đổi tỉ lệ (cont.)Phép biến đổi tỉ lệ (cont.)

Page 14: 2D Transformations Các phép biến đổi 2D

1414

• Khi sKhi syy = s = syy thì ta gọi đây là phép biến đổi đồng dạng – uniform scaling, bảo thì ta gọi đây là phép biến đổi đồng dạng – uniform scaling, bảo

toàn tính cân xứng của đối tượng. toàn tính cân xứng của đối tượng.

• Nếu sNếu sxx = s = syy < 1 thì đây là phép thu nhỏ, ngược lại thì đây là phép phóng to < 1 thì đây là phép thu nhỏ, ngược lại thì đây là phép phóng to

Phép biến đổi tỉ lệ (cont.)Phép biến đổi tỉ lệ (cont.)

Thu nhỏThu nhỏ

Phóng toPhóng to

Page 15: 2D Transformations Các phép biến đổi 2D

1515

• Đối xứng qua trục hoành: Đối xứng qua trục hoành:

Phép biến đổi tỉ lệ (cont.)Phép biến đổi tỉ lệ (cont.)Phép đối xứng trụcPhép đối xứng trục

1

1

'

'

y

x

s

s

yy

xx

1

1

'

'

y

x

s

s

yy

xx

• Đối xứng qua trục tung: Đối xứng qua trục tung:

100

010

001

100

010

001

Page 16: 2D Transformations Các phép biến đổi 2D

1616

• Thay đổi hình dạng của đối tượngThay đổi hình dạng của đối tượng

• Phép biến dạng theo trục xPhép biến dạng theo trục x làm thay đổi hoành độ còn tung độ giữ nguyên. làm thay đổi hoành độ còn tung độ giữ nguyên.

• Phép biến dạng theo trục yPhép biến dạng theo trục y làm thay đổi tung độ còn hoành độ giữ nguyên. làm thay đổi tung độ còn hoành độ giữ nguyên.

Phép biến dạng - ShearingPhép biến dạng - Shearing

100

010

01

0, '

' x

xx

sh

shTyy

yshxx

100

01

001

,0sh '

'

yyy shshT

yxy

xx

Page 17: 2D Transformations Các phép biến đổi 2D

1717

• Phép biến dạng tổng quátPhép biến dạng tổng quát

Phép biến dạng - ShearingPhép biến dạng - Shearing

100

01

01

, '

'y

x

yxy

x sh

sh

shshTyxshy

yshxx

Page 18: 2D Transformations Các phép biến đổi 2D

1818

Bài tậpBài tậpBiến đổi đối tượng 2DBiến đổi đối tượng 2D

• Mô tả tính chất hình học của đối tượngMô tả tính chất hình học của đối tượng

– Tâm, có tọa độ so với hệ tọa độ thực : Tâm, có tọa độ so với hệ tọa độ thực : centercenter

– Dạng hình học, có dạng đa giác đối xứng qua tâm : Dạng hình học, có dạng đa giác đối xứng qua tâm : pointspoints

– Màu sắc : Màu sắc : colorcolor

centercenter

pointspoints

colorcolor

Hệ tọa độ thựcHệ tọa độ thực

Hệ tọa độ đối tượngHệ tọa độ đối tượng

Page 19: 2D Transformations Các phép biến đổi 2D

1919

Bài tậpBài tậpBiến đổi đối tượng 2D (cont.)Biến đổi đối tượng 2D (cont.)

• Áp dụng các phép biến đổi trên đối tượngÁp dụng các phép biến đổi trên đối tượng

– Tịnh tiến đối tượng bằng vectơ Tịnh tiến đối tượng bằng vectơ trtr, thực chất là tịnh tiến tâm của đối tượng, thực chất là tịnh tiến tâm của đối tượng

– Quay đối tượng theo góc Quay đối tượng theo góc angleangle, thực chất là quay các đỉnh của đa giác, thực chất là quay các đỉnh của đa giác

– ……

Hệ tọa độ thựcHệ tọa độ thực

trtr

Page 20: 2D Transformations Các phép biến đổi 2D

2020

Bài tậpBài tậpBiến đổi đối tượng 2D (cont.)Biến đổi đối tượng 2D (cont.)

• Cấu trúc dữ liệuCấu trúc dữ liệu

#define #define MAXNUMPOINTSMAXNUMPOINTS 1010struct Point2Dstruct Point2D{{

double x, y;double x, y;};};struct Objectstruct Object{{

Point2D Point2D centercenter;;Point2D Point2D pointspoints[MAXNUMPOINTS];[MAXNUMPOINTS];int int numOfPointsnumOfPoints;;int int colorcolor;;Point2DPoint2D trtr;;double double angleangle;;// …// …

};};

Page 21: 2D Transformations Các phép biến đổi 2D

2121

Bài tậpBài tậpBiến đổi đối tượng 2D (cont.)Biến đổi đối tượng 2D (cont.)

• Vẽ đối tượng đối tượng: Vẽ đối tượng đối tượng: void drawObject(Object &o);void drawObject(Object &o);– Vẽ đa giác xác định bởi points, lưu ý các điểm points[i] có tọa độ thực Vẽ đa giác xác định bởi points, lưu ý các điểm points[i] có tọa độ thực

là: là: points[i] + centerpoints[i] + center

– Đối tượng được vẽ bằng màu Đối tượng được vẽ bằng màu colorcolor

• Tịnh tiến đối tượng: Tịnh tiến đối tượng: void translateObject(Object &o);void translateObject(Object &o);– Tịnh tiến tâm của đối tượng theo vectơ tịnh tiến : Tịnh tiến tâm của đối tượng theo vectơ tịnh tiến : center = center + trcenter = center + tr

– Lưu ý trường hợp đối tượng vượt khỏi khung nhìn:Lưu ý trường hợp đối tượng vượt khỏi khung nhìn:• Tính lại tâm của đối tượngTính lại tâm của đối tượng

• Tính lại vectơ tịnh tiếnTính lại vectơ tịnh tiến

trtr

Page 22: 2D Transformations Các phép biến đổi 2D

2222

Bài tậpBài tậpBiến đổi đối tượng 2D (cont.)Biến đổi đối tượng 2D (cont.)

• Quay đối tượng: Quay đối tượng: void roatateObject(Object &o);void roatateObject(Object &o);– Quay các đỉnh của đa giác của đối tượng theo theo góc Quay các đỉnh của đa giác của đối tượng theo theo góc angleangle : :

rotatePoints(o.points[i], o.angle);rotatePoints(o.points[i], o.angle);

• ChChương trình chính:ương trình chính:

Object o;Object o;initObject(o);initObject(o);while (!kbhit())while (!kbhit()){{

o.color = CYAN;o.color = CYAN;drawObject(o);drawObject(o);delay(50);delay(50);o.color = BLACK;o.color = BLACK;drawObject(o);drawObject(o);translateObject(o);translateObject(o);ratateObject(o);ratateObject(o);// …// …

}}


Recommended