Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Trang 1ĐỒ HỌA 2D
CÁC PHÉP BIẾN ĐỔI
Giảng viên Bùi Tiến Lên
Trang 2Phép biến đổi là gì ?
Phép biến đổi là một ánh xạ từ không gian R 2 vào R 2 : -Biến một điểm P thành một điểm P’
-Biến một đối tượng S thành đối tượng S’
P’
T
Trang Trang 22222222
Trang 3Công thức phép biến đổi
=
→
) P ( T '
P
hàm dạng
đổi Biến
P'
P
R R
: T
xạ ánh dạng
đổi
Biến
2 2
Trang Trang 33333333
) P , P ( T P
hay
) P ( T '
P
y x y
' y
y x x '
x
Trang 4Định nghĩa biến đổi affine
Phép biến đổi affine là phép biến đổi mà các hàm biến đổi Tx, Ty có dạng tuyến tính.
Tx(x, y) = ax + cy + e
Ty(x, y) = bx + dy + f
Trang Trang 44444444
Trang 5Hệ tọa độ thuần nhất
Hệ tọa độ Đề các Hệ tọa độ thuần nhất
P(Px, Py) P(Px, Py, 1) P(Px, Py) P(wPx, wPy, w)
Trang Trang 55555555
Trang 6Công thức xác định ảnh của một điểm
+ +
=
+ +
=
trận ma
Dạng
f dP
bP P
e cP
aP P
hàm Dạng
y x
' y
y x
' x
Trang Trang 66666666
e
0 d
c
0 b
a 1 P
P 1
P P
hoặc
M P '
P
trận ma
Dạng
y x
' y
' x
Ma trận biến đổi
Trang 7Công thức xác định ảnh của một điểm
+ +
=
+
=
đổi biến
trận ma
dạng Hoặc
4 2y
2x - y) (x, T
5 – 3y 2x
y) (x, T
hàm dạng
đổi biến
thức Công
y x
Trang Trang 77777777
5
0 2
3
0 2
2
đổi biến
trận ma
dạng Hoặc
Trang 8Cấu trúc dữ liệu
// Lưu thơng tin phep bien doi affine
struct TAffine2D {
double M[3][3];
};
Trang Trang 88888888
Trang 9Biến đổi điểm
Biến đổi điểm –– Cài đặtCài đặt
TPoint2D 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 99999999
return Q;
}
Trang 10Cài đặt
void Read_Transform_Convert_Draw_2D(CDC *pDC, char *filename , TAffine2D T) {
TPoint2D P1, P2;
// Chuyen toa do doan thang
Trang 11Tính chất phép biến đổi affine
Một phép biến đổi affine luôn có 3 tính chất
-Bảo toàn tính thẳng
-Bảo toàn tỉ lệ
-Bảo toàn song song
Trang Trang 11 11
Trang 12Bảo toàn tính thẳng
GT d là đường thẳng
Trang 13Bảo toàn tỉ lệ
A’
B’
C’ T
Trang Trang 13 13
C’ = T(C)
KL A’:B’:C’ = A:B:C
Trang 14Bảo toàn song song
d1d2
Trang 15Hệ quả
-Đoạn thẳng biến thành đoạn thẳng.
-Đa giác biến thành đa giác.
-Đường cong bezier biến thành đường cong Bezier.
Trang Trang 15 15
T
Trang 16Biến đổi đối tượng
Trang Trang 16 16
Trang 17Biến đổi đối tượng
Trang Trang 17 17
Trang 18Biến đổi đối tượng
Trang Trang 18 18
Trang 19Biến đổi đối tượng
Trang Trang 19 19
Trang 20Biến đổi đối tượng
Trang Trang 20 20
Trang 21Biến đổi đối tượng
Trang Trang 21 21
Trang 22Biến đổi đối tượng
Trang Trang 22 22
Trang 23Công thức xác định ảnh của một điểm
B
1 4
5
0 2
3
0 2
2 1
2 2
1 4
5
A' thành biến
A
Trang Trang 23 23
5
0 2
3
0 2
2 1
1 3
1 0
3
B' thành biến
B
Trang 24Các phép biến đổi affine cơ sở
Có 3 phép biến đổi cơ sở
-Phép tịnh tiến
-Phép quay
-Phép tỉ lệ
Trang Trang 24 24
Trang 25Phép tịnh tiến (translation)
Dùng để thay đổi vị trí của các đối tượng từ vị trí này sang vị trí khác.
Tham số :
- Độ dịch chuyển trên trục Ox : tx
- Độ dịch chuyển trên trục Oy : ty
Trang Trang 25 25
tx
ty
Trang 26trận ma
Dạng
t P
P
t P
P
hàm Dạng
y y
' y
x x
' x
Trang Trang 26 26
t
0 1
0
0 0
1 M
y x
Trang 27Phép tịnh tiến
Phép tịnh tiến –– Cài đặtCài đặt
TAffine2D BuildTranslation2D(double tx, double ty)
return T;
}
Trang 28Phép quay (rotation)
Dùng để thay đổi hướng của các đối tượng
Tham số :
- Tâm quay : O
- Góc quay : α
Trang Trang 28 28
O
α
Trang 29=
α
− α
=
0 sin
cos
trận ma
Dạng
P cos
P sin
P
P sin
P cos
P
hàm Dạng
y x
' y
y x
' x
Trang Trang 29 29
−
α α
=
1 0
0
0 cos
sin
0 sin
cos M
Trang 30Phép quay
Phép quay –– cài đặtcài đặt
TAffine2D 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 30 30
return T;
}
Trang 31Phép tỉ lệ (scaling)
Dùng để thay đổi kích thước của các đối tượng
Tham số :
- Tâm tỉ lệ : O
- Hệ số tỉ lệ : sx, sy
Trang Trang 31 31
O
Trang 32trận ma
Dạng
P s P
P s P
hàm
Dạng
x
y y
' y
x x
' x
Trang Trang 32 32
0
0 s
0
x
Trang 33Phép tỉ lệ
Phép tỉ lệ –– cài đặtcài đặt
TAffine2D BuildScaling2D(double sx, double sy)
return T;
}
Trang 34Nguyên lý kết hợp các phép biến đổi
Nếu T1, T2 là phép biến đổi affine
Thì
- T = T1 + T2 là phép biến đổi affine
- M = M1 x M2
Trang Trang 34 34
2 , M2
T, M
Trang 35Nguyên lý phân rã phép biến đổi
Mọi phép biến đổi affine bất kỳ đều có thể phân rã
thành một chuỗi các phép biến đổi cơ bản.
T
Trang Trang 35 35
T1
Tn
Trang 36Cài đặt nguyên lý kết hợp
TAffine2D operator + (TAffine2D T1, TAffine2D T2)
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;
}
Trang 37Phép đồng nhất (Identity)
Dạng
P P
P P
hàm Dạng
y
' y
x
' x
Trang Trang 37 37
0
0 1
0
0 0
1 M
trận ma
Dạng
Trang 38Phép đồng nhất
Phép đồng nhất –– Cài đặtCài đặt
return T;
}
Trang 39Phép đối xứng (reflection)
y Đối xứng qua Oy
Trang Trang 39 39
Đối xứng qua Ox
Trang 40P P
P P
hàm Dạng
Ox trục
qua xứng
Đối
y
' y
x
' x
Dạng
P P
P P
hàm Dạng
Oy trục
xứng Đối
y
' y
x
' x
Trang Trang 40 40
0
0 1 0
0 0
1 M
trận ma
0
0 1
0
0 0
1 M
trận ma
Dạng
Trang 41Phép biến dạng (shearing)
Dùng để làm nghiêng đối tượng theo một trục nào đó Tham số :
- Trục nghiêng : Ox
- Góc nghiêng : β
Trang Trang 41 41
β
Trang 42Phép biến dạng
Phép biến dạng –– công thứccông thức
=
0 0
1 0
0 1
trận ma
Dạng
P P
P tg P
P
hàm Dạng
y
' y
y x
' x
Trang Trang 42 42
=
1 0
0
0 1
sh
0 0
1 M
hoặc
1 0
0
0 1
tg
0 0
1
Trang 43Phép nghịch đảo
T
Trang Trang 43 43
T -1
Trang 440 bc
ad với
-, 1 f
e
0 d
c
0 b
a M
có T
Nếu
1
-Trang Trang 44 44
ad
af
be bc
ad
de cf
0 bc
ad
a bc
ad
c
0 bc
ad
b bc
ad
d M
có T
thì
1 -
Trang 45Biến đổi mô hình đối tượng phân cấp
Trang Trang 45 45
Trang 46Biến đổi mô hình đối tượng phân cấp
Trang Trang 46 46
Tcon = Tcon-cha + Tcha
Hệ qui chiếu gốc