Chương 3 Các phép biến đổi trong không gian 2 chiều
Biểu diễn điểm Phép biến đổi khái quát Các phép biến đổi hình học Các phép biến đổi hệ trục Chuyển đổi quan sát
Bạn đang xem trước 20 trang tài liệu Chương 3 Các phép biến đổi trong không gian 2 chiều, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 3
Các phép biến đổi trong
không gian 2 chiều
Giảng viên: Ths.Vũ Minh Yến
Tổ HTTT- Khoa CNTT
Nội dung
Biểu diễn điểm
Phép biến đổi khái quát
Các phép biến đổi hình học
Các phép biến đổi hệ trục
Chuyển đổi quan sát
1. Biểu diễn điểm(1)
Trong hệ toạ độ đề các
M(x,y)
Biểu diễn bằng ma trận:
Ma trận hàng:
Ma trận cột:
O x
y
M (x, y)
x
y
=
y
x
M
[ ]yxM =
1. Biểu diễn điểm(2)
Trong hệ toạ độ thuần nhất
M(kx, ky, k) với k≠0, k=0 điểm M ở vô cùng
k=1 khi đó M(x, y, 1) được gọi là toạ độ đề các của điểm
thuần nhất
Biểu diễn bằng ma trận
Ma trận hàng:
Ma trận cột:
[ ]1yxM =
=
1
y
x
M
2. Phép biến đổi hình học khái
quát (1)
Phép biến đổi T biến điểm M thành điểm M’:
Công thức biến đổi:
Trong đó: a1, b1, c1, a2, b2, c2 là hằng số
Ma trận biến đổi
++=
++=
222
111
'
'
cybxay
cybxax
)','('),( yxMyxM T→
=
1cc
0bb
0aa
T
21
21
21
2. Phép biến đổi hình học khái
quát (2)
Ta có:
Suy ra: M'= M.T
⇔
⇔
[ ]1yxM =
[ ]1'y'x'M =
[ ]=1'y'x [ ]×1yx
1cc
0bb
0aa
21
21
21
[ ]=1'y'x [ ]1cybxacybxa 222111 ++++
3. Các phép biến đổi hình học
Phép bất biến
Phép tịnh tiến
Phép biến đổi tỉ lệ tại gốc toạ độ
Phép đối xứng
Phép quay tại gốc toạ độ
Phép biến đổi kết hợp
3.1. Phép bất biến
Biến điểm M thành chính nó:
Ma trận biến đổi:
)y,x(M)'y,'x('M)y,x(M T ≡→
I
100
010
001
T =
=
3.2. Phép tịnh tiến
Tịnh tiến điểm M một vector (m,n) thành
điểm M’:
Công thức biến đổi:
Ma trận biến đổi:
v
r
)'y,'x('M)y,x(M vT→ r
O x
y
M (x, y)
x
y
y'
x'
M' (x', y')
+=
+=
ny'y
mx'x
=
1nm
010
001
T
3.3. Phép biến đổi tỉ lệ tại gốc toạ độ
Co dãn so với gốc toạ độ:
Công thức biến đổi:
với tlx, tly là các hệ số tỉ lệ
Ma trận biến đổi:
Nhận xét:
tlx=tly: phép biến đổi đồng dạng
tlx=tly >1: phép phóng ảnh
tlx=tly <1: phép thu ảnh
tlx ≠ tly: phép biến dạng (phép nhiễu hình)
)'y,'x('M)y,x(M T→
×=
×=
ytly'y
xtlx'x
=
100
0tly0
00tlx
T
3.4.Phép đối xứng
Phép đối xứng qua trục Ox:
Phép đối xứng qua trục Oy:
Phép đối xứng qua tâm O:
−
=
100
010
001
T
−
−
=
100
010
001
T
−=
100
010
001
T
3.5. Phép quay tại gốc toạ độ
Điểm M quay quanh O góc α thành M’:
Công thức biến đổi:
Ma trận biến đổi:
Lưu ý:
Chiều dương góc quay ngược chiều kim đồng hồ
O x
y
M (x, y)
x'
y
y'
x
M' (x', y')
α
( ) )'y,'x('M)y,x(M ,OT → α
α+α=
α−α=
cosysinx'y
sinycosx'x
αα−
αα
=
100
0cossin
0sincos
T
3.6. Phép biến đổi kết hợp (1)
Điểm M qua phép biến đổi T1 thành M1, M1 qua phép biến đổi T2
thành M2, suy ra tồn tại một phép biến đổi T biến M thành M2:
T được gọi là phép biến đổi kết hợp của T1 và T2, khi đó:
T = T1 × T2
Ta có:
M1=M×T1, M2=M1×T2
⇒ M2=M×T1 ×T2
=M ×(T1 ×T2)
M2=M ×T
Suy ra: T= T1 ×T2
)y,x(M)y,x(M
)y,x(M)y,x(M)y,x(M
222
T
222
T
111
T 21
→⇔
→→
3.6. Phép biến đổi kết hợp (2)
Ví dụ 1:
Tính ma trận T với T1, T2 lần lượt là các phép tịnh tiến
vecto (a1, b1) và (a2, b2) ?
)y,x(M)y,x(M
)y,x(M)y,x(M)y,x(M
222
T
222
T
111
T 21
→⇔
→→
Giải quyết vấn đề:
Ta có:
Suy ra:
++
=
×
=×=
1bbaa
010
001
1ba
010
001
1ba
010
001
TTT
21212211
21
=
1ba
010
001
T
11
1
=
1ba
010
001
T
22
2
3.6. Phép biến đổi kết hợp (3)
Ví dụ 2:
Tính ma trận biến đổi biểu diễn phép quay góc α
quanh điểm A(x0,y0) bất kỳ.
'MMMMM 3
T
2
T
1
T 321 ≡→→→
Giải quyết vấn đề:
Ta phân tích thành các phép biến đổi
cơ sở:
Trong đó:
T1: phép tịnh tiến vecto (-x0,-y0)
T2: phép quay tại O góc quay α
T3: phép tịnh tiến vecto (x0, y0)
Suy ra: T=T1×T2×T3
M(x,y)
M'(x',y')
A
x0 x
y0
O
y
4. Các phép biến đổi hệ trục toạ độ
Phép biến đổi hệ trục toạ độ là phép biến đổi nghịch
đảo của phép biến đổi vật:
Thệtrục= Tvật-1
Hai phép biến đổi được gọi là nghịch đảo của nhau
nếu phép biến đổi kết hợp của chúng là phép bất
biến.
Ví dụ:
Phép tịnh tiến hệ trục bởi vecto (m, n) bằng phép tịnh tiến
vật đi vecto (-m,-n)
Phép quay hệ trục tại gốc toạ độ góc α bằng phép quay vật
tại gốc toạ độ góc - α
5. Chuyển đổi quan sát
Mục đích
Một số khái niệm
Xây dựng công thức chuyển đổi quan sát
Áp dụng xây dựng bộ công cụ 2D
Áp dụng bộ công cụ 2D để vẽ đồ thị hàm sin
5.1.Mục đích
Mô phỏng hình ảnh trong không gian thực hai
chiều lên thiết bị hiển thị (màn hình)
Ví dụ:
Hình ảnh biểu diễn trên màn hình
Màn hình
Không gian thực 2 chiều
5.2. Một số khái niệm
Cửa sổ:
Là một vùng hình chữ nhật
trong không gian thực 2 chiều,
giới hạn hình ảnh cần hiển thị.
Cửa sổ được xác định bởi
đường chéo chính: (xw1,yw1),
(xw2, yw2)
(xw1, yw1)
HÖ to¹ ®é thÕ giíi thùc
(xw2, yw2)
y
O
cöa sæ
x
Cài đặt:
xw1,yw1, xw2, yw2: kiểu float, biến toàn cục
void cuaso(float x1, float y1, float x2, float y2)
{
xw1=x1; yw1=y1; xw2=x2; yw2=y2 }
5.2. Một số khái niệm (2)
Khung nhìn:
Là một vùng hình chữ nhật trên
màn hình dùng để hiển thị hình
ảnh trong cửa sổ.
Khung nhìn được xác định bởi
đường chéo chính: (xv1,yv1),
(xv2, yv2)
Cài đặt:
xv1,yv1, xv2, yv2: kiểu int, tlx,tly: kiểu float, là các biến toàn cục
void khungnhin(int x1, int y1, int x2, int y2)
{ xv1=x1; yv1=y1; xv2=x2; yv2=y2;
tlx=(xv2-xv1)/(xw2-xw1); tly= (yv2-yv1)/(yw2-yw1); }
Hệ toạ độ thiết bị hiển thị
Hệ toạ độ màn hình
Màn hình
Om xm
ym
(xv1, yv1)
(xv2, yv2)
Khung nhìn
Hệ toạ độ màn hình
Màn hình
Om xm
y
x
O
HÖ to¹ ®é thÕ giíi thùc
ym
(xw2, yw2)
(xw1, yw1)
cöa sæ
(xv1, yv1)
(xv2, yv2)
Khung nhìn
5.3. Xây dựng công thức chuyển đổi quan sát
Bài toán:
Input:
Cửa sổ
Khung nhìn
Điểm P(x,y)
Output:
Tính Pm(xm,ym)? xw1 xw2
x
yw1
yw2
y
O
Cửa sổ
Hệ toạ độ thế giới thực
Om
xm
ym
yv1
yv2
xv1 xv2
P(x,y)
x
y Pm=?
xm
ym
Khung nhìn
Hệ toạ độ màn hình
Giải pháp 1(1)
xw1 xw2
x
yw1
yw2
y
O
cửa sổ
Hệ toạ độ thế giới thực Hệ toạ độ màn hình
Om
xm
ym
yv1
yv2
xv1 xv2
Khung
nhìn
P
x
y Pm=?
xm
ym
A1 B1
C1D1
A B
CD
M1
N1
M
N
=
⇔
11
11
BA
MA
AB
AM
11
11
DA
NA
AD
AN
=
Giải pháp 1(2)
=
=
11
11
11
11
DA
NA
AD
AN
BA
MA
AB
AM ( )
( )
+−
−
−
=
+−
−
−
=
⇔
12
12
12
m
11
12
12
m
yvyyw
ywyw
yvyv
y
xvxwx
xwxw
xvxv
x
12
12
12
12
ywyw
yvyv
tly
xwxw
xvxv
tlx
−
−
=
−
−
= ( )
( ) ⇒
+−=
+−=
⇒
12m
11m
yvyywtlyy
xvxwxtlxx
Đặt:
( )
( )
+−=
+−=
)yvyywRound(tlyy
)xvxwxRound(tlxx
12m
11m
−
−
=
−
−
−
−
=
−
−
⇔
12
1m
12
2
12
1m
12
1
yvyv
yvy
ywyw
yyw
xvxv
xvx
xwxw
xwx
xw1 xw2
x
yw1
yw2
y
O
cửa sổ
Hệ toạ độ thế giới thực Hệ toạ độ màn hình
Om
xm
ym
yv1
yv2
xv1 xv2
Khung
nhìnP
x
y
Pm=?
xm
ym
A1 B1
C1D1
A
B
CD
M1
N1
M
N
Giải pháp 2
xw1 xw2
x
yw1
yw2
y
O
cöa sæ
x
y
x1
y1
O1
T1 x2
y2
O2
T2
x3
y3
O3
T3
T4
Om
xm
ym
yv1
yv2
xv1 xv2
Khung nh×n
Pm
xm
ym
T1: PhÐp tÞnh tiÕn hÖ trôc vecto v(xw1,yw2)
T2: PhÐp ®èi xøng qua trôc Ox
T3: PhÐp biÕn ®æi tØ lÖ
T4: PhÐp tÞnh tiÕn hÖ trôc vecto u(-xv1,-yv1)
T=T1*T2*T3*T4
v
r
u
r
T
Công thức chuyển đổi quan sát
Trong đó
12
12
12
12
ywyw
yvyv
tly
xwxw
xvxv
tlx
−
−
=
−
−
=
+−=
+−=
)yvy)ywRound(tly(ym
)xv)xwxRound(tlx(xm
12
11
5.4. Xây dựng bộ công cụ 2D(1)
yw1
yw2
Hệ toạ độ thế giới thực
xw1 xw2
xO
Cửa sổ
Hệ toạ độ màn hình
ym
yv1
yv2
Khung
nhìn
A
B
y Om
xmxv1 xv2
A1
B1
moveto(x,y)
lineto(x,y)
5.4. Xây dựng bộ công cụ 2D(2)
Xây dựng 2 công cụ:
void chuyenden(float x, float y):
Con trỏ chuyển tương ứng đến điểm (xm, ym) trên màn
hình
void veden(float x, float y):
Vẽ đến điểm (xm, ym) tương ứng trên màn hình
5.4. Xây dựng bộ công cụ 2D(3)
Cài đặt:
void chuyenden(float x, float y)
{
int xm=(int)(tlx*(x-xw1)+xv1);
int ym= (int)(tly*(yw2-y)+yv1);
moveto(xm,ym);
}
void veden(float x, float y)
{
int xm=(int)(tlx*(x-xw1)+xv1);
int ym= (int)(tly*(yw2-y)+yv1);
lineto(xm,ym);
}
5.5. Áp dụngbộ công cụ 2D vẽ hàm sin
Bài toán:
Sử dụng thư viện Congcu2D trên viết chương tŕình vẽ đồ
thị hàm số y=sinx với điều kiện x∈[-pi;3 pi] trên khung nhìn
có kích thước (150, 150), (300; 250).
Om xm
ym
(xv1, yv1)
(xv2, yv2)
Khung nhìn
(xw1, yw1)
y
x
O
(xw2, yw2)
cửa sổ
Code
void main()
{
int gd=0, gm;
initgraph(&gd,&gm,”c:\\tc\\bgi”);
cuaso(-M_PI,-1.5,3*M_PI,1.5);
khungnhin(150,150,300,250);
float dx=0.01;
float x=xw1; float y=sin(x);
chuyenden(x,y);
while (x<xw2)
{ x=x+dx;
y=sin(x);
veden(x,y);
}
getch();
closegraph();
}