BỘ GIAO THÔNG VẬN TẢI

TRƯỜNG ĐẠI HỌC HÀNG HẢI
BỘ MÔN: KHOA HỌC MÁY TÍNH
KHOA: CÔNG NGHỆ THÔNG TIN
BÀI GIẢNG
ĐỒ HỌA MÁY TÍNH
TÊN HỌC PHẦN : ĐỒ HỌA MÁY TÍNH
MÃ HỌC PHẦN : 17211
TRÌNH ĐỘ ĐÀO TẠO : ĐẠI HỌC CHÍNH QUY
DÙNG CHO SV NGÀNH : CÔNG NGHỆ THÔNG TIN

HẢI PHÒNG - 2010
MỤC LỤC
STT NỘI DUNG TRANG
CHƯƠNG 1 GIỚI THIỆU ĐỒ HỌA MÁY TÍNH 1
1.1
Giới thiệu về đồ họa máy tính 1
1.2
Tổng quan về một hệ đồ họa 1
1.2.1
Hệ tọa độ thực, hệ tọa độ thiết bị và hệ tọa độ chuẩn 2
1.2.2
Mô hình màu 3
CHƯƠNG 2 CÁC ĐỐI TƯỢNG ĐỒ HỌA CƠ BẢN 4
2.1
Giới thiệu về các đối tượng đồ họa cơ sở 4
2.1.1
Các đối tượng đồ họa cơ sở: điểm, đường, vùng tô, văn bản 4
2.1.2
Các thuộc tính của các đối tượng đồ họa cơ sở 4
2.2
Các thuật toán vẽ đối tượng đồ họa cơ sở 4
2.2.1
Vẽ đường thẳng 6
2.2.2
Vẽ đường tròn, elip 8
2.3
Các thuật toán tô màu 9
2.3.1
Thuật toán tô màu dựa theo dòng quét đơn giản 10
2.3.2
Thuật toán tô màu dựa theo đường biên 11
2.4
Bài tập áp dụng 12
CHƯƠNG 3 CÁC PHÉP BIẾN ĐỔI ĐỒ HỌA 2 CHIỀU 13
3.1 Các phép biến đổi cơ sở 13
3.1.1 Giới thiệu về phép biến đổi 13
3.1.2 Phép tịnh tiến 13
3.1.3 Phép biến đổi tỉ lệ 13
3.1.4 Phép quay 14
3.2 Kết hợp các phép biến đổi 14
3.2.1 Kết hợp các phép tịnh tiến 14
3.2.2 Kết hợp các phép biến đổi tỉ lệ 14
3.2.3 Kết hợp các phép quay 14
3.3 Một số phép biến đổi khác 15
3.3.1 Phép biến dạng 15
3.3.2 Phép đối xứng 15
3.3.3 Tính chất của phép biến đổi affine 15
3.4 Phép biến đổi giữa các hệ tọa độ 15
3.5 Bài tập áp dụng 16
CHƯƠNG 4 PHÉP QUAN SÁT 2 CHIỀU 17
4.1 Cửa sổ và vùng quan sát 17
4.2 Phép biến đổi từ cửa sổ - đến – vùng quan sát 18
4.3 Phép cắt xén hai chiều 19
4.3.1 Giải thuật Cohen – Sutherland 20
4.3.2 Giải thuật chia tại trung điểm 21
4.3.3 Giải thuật Liang – Barsky 22
4.4 Bài tập áp dụng 23
CHƯƠNG 5 ĐỒ HỌA 3 CHIỀU 24
5.1 Tổng quan về đồ họa ba chiều 24
5.1.1 Quy trình hiển thị đồ họa ba chiều 24
5.1.2 Mô hình hóa đối tượng 24
5.2 Biểu diễn đối tượng ba chiều 26
5.2.1 Biểu diễn mặt đa giác 26
5.2.2 Đường cong và mặt cong , đường cong và mặt cong Bezier, B-
Spline
26
5.3 Các phép biến đổi hình học ba chiều 28
5.3.1 Phép biến đổi tỷ lệ 29
5.3.2 Phép biến dạng 29
5.3.3 Phép tịnh tiến 30
5.3.4 Phép quay 30
5.4 Bài tập áp dụng 31
CHƯƠNG 6 QUAN SÁT 3 CHIỀU 32
6.1 Các phép chiếu 32
6.2 Phép chiếu song song 33
6.3 Phép chiếu phối cảnh 36
6.4 Bài tập áp dụng 40
CHƯƠNG 7 HIỂN THỊ HÌNH ẢNH THẬT 41
7.1 Khử đường khuất, mặt khuất 41
7.2 Phép tô bóng 44
7.3 Bài tập áp dụng 48
Tài liệu, Đề thi ôn tập 49
Tên học phần: Đồ họa máy tính Loại học phần: 4
Bộ môn phụ trách giảng dạy: Khoa học Máy tính Khoa phụ trách: CNTT
Mã học phần: 17211 Tổng số TC: 4
TS tiết Lý thuyết Thực hành/Xemina Tự học Bài tập lớn Đồ án môn học
75 45 15 0 15 0
Điều kiện tiên quyết:
Sinh viên phải học xong các học phần sau mới được đăng ký học phần này:
Toán cao cấp, Toán rời rạc, Kỹ thuật lập trình, Tin học đại cương, Cấu trúc dữ liệu, Giải thuật
Mục tiêu của học phần:
Cung cấp cho sinh viên kiến thức và rèn luyện kỹ năng lập trình đồ họa máy tính đồ họa máy
tính, các phương pháp dựng hình, xử lý hình ảnh cơ bản trong đồ họa.
Nội dung chủ yếu
- Những vấn đề cơ bản về đồ họa máy tính
- Các thuật toán cơ bản trong đồ họa máy tính.
- Đồ họa 2D/3D
- Các phương pháp biến hình
- Các phương pháp tạo bóng
Nội dung chi tiết của học phần:
TÊN CHƯƠNG MỤC
PHÂN PHỐI SỐ TIẾT
TS LT TH/Xemina BT KT
Chương 1: Giới thiệu đồ họa máy tính. 3 3 0
1.1. Giới thiệu về đồ họa máy tính
1.2. Tổng quan về một hệ đồ họa
Chương 2 : Các đối tượng đồ họa cơ bản 12 9 2 1
2.1. Giới thiệu về các đối tượng đồ họa cơ sở
2.1.1. Các đối tượng đồ họa cơ sở : điểm, đường,
vùng tô, văn bản,...
TÊN CHƯƠNG MỤC
PHÂN PHỐI SỐ TIẾT
TS LT TH/Xemina BT KT
2.1.2. Các thuộc tính của các đối tượng đồ họa cơ
sở
2.2. Các thuật toán vẽ đối tượng đồ họa cơ sở
2.2.1. Vẽ đường thẳng
2.2.2. Vẽ đường tròn, ellipse
2.3. Các thuật toán tô màu
2.3.1. Thuật toán tô màu dựa theo đường biên
2.3.2. Thuật toán tô màu theo dòng quét
2.4. Bài tập áp dụng
Chương 3: Các phép biến đổi đồ họa 2 chiều. 10 8 2
3.1. Các phép biến đổi cơ sở
3.1.1 Giới thiệu về phép biến đổi, biểu diễn ma trận
của phép biến đổi, phép biến đổi affine
3.1.2. Phép tịnh tiến
3.1.3. Phép biến đổi tỉ lệ
3.1.4. Phép quay quanh gốc tọa độ
3.1.5. Biểu diễn ma trận của các phép biến đổi. Hệ
tọa độ thuần nhất
3.2. Kết hợp các phép biến đổi
3.2.1. Kết hợp hai hay nhiều phép tịnh tiến
3.2.2. Kết hợp hai hay nhiều phép biến đổi tỉ lệ
3.2.3. Kết hợp hai hay nhiều phép quay quanh tâm
3.3. Một số phép biến đổi khác
3.3.1. Phép biến dạng
3.3.2. Phép đối xứng
TÊN CHƯƠNG MỤC
PHÂN PHỐI SỐ TIẾT
TS LT TH/Xemina BT KT
3.3.3. Tính chất của phép biến đổi affine
3.4. Phép biến đổi giữa các hệ tọa độ
3.5. Bài tập áp dụng
Chương 4: Phép quan sát hai chiều 9 6 2 1
4.1. Cửa sổ, Vùng quan sát
4.2. Phép biến đổi từ cửa sổ - đến – vùng quan sát
4.3. Phép cắt xén 2 chiều
4.3.1 Giải thuật Cohen – Suntherland
4.3.2 Giải thuật chia trung điểm
4.3.3 Giải thuật Liang – Barsky
4.4. Bài tập áp dụng
Chương 5: Đồ họa ba chiều 21 9 5 6 1
5.1. Tổng quan về đồ họa ba chiều
5.1.1. Quy trình hiển thị đồ họa ba chiều
5.1.2. Mô hình hóa đối tượng
5.2. Biểu diễn đối tượng ba chiều
5.2.1. Biểu diễn mặt đa giác
5.2.2. Đường cong và mặt cong , đường cong và mặt
cong Bezier, B-Spline
5.3. Các phép biến đổi hình học ba chiều
5.3.1. Phép tỷ lệ
5.3.2. Phép biến dạng
5.3.3. Phép quay quanh trục tọa độ
5.3.4. Phép đối xứng
5.4. Bài tập áp dụng
TÊN CHƯƠNG MỤC
PHÂN PHỐI SỐ TIẾT
TS LT TH/Xemina BT KT
Chương 6: Quan sát ba chiều 10 6 2 2
6.1. Các phép chiếu
6.2. Phép chiếu song song
6.3. Phép chiếu phối cảnh
6.4. Bài tập áp dụng
Chương 7: Hiển thị hình ảnh thật 10 4 2 3 1
7.1 Khử đường khuất, mặt khuất
7.2 Phép tô bóng
Nhiệm vụ của sinh viên :
Tham dự các buổi thuyết trình của giáo viên, tự học, tự làm bài tập do giáo viên giao, tham dự
các bài kiểm tra định kỳ và cuối kỳ.
Tài liệu học tập :
- Đặng Văn Đức. Kỹ thuật đồ họa máy tính. Viện Công nghệ thông tin. 2002.
- Donald Hearn, M. Pauline Baker, Computer Graphics, Prentice-Hall Inc., Englewood
Cliffs, New Jersey, 1986.
- F.S.Hill, Computer graphics, 1990
Hình thức và tiêu chuẩn đánh giá sinh viên:
- Hình thức thi cuối kỳ : Thi viết.
- Sinh viên phải đảm bảo các điều kiện theo Quy chế của Nhà trường và của Bộ
Thang điểm: Thang điểm chữ A, B, C, D, F
Điểm đánh giá học phần: Z = 0,4X + 0,6Y.
CHƯƠNG I GIỚI THIỆU ĐỒ HỌA MÁY TÍNH
1.1 Giới thiệu về đồ họa máy tính
Ngày nay, đồ họa máy tính được ứng dụng rộng rãi trong ngành công nghệ thông tin. Khó mà tìm
được một ứng dụng thương mại của công nghệ thông tin không sử dụng một thành phần nào đó của
hệ đồ họa máy tính. Đồ họa máy tính ở vị trí quan trọng trong lĩnh vực thiết kế và giao tiếp kỹ
thuật. Nó là cơ sở để chuyển đổi các giải pháp tính toán số sang thể hiện hình ảnh tự nhiên cho thiết
kế kỹ thuật hay muốn sáng tỏ một vấn đề phức tạp. Đồ họa máy tính biểu diễn được hình ảnh đối
tượng, quan hệ, dữ liệu, vị trí … Đồ họa máy tính còn có chức năng mô tả kích thước của đối
tượng, phân tích dữ liệu. Trong những thập niên cuối thế kỷ 20, sự phát triển mạnh của những hệ
đồ họa như CAD/CAM đã trở thành chuẩn công nghiệp và trường học.
7.2 Tổng quan về một hệ đồ họa
Mục tiêu của đồ họa máy tính có chức năng tạo ra và thao tác các hình ảnh đồ họa, nên nó phải có
khả năng tạo ra và hiệu chỉnh các hình ảnh bằng các tương tác và đáp ứng. Các ứng dụng đồ họa
đưa ra các chỉ dẫn thuật ngữ theo yêu cầu đồ họa người dùng. Thư viện đồ họa thực hiện tương tác,
làm cầu nối cho giao tiếp giữa người dùng và các thiết bị vật lý đơn giản đi.
Hệ thống đồ họa
Một trong các yêu cầu chính của một hệ thống đồ họa là các ứng dụng, áp dụng cho nhiều hệ thiết
bị vật lý, phải được phát triển không phụ thuộc vào phần cúng. Để có được điều đó, phải có tiêu
chuẩn hóa cho môi trường đồ họa ở mức chức năng, bằng việc cung cấp sự độc lập thiết bị và ngôn
ngữ lập trình.
Sự độc lập với thiết bị cho phép các chương trình ứng dụng đồ họa chạy trên các dạng phần cứng
khác nhau. Nó được thực hiện thông qua thiết bị nhập xuất logic cung cấp cho phần mềm ứng dụng
thông qua thư viện đồ họa và ánh xạ thiết bị vật lý cụ thể.
Cho tới nay, có những tiêu chuẩn đồ họa đã được phát triển trong nhiều năm, bao gồm:
GKS(Graphics Kernel System – 1985), được phát triển riêng cho các thiết bị nhập xuất 2 chiều.
GKS-3D bổ sung thêm khả năng lập trình 3 chiều. PHIGS (Programmer’s Hierarchical Graphics
System – 1984) hay PHIGS+ bao gồm khả năng lập trình không gian , tạo thành thao tác dữ liệu đồ
họa phức tạp …
Các tiêu chuẩn đồ họa thực tế là kết quả của việc chấp nhận trong công nghiệp các giao diện đặc
trưng, được đề xuất bởi nhiều công ty và không nêu ra trong các tiêu chuẩn chính thức. Được nhắc
đến trong số này là hệ X-Windows, cung cấp một loạt các chức năng nhập và thao tác đồ họa 2
chiều. Sự mở rộng được bắt đầu vào giữa những năm 80 là hệ X-Windows 3 chiều.
Để đảm bảo sự linh hoạt, các tiêu chuẩn đồ họa thiết lập cho ứng dụng các thay đổi tối thiểu, cho
phép nó định địa chỉ các thiết bị nhập xuất khác nhau. Khởi đầu, người lập trình tạo ra một hệ thống
Trang
1
tọa độ mô hình, mô tả đối tượng gọi là hệ thống tọa độ thực. Tiếp theo, là hệ tọa độ tiêu chuẩn và
hệ tọa độ thiết bị. Chương trình ứng dụng sẽ giao tiếp với hệ tọa độ chuẩn theo cách thức phù hợp,
không quan tâm đến thiết bị xuất được dùng. Do đó, tạo ra sự độc lập với thiết bị trong việc tạo ra
hình ảnh của đối tượng.
1.2.1 Hệ tọa độ thực, hệ tọa độ thiết bị và hệ tọa độ chuẩn
Trong lĩnh vực kỹ thuật đồ họa, chúng ta phải hiểu được rằng thực chất của đồ họa là làm thế nào
để có thể mô tả và biến đổi được các đối tượng trong thế giới thực trên máy tính. Bởi vì, các
đối tượng trong thế giới thực được mô tả bằng tọa độ thực. Trong khi đó, hệ tọa độ thiết bị lại sử
dụng hệ tọa độ nguyên để hiển thị các hình ảnh. Đây chính là vấn đề cơ bản cần giải quyết.
Ngoài ra, còn có một khó khăn khác là với các thiết bị khác nhau thì có các định nghĩa khác nhau.
Do đó, cần có một phương pháp chuyển đổi tương ứng giữa các hệ tọa độ và đối tượng phải được
định nghĩa bởi các thành phần đơn giản như thế nào để có thể mô tả gần đúng với hình ảnh thực
bên ngoài.
Hệ tọa độ thực là hệ tọa Decac, mô tả tọa độ thực của đối tượng. Các phép biến hình mô tả trong các
chương sau có thể áp dụng trực tiếp trong tọa độ thực.
Hệ tọa độ thiết bị được dùng cho một thiết bị
xuất cụ thể nào đó, ví dụ như máy in, màn hình..
Trong hệ tọa độ thiết bị thì các điểm được mô
tả bởi tọa độ nguyên. Điều này có nghĩa là các
điểm trong hệ tọa độ thực được định nghĩa liên
tục, còn các điểm trong hệ tọa độ thiết bị là rời rạc
và giới hạn. Ngoài ra, phép biến hình từ tọa độ
thực sang tọa độ thiết bị phụ thuộc loại thiết bị
hiển thị. Do đó, các phương pháp tổng quát của
ứng dụng đồ họa có khuynh hướng bỏ qua đặc
điểm riêng của thiết bị, mà cố gắng thay thế thông qua một tiêu chuẩn thư viện giao diện đồ họa,
chẳng hạn như GKS hay PHIGS.
Hệ tọa độ thiết bị chuẩn được định nghĩa cho thiết bị đồ họa lý tưởng. Do cách định nghĩa các hệ
tọa độ thiết bị khác nhau nên một hình ảnh hiển thị được trên thiết bị này là chính xác thì chưa
chắc hiển thị chính xác trên thíết bị khác. Người ta xây dựng một hệ tọa độ thiết bị chuẩn đại diện
chung cho tất cả các thiết bị để có thể mô tả các hình ảnh mà không phụ thuộc vào bất kỳ thiết bị
nào. Trong hệ tọa độ chuẩn, các tọa độ x, y sẽ được gán các giá trị trong đoạn từ [0,1].
1.2.2 Mô hình màu
Màu sắc được sử dụng trong các ứng dụng đồ họa máy tính để giúp người dùng hiểu rõ về đối tượng hình
học. Các màn hình đồ họa dựa trên việc sử dụng các màu sắc chromatic. Chúng dựa trên lý thuyết về bộ
não người là màu sắc ánh sáng được tiếp nhận như sự phối hợp từ 3 màu là đỏ (red), xanh lá cây (green),
và xanh dương (blue). Nói chung, màu được mô tả bằng 3 thuộc tính là màu sắc (hue), độ bão hòa
(saturation), và độ sáng (brightness); chúng xác định vị trí trong quang phổ màu, độ tinh khiết và cường
độ sáng. Có hàng loạt phương pháp được tạo các mô hình màu trong các ứng dụng đồ họa. Trong phần
này chỉ đưa ra những mô hình màu tiêu biểu hơn cả, giúp tìm hiểu các ứng dụng đã lựa chọn màu sắc
thích hợp như thế nào.

Trang
2
a. RGB (Red – Green – Blue):
Mô hình màu RGB mô tả màu
sắc bằng 3 thành phần chính là
Red – Green và Blue. Mô hình
này được xem như một khối lập
phương 3 chiều với màu red là
trục x, màu Green là truc y,
và màu Blue là trục z. Mỗi
màu trong mô hình này được
xác định bởi 3 thành phần R, G,
B. Ứng với các tổ hợp khác
nhau của 3 màu này sẽ cho ta
một màu mới .
Trong hình lập phương trên,
mỗi màu gốc (R,G,B) có các
gốc đối diện là các màu bù với nó. Hai màu được gọi là bù nhau khi kết hợp hai màu này lại với
nhau ra màu trắng. Ví dụ : Green – Magenta, Red – Cyan, Blue – Yellow.
b. CMY (Cyan – Magenta – Yellow):
Tương tự như mô hình màu RGB nhưng 3 thành phần chính là Cyan – Magenta – Yellow. Do đó,
tọa độ các màu trong mô hình CMY trái ngược với mô hình RGB. Ví dụ : màu White có các
thành phần là (0,0,0), màu Black (1,1,1), màu Cyan (1,0,0),....
c. HSV (Hue – Saturation – Value ):
Thực chất của mô hình này là sự biến đổi của mô hình RGB. Mô hình HSV được mô tả bằng lệnh
lập phương RGB quay trên đỉnh Black. H (Hue) là góc quay trục V (value) qua 2 đỉnh Black và
White. Các giá trị biến thiên của H, S, V như sau: (Hue) chỉ sắc thái có giá trị từ 0
0
– 360
0
. S
(Saturation) chỉ độ bão hoà. V (Value) có giá trị từ 0 – 1. Các màu đạt giá trị bão hòa khi s = 1 và v
= 1.

CHƯƠNG II CÁC ĐỐI TƯỢNG ĐỒ HỌA CƠ BẢN
Trang
3
2.1 Giới thiệu về các đối tượng đồ họa cơ sở
Kỹ thuật đồ họa liên quan đến tin học và toán học bởi vì hầu hết các giải thuật vẽ, tô cùng các phép
biến hình đều được xây dựng dựa trên nền tảng của hình học không gian hai chiều và ba chiều.
Trong chương này, chúng ta giới thiệu các thuật toán vẽ và tô các đường cơ bản như đường thẳng,
đa giác, đường tròn, ellipse. Các thuật toán này giúp cho sinh viên hiểu được quá trình vẽ và tô một
đối tượng hình học cơ sở như thế nào.
2.1.1 Các đối tượng đồ họa cơ sở
- Điểm: điểm là thành phần cơ sở được định nghĩa trong một hệ tọa độ, đối với hệ tọa độ 2 chiều
mỗi điểm được xác định bởi hoành độ và tung độ. Ngoài thông tin tọa độ, điểm còn có thông tin
màu sắc.
- Đoạn thẳng, đường thẳng: đường thẳng xác định qua 2 điểm, đoạn thẳng bị giới hạn bởi 2 điểm
đầu và cuối. Phương trình đường thẳng được xác định qua 2 điểm P(x
1
, y
1
) và Q(x
2
, y
2
) như sau:

1 2
1 2
1
1
y y
x x
y y
x x


·


Hay ở dạng phương trình đoạn chắn y = mx + b, trong đó: D
x
= x
2
–x
1
, D
y
= y
2
–y
1
,
x
y
D
D
m ·
Hay ở dạng tổng quát: Ax + By + C = 0 , trong đó: A = y
2
- y
1
, B = x
1
– x
2
, C = x
2
y
1
– x
1
y
2
- Đường gấp khúc: là tập các đoạn thẳng nối với nhau một cách tuần tự, các đoạn không nhất thiết
phải tạo thành hình khép kín và có thể cắt nhau. Giao của hai đoạn thẳng là đỉnh, đỉnh đầu và đỉnh
cuối của đa giác trùng nhau.
- Vùng tô: bao gồm đường biên và vùng bên trong, đường biên là đường khép kín như đa giác lồi.
- Ký tự, chuỗi ký tự: Ký tự cho phép hiển thị thông tin theo ngôn ngữ nào đó.
2.1.2 Các thuộc tính của các đối tượng đồ họa cơ sở
- Điểm có thuộc tính màu sắc.
- Đoạn thẳng, đường thẳng có thuộc tính màu sắc, độ rộng, kiểu nét.
- Vùng tô có thuộc tính của đường thẳng, và thuộc tính riêng là mầu tô và mẫu tô.
- Ký tự có thuộc tính màu sắc, kiểu chữ, cỡ chữ, khoảng cách giữa các ký tự, hướng
hiển thị ký tự...
2.2 Các thuật toán vẽ đối tượng đồ họa cơ sở
2.2.1 Thuật toán vẽ đường thẳng
Xét đoạn thẳng có hệ số góc 0<m<=1 và Δx>0. Với các đoạn thẳng dạng này, nếu (x
i
, y
i
) là điểm đã
được xác định ở bước thứ i thì điểm kế tiếp (x
i+1
, y
i+1
) ở bước thứ i+1 sẽ là một trong hai điểm (x
i
+
1, y
i
) hoặc (x
i
+ 1, y
i
+ 1).
Vấn đề đặt ra là chọn điểm vẽ như thế nào để đường thẳng được vẽ gần với đường thẳng muốn vẽ
nhất và đạt được tối ưu hóa về mặt tốc độ ?
Thuật toán DDA
Trang
4
Là thuật toán tính toán các điểm vẽ dọc theo đường thẳng dựa vào hệ số góc của phương trình
đường thẳng y = mx+b. Trong đó:
1 2 x
1
2 y
x
y
x x y y m Δ , Δ ,
Δ
Δ
− · − · ·
. Nhận thấy tọa độ của
điểm x sẽ tăng 1 đơn vị trên mỗi điểm vẽ, còn việc quyết định chọn y
i +1
là y
i
+1 hay y
i
sẽ phụ
thuộc vào giá trị sau khi làm tròn của tung độ y. Tuy nhiên, nếu tính trực tiếp giá trị thực của y ở
mỗi bước từ phương trình y = mx+b thì cần một phép toán nhân và một phép toán cộng số thực:
y
i +1
= mx
i +1
+ b = m(x
i
+ 1) + b = mx
i
+ b + m
Để cải thiện tốc độ, người ta khử phép nhân trên số thực. Ta có :
y
i
= mx
i
+ b ⇒ y
i +1
= y
i
+ m → int(y
i
+1) (2-1)
Có 2 khả năng:
• 0<m<=1: x
i +1
= x
i
+ 1, y
i +1
= y
i
+ m→ int(y
i +1
) (2-2)
• m>1: x
i +1
= x
i
+ 1/m → int(x
i+1
), y
i +1
= y
i
+ 1
Hai trường hợp này dùng để vẽ một điểm bắt đầu từ bên trái đến điểm cuối cùng bên phải của đường
thẳng (xem hình 2.1). Nếu điểm bắt đầu từ bên phải đến điểm cuối cùng bên trái thì xét ngược lại :
• 0<m<=1: x
i +1
= x
i
- 1, y
i +1
= y
i
- m → int(y
i +1
) (2-3)
• m>1: x
i +1
= x
i
- 1/m → int(x
i+1
), y
i +1
= y
i
- 1
Hình 2.1 Dạng đường thẳng tương ứng 2 khả năng của m.
Tương tự, có thể tính toán các điểm vẽ cho trường hợp m<0:
khi |m|<=1 hoặc |m|>1 (sinh viên tự tìm hiểu thêm).
Thuật toán Bresenham
Hình 2.2 Dạng đường thẳng nếu
0<m<=1
Gọi (x
i+1
, y
i +1
) là điểm thuộc đoạn thẳng (xem hình 2.2). Ta có y = m(x
i
+1) + b
Đặt d1

= y
i +1
– y
i
và d2

= (y
i
+1) – y
i +1
Trang
5
Việc chọn điểm (x
i +1
, y
i +1
) là P
1
hay P
2
phụ thuộc vào việc so sánh d1 và d2
• Nếu d1- d2<0 : chọn điểm P
1
, tức là y
i +1
= y
i
• Nếu d1- d2 ≥0 : chọn điểm P
2
, tức là y
i +1
= y
i
+1
Ta có : d1 – d2 = 2y
i+1
– 2y
i
– 1 = 2m(x
i
+1) + 2b – 2y
i
– 1 (2-4)
⇒ P
i
= Δx (d1

– d2) = Δx[2m(x
i
+1) + 2b - 2y
i
– 1] =
= 2Δy(x
i
+1) – 2Δx.y
i
+ Δx(2b – 1) = 2Δy.x
i
– 2Δx.y
i
+ 2Δy + Δx(2b – 1)
Vậy C = 2Δy + Δx(2b – 1) = Const ⇒ P
i
= 2Δy.x
i
– 2Δx.y
i
+ C (2-5)
Nhận xét rằng nếu tại bước thứ i ta xác định được dấu của P
i
thì xem như ta xác định được điểm cần
chọn ở bước (i+1). Ta có :
P
i +1
– P
i
= (2Δy.x
i+1
– 2Δx.y
i+1
+ C) – (2Δy.x
i
– 2Δx.y
i
+ C )
⇔ P
i +1
= P
i
+ 2Δy – 2Δx ( y
i+1
- y
i
)
• Nếu P
i
< 0 : chọn điểm P
1
, tức là y
i +1
= y
i
và P
i +1
= P
i
+ 2Δy
• Nếu P
i
≥ 0 : chọn điểm P
2
, tức là y
i +1
= y
i
+1 và P
i +1
= P
i
+ 2Δy – 2Δx (2-6)
Giá trị P
0
được tính từ điểm vẽ đầu tiên (x
o
, y
o
) theo công thức: P
o
= 2Δy.x
o
– 2Δx.y
o
+ C
Do (x
o
,y
o
) là điểm nguyên thuộc về đoạn thẳng nên ta có: b x
x
y
b mx y
o o o
Δ
Δ
+ · + ·
Thay y
o
vào phương trình trên ta được: P
o
= 2Δy – Δx
Nhận xét:
Thuật toán Bresenham chỉ thao tác trên số nguyên và chỉ tính toán trên phép cộng và phép nhân 2.
Điều này là một cải tiến làm tăng tốc độ đáng kể so với thuật toán DDA. Ý tưởng chính của thuật
toán này là ở chổ xét dấu P
i
để quyết định điểm kế tiếp, và sử dụng công thức truy hồi P
i +1
– P
i
để tính P
i
bằng các phép toán đơn giản trên số nguyên. Tuy nhiên, việc xây dựng trường hợp tổng
quát cho thuật toán Bresenham có phức tạp hơn thuật toán DDA.
2.2.2 Thuật toán vẽ đường tròn, elip
Trong hệ tọa độ Descartes, phương trình đường tròn bán kính R có dạng:
Tâm O(0,0) : x
2
+ y
2
= R
2
;
Tâm C(x
c
,y
c
) : (x – x
c
)
2
+ (y – y
c
)
2
= R
2

(2-7)
Trong hệ tọa độ cực :
] 2 [0, θ
Rsinθ y y
Rcosθ x x
,
c
c
¹
'
¹
+ ·
+ ·
∈ π
Trang
6
] ) (
Δ
Δ
[ 1 2y 2b 1 x
x
y
2 x
i i
− − + + ∆
Do tính đối xứng của đường tròn C, nên ta chỉ cần
vẽ 1/8 cung tròn, sau đó lấy đối xứng qua 2 trục
tọa độ và 2 đường phân giác thì ta vẽ được cả
đường tròn.
Hình 2.3 Đường tròn với các điểm đối xứng.
Thuật toán xét trung điểm
Do tính đối xứng của đường tròn nên ta chỉ cần vẽ 1/8 cung tròn, sau đó lấy đối xứng là vẽ được cả
đường tròn. Thuật toán trung điểm đưa ra cách chọn y
i+1
là y
i
hay y
i
-1 bằng cách so sánh điểm
Q(x
i+1
,y) với điểm giữa là trung điểm (Midpoint) của S1 và S2. Chọn điểm bắt đầu để vẽ là (0, R).
Giả sử (x
i
, y
i
) là điểm nguyên đã tìm được ở bước thứ i (xem hình 2.4), thì điểm (x
i+1
, y
i+1
) ở
bước i+1 là sự lựa chọn giữa S1 (x
i
+ 1, y
i
) và S2 (x
i
+ 1, y
i
– 1).

Hình 2.4 Đường tròn với điểm Q(x
i
+1, y)
và trung điểm.
Đặt F(x,y) = x
2
+ y
2
– R
2
, ta có :
• F(x,y) < 0 , nếu điểm (x,y) nằm
trong đường tròn.
• F(x,y) = 0 , nếu điểm (x,y) nằm
trên đường tròn.
• F(x,y) > 0 , nếu điểm (x,y) nằm
ngoài đường tròn.
Xét P
i
= F(MidPoint) = F(x
i
+1, y
i
– 1/2). Ta có :

Nếu P
i
< 0 : điểm MidPoint nằm trong đường tròn. Khi đó, điểm Q gần với điểm
S1 hơn
nên ta chọn y
i+1
= y
i
.
• Nếu P
i
>= 0 : điểm MidPoint nằm ngoài đường tròn. Khi đó, điểm Q gần với điểm S2 hơn
nên ta chọn y
i+1
= y
i
– 1.
Mặt khác : P
i+1
– P
i
= F(x
i+1
+1, y
i+1
– 1/2) – F(x
i
+ 1, y
i
– 1/2)
= [(x
i+1
+1)
2
+ (y
i+1
– 1/2)
2
– R
2
] – [(x
i
+1)
2
+ (y
i
– 1/2)
2
– R
2
]
= 2x
i
+ 3 + ((y
i+1
)
2
– (y
i
)
2
) – (y
i+1
– y
i
)
Trang
7
Vậy: Nếu P
i
< 0 : chọn y
i+1
= y
i
. Khi đó P
i+1
= P
i
+ 2x
i
+3 (2-8)
Nếu P
i
>= 0 : chọn y
i+1
= y
i
– 1. Khi đó P
i+1
= P
i
+ 2x
i
– 2y
i
+5
P
i
ứng với điểm ban đầu (x
o
, y
o
) = (0,R) là: P
o
= F(x
o
+ 1, y
o
– 1/2) = F(1, R – 1/2) = 5/4 –R
Thuật toán Bresenham
Tương tự thuật toán vẽ đường thẳng
Bresenham, các vị trí ứng với các tọa
độ nguyên nằm trên đường tròn có thể
tính được bằng cách xác định một trong
hai pixel gần nhất với đường tròn hơn
trong mỗi bước.
Hình 2.5 Đường tròn với khoảng cách
d1 và d2.
Ta có : d1 = (y
i
)
2
– y
2
= (y
i
)
2
– (R
2
- (x
i
+ 1)
2
)
d2 = y
2
– (y
i
– 1)
2
= (R
2
- (x
i
+ 1)
2
) – (y
i
– 1)
2
Đặt P
i
= d1 – d2 , do đó P
i+1
= P
i
+ 4x
i
+ 6 + 2((y
i+1
)
2
– (y
i
)
2
) – 2(y
i+1
– y
i
)
• Nếu Pi < 0 : chọn y
i+1
= y
i
. Khi đó P
i+1
= P
i
+ 4x
i
+6 (2-9)
• Nếu P
i
>= 0 : chọn y
i+1
= y
i
– 1. Khi đó P
i+1
= P
i
+ 4(x
i
– y
i
) + 10
• P
o
ứng với điểm ban đầu (x
o
, y
o
) = (0,R) là: P
o
= 3 – 2R.
Thuật toán vẽ elip
Tương tự thuật toán vẽ đường tròn, sử dụng thuật toán Bresenham để vẽ, ta chỉ cần vẽ 1/4 ellipse,
sau đó lấy đối xứng qua các trục tọa độ sẽ vẽ được toàn bộ ellipse.
Xét ellipse có tâm O, các bán kính là a và b, phương trình là:
Đặt F(x, y) = b
2
x
2
+ a
2
y
2
– a
2
b
2
(2-10)
Cung1/4 ellipse được vẽ nằm trong phần tư thứ nhất của hệ tọa độ. Căn cứ độ dốc gradient theo
hướng x (F’x = 2b
2
x) và hướng y (F’y = 2a
2
y) để vẽ cung 1/4 ellipse, cung chia thành 2 phần.
Phần thứ nhất của 1/4 ellipse chứa tọa độ điểm đầu tiên cần hiển thị (0 , b). Nếu có (x
i

, y
i
), tìm
điểm tiếp theo là (x
i
+1, y
i
-1) hay (x
i
+1 , y
i
).
Chọn P
i
= F(x
i
+ 1, y
i
– 1/2), do đó : P
i+1
= P
i
+ b
2
(2x
i
+ 3) + a
2
((y
i+1
–1/2)
2
– (y
i
–1/2)
2
)
• Nếu P
i
< 0 : y
i+1
= y
i
, do đó P
i+1
= P
i
+ b
2
(2x
i
+ 3)

Nếu P
i
>= 0 :
y
i+1
= yi - 1, do đó P
i+1
= P
i
+ b
2
(2x
i
+ 3) + a
2
(2 – 2y
i
)
• P
o
của điểm ban đầu (0, b) là: b
2
– a
2
b + a
2
/4
Phần còn lại của 1/4 ellipse: nếu có (x
i

, y
i
), tìm điểm (x
i+1
,y
i+1
) là (x
i
, y
i
-1) hay (x
i
+1, y
i
- 1)
Chọn P
i
= F(x
i
+ 1/2, y
i
– 1) , do đó : P
i+1
= P
i
+ a
2
(3 – 2y
i
) + b
2
((x
i+1
+ 1/2)
2
– (x
i
+ 1/2)
2
)
Trang
8
1
b
y
a
x
2
2
2
2
· +

Nếu P
i
>=0 : x
i+1
= x
i
, do đó P
i+1
= P
i
+ a
2
(3 - 2y
i
)

Nếu P
i
< 0 : x
i+1
= x
i
+1, do đó P
i+1
= P
i
+ b
2
(2x
i
+ 2) + a
2
(3 - 2y
i
)

P
o
của điểm đầu tiên trong phần thứ hai là: P
o
(x
i
, y
i
) = –a
2
b
2
+ b
2
(x
i
+ 1/2)
2
+ a
2
(y
i
-
1)
2


2.3 Thuật toán tô màu
Tô màu một vùng là thay đổi màu sắc của các điểm vẽ nằm trong vùng cần tô. Một vùng tô thường
được xác định bởi một đường khép kín nào đó gọi là đường biên. Dạng đường biên đơn giản
thường gặp là đa giác.
Việc tô màu thường chia làm 2 công đoạn :
- Xác định vị trí các điểm cần tô màu.
- Quyết định tô các điểm trên bằng màu nào. Công đoạn này sẽ trở nên phức tạp khi ta cần tô
theo một mẫu tô nào đó chứ không phải tô thuần một màu.
Có 3 cách tiếp cận chính để tô màu. Đó là : tô màu theo từng điểm (có thể gọi là tô đơn giản), tô
màu theo dòng quét và tô màu dựa theo đường biên. Chúng ta sẽ giới thiệu 2 loại thuật toán tô mầu
đơn giản và tô màu đường biên. Thuật toán tô màu theo dòng quét thì sinh viên tự tìm hiểu.
2.3
.1 Tô đơn giản
Thuật toán này bắt đầu từ việc xác định một điểm có thuộc vùng cần tô hay không ? Nếu đúng là
điểm thuộc vùng cần tô thì sẽ tô với màu muốn tô.
a. Tô đường tròn
Để tô đường tròn thì ta tìm hình vuông nhỏ nhất ngoại tiếp đường tròn bằng cách xác định điểm
trên bên trái (x
c
– r, y
c
– r) và điểm dưới bên phải (x
c
+ r, y
c
+ r) của hình vuông .
Giải thuật giả mã như sau:
i chạy từ x
c
-r đến x
c
+r
j chạy từ y
c
-r đến y
c
+r
tìm khoảng cách d giữa hai điểm (i,j) và tâm (x
c
,y
c
)
nếu d<r thì tô điểm (i,j) với màu muốn tô
Hình 2.6 đường tròn nội tiếp hình vuông. Hình 2.7 đa giác nội tiếp hình chữ nhật.
b.Tô đa giác
Trang
9
Trước tiên, chúng ta giải quyết bài
toán tìm hình chữ nhật nhỏ nhất có
các cạnh song song với hai trục tọa
độ chứa đa giác cần tô dựa vào hai
tọa độ (xmin, ymin), (xmax, ymax).
Trong đó, xmin, ymin là hoành độ
và tung độ nhỏ nhất, xmax, ymax là
hoành độ và tung độ lớn nhất của
các đỉnh của đa giác. Cách tô đa
giác là cho x đi từ xmin đến xmax, y
đi từ ymin đến ymax (hoặc ngược
lại). Nhưng khác với hình tròn, ta
không thể xác định một điểm nào
đó có nằm trong đa giác không?
Do đó, chúng ta phân tích bài toán sau đây:
Hình 2.8 Cho đa giác gồm 13 đỉnh là P
o

, P
1

, ....., P
12

, P
o
.
Xét điểm P(x,y) có thuộc đa giác không ? Nếu có thì tô với màu cần tô.
Thông thường một điểm nằm trong đa giác thì số giao điểm từ một tia bất kỳ xuất phát từ điểm đó
cắt biên của đa giác phải là một số lẻ lần. Đặc biệt, tại các đỉnh cực trị (cực đại hay cực tiểu ) thì
một giao điểm phải được tính 2 lần (xem hình 2.8). Tia có thể qua phải hay qua trái. Thông
thường ta chọn tia qua phải. Tuy nhiên có 4 khả năng nảy sinh như sau :
Gọi tung độ của đỉnh Pi là Pi.y . Nếu :
• P
i
.y < Min( P
i+1
.y, P
i -1
.y) hay P
i
.y > Max( P
i+1
.y, P
i -1
.y) thì P
i
là đỉnh cực trị ( cực tiểu
hay cực đại ).
• P
i -1
.y < P
i
.y < P
i+1
.y hay P
i -1.y
> P
i
.y > P
i+1
.y thì P
i
là đỉnh đơn điệu.
• P
i.y
= P
i+1.y
và P
i
.y < Min( P
i+2
.y , P
i-1
.y) hay P
i.y
> Max( P
i+2
.y , P
i -1
.y) thì đoạn
[P
i
, P
i+1
] là đoạn cực trị ( cực tiểu hay cực đại ).
• P
i. y
= P
i+1.y
và P
i -1
.y < P
i
.y < P
i+2
.y hay P
i -1.y
> P
i
.y > P
i+2
.y thì đoạn [P
i
,P
i+1
]
là đoạn đơn điệu.
Thuật toán kiểm tra điểm có nằm trong đa giác
- Với mỗi đỉnh của đa giác ta đánh dấu là 0 hay 1 theo qui ước như sau: nếu là đỉnh cực trị hay đoạn
cực trị thì đánh số 0. Nếu là đỉnh đơn điệu hay đoạn đơn điệu thì đánh dấu 1.
- Xét số giao điểm của tia nửa đường thẳng từ P là điểm cần xét với biên của đa giác. Nếu số giao
điểm là chẵn thì kết luận điểm không thuộc đa giác. Ngược lại, số giao điểm là lẻ thì điểm thuộc đa
giác.
2.3.2 Tô màu đường biên
Bài toán đặt ra : Cần tô màu một vùng nếu biết được màu của đường biên vùng tô và một điểm nằm
bên trong vùng tô.
Ý tưởng : Bắt đầu từ một điểm nằm bên trong vùng tô, kiểm tra các điểm lân cận của nó đã được tô
với màu muốn tô, hay điểm lân cận có màu trùng với màu biên không ? Nếu cả hai trường hợp đều
không phải thì ta sẽ tô điểm đó với màu muốn tô. Quá trình này được lặp lại cho đến khi không còn
tô được nữa thì dừng.

Trang
10
Có 2 quan điểm về cách tô này. Đó là dùng 4 điểm lân cận (có thể gọi là 4 liên thông) hay 8 điểm
lân cận (8 liên thông)
Cài đặt minh họa thuật toán 4 liên thông
Boundary_fill ( x,y, mauto, maubien :integer);
mau_ht : integer;
begin
mau_ht:= getpixel(x, y);
If (mau_ht <> mauto) and (mau_ht <> maubien) then
begin
putpixel(x,y,color);
Boundary_fill ( x+1,y, mauto, maubien );
Boundary_fill ( x-1,y, mauto, maubien );
Boundary_fill ( x,y+1, mauto, maubien );
Boundary_fill ( x,y-1, mauto, maubien );
end;
end;
Nhận xét :
- Thuật toán có thể không chính xác khi có một số điểm nằm trong vùng tô có màu là màu cần tô
của vùng.
- Việc thực hiện gọi đệ qui làm thuật toán không thể sử dụng cho vùng tô lớn ( tràn stack).
- Có thể khắc phục việc tràn stack bằng cách giảm số lần gọi đệ qui. Khởi đầu điểm (x,y) là điểm
có vị trí đặc biệt trong vùng tô, sau đó, gọi đệ qui các điểm lân cận của (x,y).
2.4 Bài tập áp dụng
Bài 1 Tại sao phải so sánh giá trị P
i
với 0 trong các giải thuật Bresenham hay Midpoint. Bản chất
của so sánh là gì?
Gợi ý: giá trị P
i
tạo ra không có phép chia nguyên, tính toán nhanh và chính xác hơn là tính trực
Trang
11
tiếp.
Bài 2 Cặt đặt các giải thuật Bresenham, MidPoint vẽ đoạn thẳng với hệ số góc trong khoảng [-1, 1],
đường tròn.
Gợi ý: Vẽ đường thẳng, ta xét 3 trường hợp 0 < m < 1, -1 < m < 0, m= 0.
Bài 3 Giải thích tại sao chỉ chọn cung 1/8 để vẽ rồi lấy đối xứng mà không mở rộng cho cung 1/16
hay 1/32.
Gợi ý: Nếu cung độ dài nhỏ hơn 1/8 thì giải thuật Midpoint không còn đúng nữa, vì không chính
xác.
Bài 4 Cài đặt giải thuật vẽ elip có tâm là gốc tọa độ, bán kính trục chính, trục phụ là a, b.
Gợi ý: Dựa trên cơ sở giải thuật Midpoint cho vẽ đường tròn, nhưng vẽ cho cung ¼ rồi lấy đối
xứng.
Bài 5 Cài đặt thuật toán tô màu đường biên cho đối tượng hình tròn.
Gợi ý: Sử dụng giả thuật tô mầu đường biên cải tiến, sử dụng giải thuật không đệ quy thì tốt hơn
giải thuật đệ quy.
CHƯƠNG III CÁC PHÉP BIẾN ĐỔI ĐỒ HỌA 2 CHIỀU
3.1 Các phép biến đổi cơ sở
Trong lĩnh vực đồ họa máy tính, hình dạng và kích thước của đối tượng 2 chiều đặc trưng bởi hệ
thống tọa độ Descartes 2 chiều. Một tập hợp các phép biến đổi hình học áp dụng cho đối tượng như:
Trang
12
dịch chuyển, thay đổi kích thước, phương chiều của nó . Các hệ CAD luôn có thao tác như: scale,
move, rotate, copy … thực hiện những phép biến đổi hình học cơ sở.
Mỗi đối tượng hình học được biểu diễn bằng tập điểm. Đường thẳng tạo thành từ hai điểm nút, một tam
giác là kết hợp từ ba đoạn thẳng. Do đó, tất cả các biểu diễn hai chiều được định nghĩa bẳng tập các tọa
độ (x, y) và xem là thành phần cơ bản của mọi đối tượng hình học 2 chiều.
Ma trận hay dùng cho các định nghĩa hình học và các thao tác trong đồ họa máy tính. Nó sẽ thuận tiện
nếu mọi biến đổi hình học có thể biểu diễn theo dạng này. Tuy nhiên, mô tả ma trận vuông cấp 2 trong hệ
tọa độ Descartes 2 chiều không mô tả đầy đủ các phép biến đổi. Để khắc phục, hệ tọa độ thuần nhất
được áp dụng, với mỗi điểm bất kỳ, ngoài hoành độ và tung độ sẽ có tọa độ thứ ba là 1 trong hệ tọa
độ thuần nhất.
3.1.1 Phép tịnh tiến
Khả năng tịnh tiến đối tượng là một đặc điểm cần thiết của mọi hệ thống đồ họa. Phép tịnh tiến làm cho
đối tượng dịch chuyển theo một hướng với độ dài xác định. Dưới dạng toán học, mô tả với hệ phương
trình sau:
x’ = x + T
x
(3-1)
y’ = y + T
y
3.1.2 Phép biến đổi tỷ lệ
Phép biến đổi tỉ lệ làm thay đổi kích thước đối tượng. Để co hay giãn tọa độ của một điểm P(x,y)
theo trục hoành và trục tung lần lượt là S
x
và S
y
(gọi là các hệ số tỉ lệ), nếu tâm tỷ lệ là gốc tọa
độ, thì ta nhân S
x
và S
y
lần lượt cho các tọa độ của P.
x’ = x.S
x
(3-2)
y’ = y.S
y
- Khi các giá trị S
x
, S
y
nhỏ hơn 1, phép biển đổi sẽ thu nhỏ đối tượng. Ngược lại, khi các
giá trị này lớn hơn 1, phép biến đổi sẽ phóng lớn đối tượng.
- Khi S
x
= S
y
, người ta gọi đó là phép đồng dạng (uniform scaling). Đây là phép biến đổi
bảo toàn tính cân xứng của đối tượng. Ta gọi là phép phóng đại nếu |S|>1 và là phép thu nhỏ nếu |
S|<1.
- Nếu hai hệ số tỉ lệ khác nhau thì ta gọi là phép không đồng dạng. Trong trường
hợp hoặc S
x
hoặc S
y
có giá trị 1, ta gọi đó là phép căng (strain).
3.1.3 Phép đối xứng
Thuật ngữ đối xứng hiểu như hình ảnh trong gương. Phép đối xứng sử dụng trong việc tạo các hình
đối xứng. Ví dụ như một nửa hình được tạo ra, sau đó lấy đối xứng để tạo nguyên hình, ví dụ như
việc tạo khung đỡ mái nhà. Các ứng dụng như CAD luôn có chỉ thị Mirror thực hiện chức năng trên.
Phép đối xứng qua điểm hay qua trục nào đó. Ma trận đối xứng sẽ có dạng chung như sau :
1
1
1
]
1

¸

·
1 0 0
0 0
0
[M] b
0 a
RFL
(3-3)
Trang
13
Các trường hợp khác nhau của đối xứng trục X, Y như sau :

1
1
1
]
1

¸

·
1 0 0
0 0
0
[M] 1 -
0 1
RFL_X

1
1
1
]
1

¸

·
1 0 0
0 0
0
[M] 1
0 1 -
RFL_Y

3.1.4 Phép quay
Phép quay làm thay đổi hướng của đối tượng. Một phép quay đòi hỏi phải có tâm quay, góc
quay. Góc quay dương thường được qui ước là chiếu ngược chiều kim đồng hồ, còn tâm quay là
gốc tọa độ. Ta có công thức biến đổi của phép quay điểm P(x,y) quanh gốc tọa độ góc θ tới vị trí
P’(x’, y’):
x’ = x.cosθ - y.sinθ (3-4)
y’ = x.sinθ + y.cosθ
hoặc dưới dạng ma trận sau:
] ] [ [
1
1
1
]
1

¸

− ·
1 0 0
0 cosθ sinθ
0 sinθ cosθ
1 y x 1 y' x'
3.2 Kết hợp các phép biến đổi
Những phép biến hình 2 chiều đòi hỏi không chỉ một mà là chuỗi thứ tự các phép biến hình cơ sở để
cuối cùng thu được mục tiêu mong muốn.
3.2.1 Kết hợp các phép tịnh tiến
Nếu ta thực hiện phép tịnh tiến từ điểm P được điểm P’, rồi lại thực hiện tiếp một phép tịnh tiến
khác lên P’ được điểm Q. Như vậy, điểm Q là ảnh của phép biến đổi kết hợp hai phép tịnh tiến liên
tiếp.
Q
x
= P
x
+ ( T
x1
+T
x2
)
Q
y
= P
y
+ ( T
y1
+ T
y2
)
Vậy kết hợp hai phép tịnh tiến là một phép tịnh tiến. Từ đó, ta có kết hợp của nhiều phép tịnh
tiến là một phép tịnh tiến.
3.2.2 Kết hợp các phép biến đổi tỉ lệ
Tương tự như phép tịnh tiến, ta có tọa độ điểm Q là điểm có được sau hai phép tỷ lệ M
1
(S
x1
, S
y1
),
M
2
(S
x2
, S
y2
) là :
Q
x
= P
x
* S
x1
* S
x2
Q
y
= P
y
* S
y1
* S
y2
Ta có kết hợp của nhiều phép tỷ lệ là một phép tỷ lệ.
3.2.3 Kết hợp các phép quay
Trang
14
Tương tự, ta có tọa độ điểm Q là điểm kết quả sau khi kết hợp hai phép quay cùng chiểu dương
quanh gốc tọa độ M
R1

1
) và M
R2

2
) là :
Q
x
= P
x
*cos(θ
1

2
) - P
y
*sin (θ
1

2
)
Q
y
= P
x
*sin(θ
1

2
) + P
y
*cos(θ
1

2
)
Ta có kết hợp của nhiều phép quay là một phép quay.
3.3 Một số phép biến đổi khác
3.3.1 Phép biến dạng
Phép biến dạng làm thay đổi hình dạng đối tượng, biến dạng theo trục hoành hay trục tung bằng
cách thay đổi tọa độ điểm ban đầu theo cách sau đây:

1
1
1
]
1

¸

·
1 0 0
0 s
0
[M] 1
0 1
x SH_X

1
1
1
]
1

¸

·
1 0 0
0 0
0 s
[M] 1
1
y
SH_Y
S
x
và S
y
là các hệ số biến dạng theo trục hoành và trục tung.
3.3.2 Phép đối xứng
Phép đối xứng xem như phép quay quanh trục đối xứng góc 180
o
. Nếu trục đối xứng là trục hoành
hay trục tung , ta có các ma trận biến đổi đối xứng qua trục hoành và trục tung như sau:

1
1
1
]
1

¸

·
1 0 0
0 0
0
[M] 1 -
0 1
RFX

1
1
1
]
1

¸

·
1 0 0
0 0
0
[M] 1
0 1 -
RFY
3.3.3 Tính chất của phép biến đổi affine
Phép biến đổi affine là phép biến đổi tuyến tính, như những biến đổi trên. Nếu có một điểm P(x,y),
sau biến đổi affine có điểm Q(x’, y’) thì phép biến đổi thực hiện theo phép nhân ma trận:
] ] [ [
1
1
1
]
1

¸

·
1 f c
0 e b
0 d a
1 y x 1 y' x'
Sau đây là một vài tính chất cơ bản của phép biến đổi affine:
- Phép biến đổi affine bảo toàn đường thẳng.
- Tính song song của các đường thẳng được bảo toàn.
- Tỷ lệ khoảng cách được bảo toàn.
Ví dụ: Thực hiện phép đối xứng đoạn thẳng AB có tọa độ A(-1, -1) và B(2, 1) qua trục x = -2.
Phép biến đổi là kết hợp từ 2 phép biến đổi cơ sở: tịnh tiến, đối xứng.
• Chuyển trục x = -2 trùng trục tung
• Đối xứng đoạn AB theo trục tung
• Chuyển trục đối xứng về vị trí ban đầu.
Trang
15
Ma trận biểu diễn các biến đổi trên:
1
1
1
]
1

¸

1
1
1
]
1

¸

1
1
1
]
1

¸

1
1
1
]
1

¸

· ·
1 0 4 -
0 1 0
0 0 1 -
1 0 2 -
0 1 0
0 0 1
1 0 0
0 1 0
0 0 1 -
1 0 2
0 1 0
0 0 1
M
Áp dụng cho đoạn AB:
1
]
1

¸

1
1
1
]
1

¸

1
]
1

¸


− −
·
− −
1 1 6
1 1 3
1 0 4 -
0 1 0
0 0 1 -
1 1 2
1 1 1
Do đó, vị trí sau biến hình là : A’(-3 , -1) và B’(-6 , 1).
3.4 Phép biến đổi giữa các hệ tọa độ
Các phép biến hình dựa trên hai phương pháp là phép biến hình đối tượng và biến hình hệ thống tọa
độ. Phép biến hình đối tượng thay đổi tọa độ các điểm nhưng không thay đổi hệ tọa độ, còn biến
hình hệ tọa độ tạo ra hệ tọa độ mới, chẳng hạn như từ hệ tọa độ cực, tọa độ cầu sang hệ tọa độ đề
các hay giữa hai hệ tọa độ đề các. Các phép biến đổi đối tượng đã xem xét ở phần trước, còn trong
phần này, ta khảo sát phép biến đổi giữa 2 hệ tọa độ Đề các.
Giả sử ta có hệ tọa độ I có gốc tọa độ O và các véc tơ đơn vị là i, j . Hệ tọa độ II là ảnh của hệ tọa
độ I qua phép biến đổi T(M), có gốc tọa độ O’ và các véc tơ đơn vị là tương ứng u, v. Lúc này, một
điểm P(x, y) trong hệ tọa độ I sẽ biến đổi thành điểm Q(a, b) trong hệ tọa độ II.
Qua chứng minh, tìm được mối liên hệ giữa 2 điểm Q và P trong hệ tọa độ I và II như sau:
Q = P.M
-1
hoặc QM = P
Trong đó, M là ma trận biến đổi của phép biến đổi T(M) , M
-1
là ma trận nghịch đảo của M.
Nếu hệ tọa độ II nhận được từ hệ tọa độ I sau khi quay góc
φ
theo chiều dương quanh gốc tọa độ
thì Q và P sẽ xác định như sau:

φ cos φ sin
φ sin φ cos
1] y [x 1] b [a
1
]
1

¸

·
3.5 Bài tập áp dụng
Bài 1 Cho biết phép biến đổi hình vuông thành hình chữ nhật?
Gợi ý: Sử dụng phép biến đổi tỷ lệ
Bài 2 Chứng minh rằng ma trận phép biến đổi lấy đối xứng qua đường thẳng y = x tương đương với
kết hợp của phép lấy đối xứng trục hoành và phép quay quanh gốc tọa độ góc 90
o
.
Gợi ý: Tìm ma trận M
1
của phép lấy đối xứng qua trục y = x, ma trận M
2
của phép đối xứng qua
trục hoành, ma trận M
3
của phép quay 90
o
quanh gốc tọa độ. Chứng minh M
1
= M
2
M
3
Bài 3 Chứng minh phép quay có tính giao hoán.
Gợi ý: Giả sử với phép quay quanh gốc tọa độ 1 góc α, ta có được kết quả:
M
R1
(α1) M
R2
(α2) = M
R
( α1 + α2 ) = M
R2
(α2) M
R1
(α1)
Trang
16
Bài 4 Chứng minh phép biến đổi affine được phân tích thành tích của các phép tịnh tiến, tỷ lệ, quay.
Gợi ý: Áp dụng quy tắc phân rã phép biến đổi.
Bài 5 Hệ tọa độ x’O’y’ nhận được bằng cách quay quanh gốc tọa độ góc α, rồi tịnh tiến theo véc tơ
(tr
x
, tr
y
) trong hệ tọa độ xOy. Hãy cho biết công thức tọa độ của điểm Q trong hệ tọa độ x’O’y’ nếu
P(x, y) là tọa độ của điểm P trong xOy.
Gợi ý: Hệ tọa độ x’O’y’ là ảnh của hệ tọa độ xOy, cần tìm ma trận biến đổi là tích giữa ma trận
quay và ma trận tịnh tiến.

CHƯƠNG IV PHÉP QUAN SÁT 2 CHIỀU
4.1 Cửa sổ, Vùng quan sát
Hệ tọa độ Descartes là dễ thích ứng cho các chương trình ứng dụng để miêu tả các hình ảnh trên hệ
tọa độ thực. Các hình ảnh được định nghĩa trên hệ tọa độ thực này sau đó được hệ đồ họa vẽ lên
các hệ tọa độ thiết bị. Điển hình, một vùng đồ họa cho phép người sử dụng xác định vùng nào của
hình ảnh sẽ được hiển thị và bạn muốn đặt nó ở nơi nào trên hệ tọa độ thiết bị. Một vùng đơn lẻ
hoặc vài vùng của hình ảnh có thể được chọn. Những vùng này có thể được đặt ở những vị trí tách
biệt, hoặc một vùng có thể được chèn vào một vùng lớn hơn. Quá trình biến đổi này liên quan đến
những thao tác như tịnh tiến, biến đổi tỷ lệ vùng được chọn , xóa bỏ vùng không được chọn. Những
thao tác trên là Windowing và Clipping.
Trang
17
Hình 4.1 ánh xạ cửa sổ - đến – vùng quan sát
Một vùng có dạng hình chữ nhật được xác định trong hệ tọa độ thực được gọi là một cửa sổ
(window). Còn vùng hình chữ nhật trên thiết bị hiển thị để cửa sổ đó ánh xạ đến được gọi là một
vùng quan sát (viewport). Hình 4.1 minh họa việc ánh xạ một phần hình ảnh vào trong một vùng
quan sát. Việc ánh xạ này gọi là một phép biến đổi hệ quan sát, biến đổi cửa sổ, biến đổi chuẩn hóa.
Các lệnh để xây dựng một cửa sổ và vùng quan sát từ một chương trình ứng dụng có thể được định
nghĩa như sau:
set_window(xw_min, xw_max, yw_min, yw_max)
set_viewport(xv_min, xv_max, yv_min, yv_max)
Các tham số trong mỗi hàm được dùng để định nghĩa các giới hạn tọa độ của các vùng chữ nhật.
Các giới hạn của cửa sổ được xác định trong hệ tọa độ thực. Hệ tọa độ thiết bị chuẩn thường được
dùng nhất cho việc xác định vùng quan sát, dù rằng hệ tọa độ thiết bị có thể được dùng nếu chỉ có
một thiết bị xuất duy nhất trong hệ thống. Khi hệ tọa độ thiết bị chuẩn được dùng, lập trình viên
xem thiết bị xuất có giá trị tọa độ trong khoảng [0,1]. Một sự xác định vùng quan sát được cho với
các giá trị trong khoảng [0, 1]. Công việc xác định sẽ là đặt một phần của sự định nghĩa hệ tọa độ
thực vào trong góc trên bên phải của vùng hiển thị, như được minh họa trong hình 4.2:
set_window(-60.5, 41.25, -20.75, 82.5);
set_viewport(0.5, 0.8, 0.7, 1.0);
Nếu một cửa sổ buộc phải được ánh xạ lấp đầy vùng hiển thị, sự xác định vùng quan sát được thiết
lập theo thủ tục: set_viewport(0, 1, 0, 1)
Các vị trí được biểu diễn trên hệ tọa độ thiết bị chuẩn phải được biến đổi sang hệ tọa độ thiết bị
trước khi được hiển thị bởi một thiết bị xuất cụ thể. Thông thường một thiết bị xác định được chứa
trong các gói đồ họa cho mục đích này. Thuận lợi của việc dùng hệ tọa độ thiết bị chuẩn là để các
gói đồ họa độc lập với thiết bị. Các thiết bị xuất khác nhau có thể được dùng nhờ việc cung cấp các
trình điều khiển thiết bị thích hợp. Mọi điểm được tham khảo đến trong các gói đồ họa phải được
xác định tương ứng trong hệ tọa độ Descartes. Bất kỳ sự định nghĩa hình ảnh nào dùng trong một hệ
tọa độ khác, như hệ tọa độ cực, người sử dụng trước tiên phải biến đổi nó sang hệ tọa độ thực.
Những hệ tọa độ Descart này sau đó được dùng trong các lệnh cửa sổ để xác định phần nào của hình
ảnh muốn được hiển thị.
Trang
18
vmin
wmin wmax
vmin vmax
)
wmin w
(
v
x
x x
x x
x x x +


− ·
vmin
wmin wmax
vmin vmax
)
wmin w
(
v
y
y y
y y
y y y +


− ·
Hình 4.2: Ánh xạ một cửa sổ vào một vùng quan sát trong hệ tọa độ thiết bị chuẩn
4.2 Phép biến đổi từ cửa sổ - đến – vùng quan sát
Khi tất cả các điểm, đoạn thẳng, và văn bản vừa bị cắt, chúng được ánh xạ lên vùng quan sát để
hiển thị. Phép biến đổi đến vùng quan sát này được thực hiện để các vị trí tọa độ liên hệ được giữ
lại. Trong hình, một điểm ở vị trí (x
w
, y
w
) trong một cửa sổ được ánh xạ và trong vị trí (x
v
, y
v
) trong
vùng quan sát. Để duy trì sự sắp đặt liên hệ tương tự trong vùng quan sát như trong cửa sổ, chúng ta
cần xác định ánh xạ:
,
wmin wmax
wmin w
vmin vmax
vmin v
y y
y y
y y
y y


·


(4-1)
Do đó:
, (4.2)
Các giá trị tỷ lệ
wmin wmax
vmin vmax
x x
x x



wmin wmax
vmin vmax
y y
y y


là hằng số đối với các điểm được ánh xạ và
là hệ số tỷ lệ S
x
và S
y
theo 2 trục tương ứng. Nếu 2 tỷ lệ khác nhau thì hình vẽ mới trong vùng quan
sát bị biến dạng so với hình ban đầu, còn nếu 2 tỷ lệ giống nhau thì hình vẽ mới không biến dạng.
Ví dụ: Tìm ma trận biến hình, ánh xạ điểm trong cửa sổ có góc trái dưới là (2,2); góc trên phải là
(6,5); sang vùng quan sát có góc trái dưới (1/2 , 1/2) , góc phải trên (1 , 1) .
Các tham số cửa sổ/vùng quan sát là: x
wmin
= 2 , x
vmin
=1/2
x
wmax
= 6 , x
vmax
= 1
y
wmin
= 2 , y
vmin
=1/2
y
wmax
= 5 , y
vmax
= 1
Trang
19
wmin wmax
wmin w
vmin vmax
vmin v
x x
x x
x x
x x


·


Theo phương trình 4.2, suy được ma trận biến đổi là:

1
1
1
]
1

¸

1
1
1
1
]
1

¸

·
+ +
·
1 1/6 1/4
0 1/6 0
0 0 1/8
1 y y S x x S
0 S 0
0 0 S
M
) (- ) (-
vmin wmin y vmin wmin x
y
x
4.3 Phép cắt xén 2 chiều
Ánh xạ một vùng cửa sổ vào trong một vùng quan sát, kết quả là chỉ hiển thị những phần trong
phạm vi cửa sổ. Mọi thứ bên ngoài cửa sổ sẽ bị loại bỏ. Các thủ tục để loại bỏ các phần hình ảnh
nằm bên ngoài biên cửa sổ được xem như các thuật toán cắt xén (clipping algorithms) hoặc đơn giản
được gọi là clipping.
Việc cài đặt phép biến đổi cửa sổ thường được thực hiện bằng việc cắt khỏi cửa
sổ, sau đó ánh xạ phần bên trong cửa sổ vào một vùng quan sát . Như một lựa chọn, một vài gói
đồ họa đầu tiên ánh xạ sự định nghĩa trong hệ tọa độ thực vào trong hệ tọa độ thiết bị chuẩn và
sau đó cắt khỏi biên vùng quan sát. Trong các các phần thảo luận sau, chúng ta giả thiết rằng việc
cắt được thực hiện dựa vào đường biên cửa sổ trong hệ tọa độ thực. Sau khi cắt xong, các điểm
bên trong cửa sổ mới được ánh xạ đến vùng quan sát.
Việc cắt các điểm khỏi cửa sổ được hiểu đơn giản là chúng ta kiểm tra các giá trị tọa độ để xác
định xem chúng có nằm bên trong biên không. Một điểm ở vị trí (x,y) được giữ lại để chuyển đổi
sang vùng quan sát nếu nó thỏa các bất phương trình sau:
xwmin ≤ x ≤ xwmax, ywmin ≤ y ≤ ywmax (4-3)
Nếu điểm nào không thỏa một trong bốn bất phương trình trên, nó bị cắt bỏ. Trong hình dưới đây,
điểm P1 được giữ lại, trong khi điểm P2 bị cắt bỏ.
Hình 4.3
Hình 4.3 minh họa các quan hệ có thể có giữa các vị trí đoạn thẳng với biên cửa sổ. Chúng ta kiểm
tra một đoạn thẳng xem có bị cắt hay không bằng việc xác định xem hai điểm đầu mút đoạn thẳng
là nằm trong hay nằm ngoài cửa sổ. Một đoạn thẳng với cả hai đầu nằm trong cửa sổ thì được giữ
Trang
20
lại hết, như đoạn từ P5 đến P6. Một đoạn với một đầu nằm ngoài (P9) và một đầu nằm trong (P10)
sẽ bị cắt bớt tại giao điểm với biên cửa sổ (P’9). Các đoạn thẳng có cả hai đầu đều nằm ngoài cửa
sổ, có thể rơi vào hai trường hợp: toàn bộ đoạn thẳng đều nằm ngoài hoặc đoạn thẳng cắt hai cạnh
cửa sổ. Đoạn từ P3 đến P4 bị cắt bỏ hoàn toàn. Nhưng đoạn từ P7 đến P8 sẽ được giữ lại phần từ
P’7 đến P’8.
Thuật toán cắt xén đường xác định xem đoạn nào toàn bộ nằm trong, đoạn nào bị cắt bỏ hoàn toàn
hay bị cắt một phần. Đối với các đoạn bị cắt bỏ một phần, các giao điểm với biên cửa sổ phải được
tính. Vì một hình ảnh có thể chứa hàng ngàn đoạn thẳng, việc xử lý clipping nên được thực hiện sao
cho có hiệu quả nhất. Trước khi đi tính các giao điểm, một thuật toán nên xác định rõ tất cả các đoạn
thẳng được giữ lại hoàn toàn hoặc bị cắt bỏ hoàn toàn. Với những đoạn được xem xét là bị cắt bỏ,
việc xác định các giao điểm cho phần được giữ lại nên được thực hiện với sự tính toán ít nhất.
4.3.1 Giải thuật Cohen – Suntherland
Một tiếp cận để cắt các đoạn là dựa trên cơ chế đánh mã được phát triển bởi Cohen và Sutherland.
Mọi điểm ở hai đầu mút đoạn thẳng trong hình ảnh sẽ được gán
một mã nhị phân 4 bit, được gọi là mã vùng, giúp nhận ra vùng
tọa độ của một điểm. Các vùng này được xây dựng dựa trên sự
xem xét với biên cửa sổ, như ở hình 4.4. Mỗi vị trí bit trong mã
vùng được dùng để chỉ ra một trong bốn vị trí tọa độ tương ứng
của điểm so với cửa sổ: bên trái, phải, trên đỉnh, dưới đáy. Việc
đánh số theo vị trí bit trong mã vùng từ 1 đến 4 cho từ phải sang
trái, các vùng tọa độ có thể liên quan với vị trí bit như sau: Bit 1 –
trái ; Bit 2 – phải; Bit 3 – dưới; Bit 4 – trên. Hình 4.4
Giá trị 1 ở bất kỳ vị trí nào chỉ ra rằng điểm ở vị trí tương ứng, ngược lại bit ở vị trí đó là 0. Nếu một
điểm nằm trong cửa sổ, mã vị trí là 0000. Một điểm bên dưới và bên trái cửa sổ có mã vùng là 0101 .
Các giá trị bit trong mã vùng được xác định bằng cách so sánh giá trị tọa độ (x,y) của điểm đầu mút
với biên cửa sổ. Bit 1 đặt lên 1 nếu x < xwmin. Các giá trị của ba bit còn lại được xác định bằng
cách so sánh tương tự. Trong các ngôn ngữ lập trình, làm việc trên bit như thế này có thể thực hiện
được, các giá trị bit mã vùng có thể được xác định theo các bước sau: (1) Tìm hiệu giữa tọa độ các
điểm đầu mút với biên cửa sổ. (2) Dùng bit dấu (kết quả của mỗi hiệu) để đặt giá trị tương ứng trong
mã vùng. Bit 1 là bit dấu của x – xwmin ; bit 2 là bit dấu của xwmax – x ; bit 2 là bit dấu của y –
ywmin ; và bit 4 là bit dấu của ywmax – y.
Khi chúng ta xây dựng xong các mã vùng cho tất cả các điểm đầu mút, chúng ta có thể xác định
nhanh chóng đoạn thẳng nào là hoàn toàn nằm trong cửa sổ, đoạn nào là hoàn toàn nằm ngoài. Bất
kỳ đoạn nào có mã vùng của cả 2 đầu mút là 0000 thì nằm trong cửa sổ và chúng ta chấp nhận các
đường này. Bất kỳ đường nào mà trong hai mã vùng của hai đầu mút có một số 1 ở cùng vị trí bit thì
đoạn hoàn toàn nằm ngoài cửa sổ, và chúng ta loại bỏ các đoạn này. Ví dụ, chúng ta vứt bỏ đoạn có
mã vùng ở một đầu là 1001, còn đầu kia là 0101 (có cùng bit 1 ở vị trí 1 nên cả hai đầu mút của đoạn
này nằm ở phía bên trái cửa sổ). Một phương pháp có thể được dùng để kiểm tra các đoạn cho việc
cắt toàn bộ là thực hiện phép ‘and’ với cả hai mã vùng. Nếu kết quả không phải là 0000 thì đoạn
nằm bên ngoài cửa sổ.
Các đường không được nhận dạng là hoàn toàn nằm trong
hay hoàn toàn nằm ngoài một cửa sổ thông qua các phép
kiểm tra trên sẽ được tìm giao điểm với biên cửa sổ. Như
được chỉ ra ởình bên, các đường thuộc nhóm này có thể
cắt hoặc không cắt cửa sổ. Chúng ta có thể xử lý các đoạn
Trang
21
này bằng cách so sánh một điểm đầu mút (cái đang nằm ngoài cửa sổ) với một biên cửa sổ để xác
định phần nào của đường sẽ bị bỏ. Sau đó, phần đường được giữ lại sẽ được kiểm tra với các biên
khác, và chúng ta tiếp tục cho đến khi toàn bộ đường bị bỏ đi hay đến khi một phần đường được xác
định là nằm trong cửa sổ. Chúng ta xây dựng thuật toán để kiểm tra các điểm đầu mút tương tác với
biên cửa sổ là ở bên trái, bên phải, bên dưới hay trên đỉnh. Chúng ta xem các đoạn trong hình được
xử lý như thế nào. Bắt đầu ở điểm đầu mút bên dưới từ P1 đến P2, ta kiểm tra P1 với biên trái, phải
và đáy cửa sổ và thấy rằng điểm này nằm phía dưới cửa sổ. Ta tìm giao điểm P’1 với biên dưới.
Sau khi tìm giao điểm P’1, chúng ta vứt bỏ đoạn từ P1 đến P’1. Giao điểm P’2 được tính, và đoạn
từ P’1 đến P’2 được giữ lại.
Hình 4.5
Kết thúc quá trình xử lý đoạn P1P2. Bây giờ xét đoạn kế tiếp, P3P4. Điểm P3 nằm bên trái cửa sổ,
vì vậy ta xác định giao điểm P’3 và loại bỏ đoạn từ P’3 đến P3. Bằng cách kiểm tra mã vùng phần
đoạn thẳng từ P’3 đến P4, chúng ta thấy rằng phần còn lại này nằm phía dưới cửa sổ và cũng bị vứt
bỏ luôn.
Các giao điểm với biên cửa sổ có thể được tính bằng cách dùng các tham số của phương trình
đường thẳng. Với một đường thẳng đi qua hai điểm (x
1
, y
1
) và (x
2
, y
2
), tung độ y của giao điểm với
một biên dọc cửa sổ có thể tính được theo phép tính :
y = y
1
+ m (x – x
1
) (4-4)
Ở đây giá trị x được đặt là x
wmin
hoặc x
wmax
, và độ dốc m = (y
2
– y
1
)/ (x
2
– x
1
)
Tương tự, nếu ta tìm giao điểm với biên ngang, hoành độ x có thể được tính như sau :
x = x
1
+ (y – y
1
)/m (4-5)
với y là y
wmin
hoặc y
wmax
.
4.3.2 Giải thuật chia tại trung điểm
Một kỹ thuật để xác định giao điểm với biên cửa sổ mà không dùng đến phương trình đường thẳng
là dùng thủ tục tìm kiếm nhị phân, được gọi là sự phân chia tại trung điểm. Đầu tiên, việc kiểm tra
các đoạn vẫn được thực hiện bằng cách dùng mã vùng. Bất kỳ đoạn nào không được chấp nhận hoàn
toàn hoặc không bị huỷ bỏ hoàn toàn (nhờ vào kiểm tra mã vùng) thì sẽ được đi tìm giao điểm bằng
cách kiểm tra tọa độ trung điểm.
Tiếp cận này được minh họa trong hình 4.6. Mọi đoạn thẳng với hai điểm đầu mút (x
1
,y
1
) và (x
2
, y
2
),
trung điểm được tính như sau:
x
m
= (x
1
+ x
2
) / 2 ; y
m
= (y
1
+ y
2
) / 2 (4-6)
Mỗi kết quả tính toán cho tọa độ giao
điểm liên quan đến một phép cộng và
một phép chia 2. Khi tọa độ giao
điểm được xác định, mỗi nửa đoạn
thẳng được kiểm tra để chấp nhận
hay huỷ bỏ toàn bộ. Nếu một nửa
đoạn được chấp nhận hoặc bị huỷ bỏ,
một nửa kia sau đó sẽ được xử lý
theo cách tương tự. Điều này tiếp tục
cho đến khi gặp một giao điểm.

Trang
22
Hình 4.6
Nếu một nửa được chấp nhận hoặc bị huỷ bỏ toàn bộ, nửa kia tiếp tục được xử lý cho đến khi toàn
bộ nó là bị huỷ bỏ hoặc được giữ lại. Cài đặt phần cứng theo phương pháp này có thể giúp ta
clipping khỏi biên vùng quan sát nhanh chóng sau khi các đối tượng vừa được chuyển sang hệ tọa độ
thiết bị.
4.3.3 Giải thuật Liang – Barsky
Giải thuật được dựa trên phân tích phương trình tham số đoạn thẳng:

,
1 t 0 ≤ ≤

(4-7)
Ứng với mỗi giá trị t, ta có một điểm P tương ứng thuộc đường thẳng. Tập hợp các điểm thuộc
phần giao của đoạn thẳng và cửa sổ thỏa mãn hệ bất phương trình:
(4-8)

Đặt p
1
= -D
x
, q
1
= x
1
– x
wmin
p
2
= D
x
, q
2
= x
wmax
- x
1
p
3
= -D
y
, q
3
= y1 – y
wmin

p
4
=

D
y
, q
4
= y
wmax
– y
1
Hệ bất pt (4-8) viết lại như sau : (4-9)
Như thế, tìm đoạn giao thực chất là tìm nghiệm của hệ bất pt 4-9. Có các trường hợp sau:
• Nếu ∃k

{1,2,3,4} : p
k
= 0 và q
k
< 0 thì hệ vô nghiệm.
• Nếu ∃k

{1,2,3,4} : p
k


0 hay q
k
≥ 0 thì với các bất pt ứng với p
k
= 0 luôn đúng.
• Nếu p
k
< 0: ta có
k
k
p
q
t ≥

• Nếu p
k
> 0: ta có
k
k
p
q
t ≤

Vậy nghiệm của hệ (4-9) là [t
1
, t
2
] thỏa mãn : (4-10)

Nếu hệ (4-9) có nghiệm thì đoạn giao giữa đoạn thẳng và cửa sổ là Q
1
(
và Q
2
(
Trang
23
¹
¹
¹
'
¹
≤ ≤
≤ + ≤
≤ + ≤
1 t 0
y tD y y
x tD x x
wmax
y 1
wmin
wmax
x 1
wmin
{1,2,3,4} k ,
1 t 0
q t p
k k

¹
'
¹
≤ ≤

¹
¹
¹
¹
¹
¹
¹
'
¹

> ·
< ·
2 1
k
k
k
2
k
k
k
1
t t
1) , } 0 p ,
p
q
min({ t
0) , } 0 p ,
p
q
max({ t
) D t y , D t x
y 1 1
x
1
1
+ +
) D t y , D t x
y 2 1
x
2
1
+ +
1 2 x
x x D ,
x 1 1 2 1
tD x ) x t(x x x − · + · − + ·
1 2 y
y y D ,
y 1 1 2 1
tD y ) y t(y y y − · + · − + ·
4.4 Bài tập áp dụng
Bài 1 Ý nghĩa mã vùng trong giải thuật Cohen – Sutherland.
Gợi ý : mã vùng để mô tả vị trí tương đối của vùng nào đó so với cửa sổ.
Bài 2 So sánh hai thuật toán Cohen – Sutherland và Liang – Barsky về số phép tính thực hiện trong
các trường hợp chính.
Gợi ý : Giải thuật Liang – Barsky thực hiện ít phép toán hơn.
Bài 3 Cài đặt thuật toán cắt xén hình chữ nhật với 1 đoạn thẳng cho trước theo giải thuật Liang –
Barsky hay Cohen – Sutherland.
Gợi ý : Sử dụng giải thuật Liang – Barsky.
Bài 4 Cho biết ma trận của phép biến đổi từ cửa sổ sang vùng quan sát.
Gợi ý : ma trận biến đổi là tích ba ma trận tịnh tiến, tỷ lệ, tịnh tiến.
CHƯƠNG V ĐỒ HỌA 3 CHIỀU
5.1 Tổng quan về đồ họa ba chiều
Các đối tượng trong thế giới thực phần lớn là các đối tượng 3 chiều, việc thể hiện chúng trên máy
tính là việc cần thiết để đưa tin học gần gũi với thực tế. Cũng giống như cách biểu diễn đối tượng 3
chiều trên mặt phẳng, biểu diễn trên máy tính cũng phải tuân theo các quy luật như : phối cảnh, ánh
sáng, màu sắc … nhằm giúp người quan sát tưởng tượng được hình ảnh gần đúng nhất. Trong
chương này, chúng ta thảo luận một vài kỹ thuật biểu diễn đối tượng 3 chiều trên máy tính, từ các
đối tượng đơn giản như hình khối, đa diện.. cho tới các hình, mặt phức tạp khác.
Khi mô hình hóa và hiển thị một đối tượng ba chiều, phải xem xét nhiều khía cạnh và vấn đề chứ
không đơn giản là thêm tọa độ thứ 3 cho đối tượng. Bề mặt có thể xây dựng bởi nhiều tổ hợp khác
nhau của các mặt phẳng và mặt cong. Ngoài ra, ta cần mô tả thông tin cho đối tượng. Các công cụ
hỗ trợ đồ họa cung cấp một số hàm hiển thị các thành phần bên trong, những nét tiêu biểu hay một
phần của đối tượng 3 chiều. Ngoài ra, các phép biến đổi được dùng đa dạng hơn so với đồ họa hai
chiều vì phải chọn nhiều tham số mô tả đối tượng.
Mô tả một đối tượng ba chiều phải qua quy trình xử lý gồm nhiều công đoạn như phép biến đổi hệ
tọa độ quan sát và phép chiếu phối cảnh , chuyển đổi từ hệ tọa độ quan sát ba chiều sang hệ tọa độ
quan sát hai chiều. Những phần nhìn thấy của cảnh, ứng với hệ tọa độ quan sát được chọn, phải xác
định và cuối cùng là giải thuật vẽ bề mặt của đối tượng được áp dụng nhằm tạo ra hình ảnh thực tế
của đối tượng ba chiều.
5.1.1 Quy trình hiển thị đồ họa ba chiều
Bước đầu tiên trong quy trình hiển thị là biến đổi đối tượng từ không gian đối tượng sang không
gian thực. Trong không gian này thì đối tượng, nguồn sáng, người quan sát cùng tồn tại. Quá trình
này gọi là biến đổi mô hình.
Tiếp theo là bước tối ưu, ta loại bỏ các phần của đối tượng không nhìn thấy, giúp giảm bớt những
thao tác dư thừa của hình ảnh sẽ hiển thị.
Trang
24
Bước tiếp theo là phải chiếu sáng đối tượng , gán cho chúng màu sắc dựa vào đặc tính của các chất
tạo nên vật và các nguồn sáng tồn tại trong khung cảnh.
Sau khi chiếu sáng, phải thực hiện một phép biến đổi hệ tọa độ để đặt vị trí quan sát về gốc tọa độ
và mặt phẳng quan sát tại vị trí phù hợp. Bước này là được xem là biến đổi hệ quan sát. Các đối
tượng được đưa từ không gian thực về không gian quan sát. Trong không gian quan sát, ta phải thực
hiện việc xén các đối tượng thừa, không nhìn thấy được trong cảnh.
Sau đó, chiếu đối tượng xuống mặt phẳng hai chiều, biến đổi từ không gian quan sát sang không
gian thiết bị màn hình. Đối tượng xem như tập hợp các điểm rời rạc, toàn cảnh đối tượng được hiển
thị lên màn hình.
5.1.2 Mô hình hóa đối tượng
Có hai dạng mô hình hóa là hình học khối đặc (Solid Geometric) hay mô hình bề mặt (Boundary
Representation).
Hình học khối đặc giả thiết là các đối tượng tự nhiên có thể tạo ra bằng cách phối hợp các khối cơ sở
thông qua các quy luật đại số Bool. Có nhiều loại khối cơ sở như khối chữ nhật, trụ, nón, cầu…
trong khi các phép toán tập hợp như phép giao, hợp, loại trừ được sử dụng để phối hợp các đối
tượng hình học cơ sở. Mô hình bề mặt được xây dựng dựa trên cơ sở đối tượng được bao kín bởi tập
các mặt. Các mặt này thuộc về các mặt cong khép kín và có hướng. Hướng của bề mặt phân biệt hai
phía trong và ngoài bề mặt. Để tìm hướng bề mặt, hướng của véc tơ pháp tuyến sẽ được tính toán.
Trong mô hình này, mỗi mặt bao lại bởi các cạnh và mỗi cạnh được tạo bởi hai đỉnh. Thông tin về
các thành phần hình học được lưu trữ trong cơ sở dữ liệu của B-rep.
Mỗi mô hình có những ưu điểm riêng, với những đối tượng như mặt cong, khối bậc hai thì sử dụng
mô hình hóa khối đặc. Các tính toán giao nhau giữa đường cong và đường cong, đường cong với
mặt cong, khối với mặt phẳng cắt, dựa trên thông tin là dữ liệu vị trí, kích thước hình học, phương
chiều khối cơ sở như trong hình học không gian song không thật chính xác. Mô hình bề mặt có ưu
điểm hiển thị mức chi tiết chính đầy đủ hơn mô hình khối rắn, và nếu có sự cập nhật những thay đổi
của đối tượng thì mô hình bề mặt còn có thể thực hiện được dựa trên cơ sở dữ liệu lưu trữ. Tuy
nhiên, mô hình cũng có nhược điểm là nếu mô hình đối tượng có bề mặt phức tạp, chẳng hạn như
một hình trụ, bề mặt ngoài khối trụ được xấp xỉ bằng nhiều bề mặt B-rep. Cách thực hiện này rất dễ
dàng chỉ với một số mặt cong nhưng hình dạng không trơn. Do đó, để tạo ra mức độ chính xác chấp
nhận thì cần lưu trữ lượng dữ liệu lớn.
5.2 Biểu diễn đối tượng ba chiều
Các cảnh đồ họa được biểu diễn theo những phương pháp khác nhau sao cho phù hợp với thuộc tính
đối tượng. Các mặt đa giác và mặt bậc hai cung cấp cho chúng ta mô tả gần đúng của các đối tượng
elip, hyperbol, …cách tiếp cận hình học Fractal cho phép ta biểu diễn chính xác các đối tượng tự
nhiên như bầu trời, không gian thực tế. Để biểu diễn đối tượng có bề mặt phức tạp, người ta dùng
các phương pháp xấp xỉ để đưa mặt cong về dạng mặt đa giác hoặc dùng nhiều mặt cong trơn ghép
nối với nhau.
5.2.1 Biểu diễn mặt đa giác
Mô hình hóa bề mặt đối tượng thường được biểu diễn đối tượng, thông qua tập hợp các mặt đa giác
xác định bề mặt đối tượng. Với cách biểu diễn trên, ta đơn giản hóa cách lưu trữ dữ liệu và tăng tốc
độ hiển thị đối tượng vì bề mặt được mô tả bằng phương trình tuyến tính. Vì nguyên nhân trên mà
mô tả các đối tượng thông qua mặt đa giác được dùng cho các đối tượng đồ họa cơ sở.
Trong một vài trường hợp, ta chỉ có thể chọn lựa cách biểu diễn đa giác, việc biểu diễn như thế cung
cấp một định nghĩa chính xác về đặc tính của đối tượng. Ví dụ như biểu diễn một hình trụ thì xem
Trang
25
như hình trụ là tập các mặt đa giác ghép liền. Nếu cần thể hiện hình trụ thực hơn thì phải biến đổi
tạo bóng nội suy cho hình trụ.
Hình 5.1 Mô hình biểu diễn hình trụ
thông qua mặt đa giác.
5.2.2 Đường cong và mặt cong , đường cong và mặt cong Bezier, B-Spline
Hình ảnh các đường cong và mặt cong có thể được tạo ra từ một tập các hàm toán học định nghĩa
các đối tượng hoặc tập các điểm trên đối tượng. Đối với các đối tượng hình học như hình tròn hay
elip thì thư viện đồ họa đã cung cấp sẵn hàm vẽ đối tượng lên mặt phẳng hiển thị. Hình biểu diễn
đường cong là tập các điểm dọc theo hình chiếu của đường mô tả bởi hàm số. Nhưng với các đường
cong hay mặt cong không có quy luật, thì tập điểm hay lưới đa giác xấp xỉ với đường mặt cong sẽ
tạo ra. Hệ đồ họa hay tạo các lưới tam giác để đảm bảo tính đồng phẳng của các cạnh.
Một đường cong hay mặt cong có thể diễn tả bằng phương trình tham số hay không có tham số, tuy
nhiên cách biểu diễn thứ nhất được áp dụng trong các bài toán đồ họa sẽ thuận tiện hơn cách kia.
Những đối tượng hình học như hình tròn, elip hình trụ, hình nón, hay hình cầu … được xem là
những đường và mặt cong xác định được phương trình tham số chính xác cho nó. Do đó, mọi hệ đồ
họa đều hỗ trợ trực tiếp biểu diễn các đối tượng hình học trên. Tuy nhiên, trong thực tế, có những
đối tượng hình học không có quy luật chính xác để mô tả những đối tượng như mặt cong của thanh
chắn va đập của xe ô tô, hình thân tàu thủy, tay cầm tách chén cafe… Những đối tượng hình học
theo mô tả trên, hình dáng hiển thị thỏa mãn yêu cầu thiết kế chứ không quan tâm lắm tới độ chính
xác phép nội suy.
Yêu cầu đặt ra là: Có một đường cong, xác định theo tập các điểm phân biệt p
1
, p
2
, .. p
k
. Hãy tìm ra
giải thuật tạo đường cong ban đầu với độ chính xác nào đó?
Có 2 cách giải quyết:
- Thứ nhất, định vị tọa độ các điểm đã biết thuộc đường cong, tìm ra phương trình tham số để nó đi
qua các điểm đó và trùng khớp hình dáng với đường cong ban đầu.
- Thứ hai, xác định một số điểm điều khiển, và tìm giải thuật tạo đường cong dựa trên các điểm đó.
Ta phải thay đổi vị trí điểm điều khiển cho tới khi đường cong mới có hình dáng giống như hình
dáng đường cong ban đầu thì xem như giải quyết xong.
Trong phần này, chúng ta sẽ giới thiệu phương trình đường cong Bezier và B – Spline, chúng dựa
trên cách giải quyết thứ hai.
• Đường cong Bezier: đường cong dựa trên L+1 điểm điều khiển p
0
, p
1
, .. p
L
được biểu diễn
qua công thức sau đây:
(5-1)
(t) B
L
k
là đa thức Berntein được xác định theo:
k k L
t t) (1 C (t) B
k
L
L
k

− · (5-2)

k
L
C là tổ hợp chọn k từ L. Từ công thức 5-2, dẫn đến ∑
·
·
L
0 k
1 (t) B
L
k
Trang
26

·
·
L
0 k
k
(t) B P P(t)
L
k
Đường cong phức tạp thì yêu cầu số lượng điểm điều khiển nhiều, tuy nhiên trong trường
hợp đó khiến bậc đa thức càng cao, đòi hỏi tính toán dài và khó. Cách khắc phục là đường
cong phức tạp vẫn được ghép từ những đoạn khác nhau, mỗi đoạn xấp xỉ theo một đường
cong Bezier bậc nhỏ hơn.
Việc tạo các đường cong phức tạp, bằng cách ghép các đoạn ngắn cũng cho phép kiểm soát
sự thay đổi một phần đường cong, trong khi các đoạn khác thuộc tập điểm điều khiển khác
thì không bị ảnh hưởng.
• Đường cong B – Spline: đường cong cấp m dựa trên véc tơ nút T và L+1 điểm kiểm soát p
k
có dạng:
(5-3)
Trong đó
(t) N
m k,
là đa thức cơ sở như sau:
(5-4)
k = 0,1,...,L;
(t) N
k,1
= 1 nếu t
k
≤ t < t
k+1
;
(t) N
k,1
= 0 trong các trường hợp khác.
Các khoảng cách [t
i
, t
i+1
] có thể chia đều nhau hoặc không đều.
Giả thiết một đường cong B – Spline bậc 3, 4 nút điều khiển, khoảng cách nút đều nhau, thì
4 đa thức cơ sở như sau:

3
0,3
t
6
1
(t) N · ; 1) 3t 3t (-3t
6
1
(t) N
2 3
1,3
+ + + ·
1] , [0 t ∈

4) 6t - (3t
6
1
(t) N
2 3
2,3
+ · ; 1) 3t 3t (-t
6
1
(t) N
2 3
3,3
+ − + ·
• Mặt cong Bezier: Xét đường cong Bezier như hàm theo tham số v và các điểm kiểm soát
theo tham số u. Công thức cho đường cong sẽ là:
Lúc này, khi u thay đổi kéo theo các điểm kiểm soát thay đổi dẫn tới đường cong thay đổi.
Sự biến thiên của đường cong Bezier trong không gian tạo ra mặt cong. Nếu u thay đổi, các
điểm kiểm soát cũng thay đổi trên một đường cong nào đó xem như đường cong Bezier, dựa
trên M+1 điểm kiểm soát.
Phương trình mặt cong Bezier là: (5-5)
• Mặt cong B – Spline: Cũng dựa trên phân tích trên, ta có phương trình mặt cong B – Spline
là:

(5-6)
5.3 Các phép biến đổi hình học 3 chiều
Các điểm trong không gian ba chiều được biểu diễn bằng hệ trục tọa độ ba chiều, có thể xem là mở
rộng của hệ trục tọa độ hai chiều. Trong thế giới hai chiều, mặt phẳng xy chứa toàn bộ đối tượng.
Trong thế giới ba chiều, một trục z vuông góc được đưa ra để tạo thêm hai mặt phẳng chính khác là
Trang
27

·
·
L
0 k
m k,
k
(t) N P P(t)
(t) )N
t t
t t
( (t) )N
t t
t - t
( (t) N
1 m 1, k
1 k m k
m k
1 m k,
k 1 - m k
k
m k, − +
+ +
+

+


+

·

·
·
L
0 k
k
(v) (u)B P v) P(u,
L
k
∑ ∑
·
· ·
M
0 i
L
0 k
k i,
(v) B (u) B P v) P(u,
L
k
M
i
∑ ∑
·
· ·
M
0 i
L
0 k
m k, m i,
k i,
(v) (u)N N P v) P(u,
xz và yz.
Chiều của các trục tọa độ trong hệ trục tọa độ ba chiều có thể tuân theo quy tắc bàn tay phải hay
quy tắc bàn tay trái.
Hình 5.2 Các hệ trục tọa độ
bàn tay phải và tay trái
Hệ trục tọa độ tuân theo quy tắc bàn tay phải được mô tả bằng bàn tay phải, với ngón tay cái hướng
theo trục z, các ngón tay còn lại xoắn theo chiều từ trục x dương sang trục y dương. Hệ trục tọa độ
tuân theo quy tắc bàn tay trái được mô tả bằng bàn tay trái, nếu đặt bàn tay trái sao cho các ngón tay
uốn cong theo chiều từ trục x dương tới trục y dương, thì ngón tay cái sẽ chỉ theo chiều trục z
dương.
Hệ tọa độ thuần nhất: Mỗi điểm (x,y,z) trong không gian Descartes được biểu diễn bởi một bộ bốn
tọa độ trong không gian 4 chiều thu gọn (hx,hy,hz,h). Người ta thường chọn h=1.
Các phép biến đổi tuyến tính là tổ hợp của các phép biến đổi sau : tỉ lệ, quay, biến dạng và đối xứng.
Các phép biến đổi tuyến tính có các tính chất như trong tọa độ 2 chiều:
- Gốc tọa độ là điểm bất động
- Ảnh của đường thẳng là đường thẳng
- Ảnh của các đường thẳng song song là các đường thẳng song song
- Bảo toàn tỉ lệ khoảng cách
- Tổ hợp các phép biến đổi có tính phân phối.
5.3.1 Phép biến đổi tỷ lệ
Phép biến đổi tỷ lệ tạo thành bằng cách gán các giá trị cho đường chéo chính của ma trận biến hình
tổng quát 4×4 . Một điểm P(x, y, z) được biến đổi tỷ lệ thành P(x’, y’, z’) bằng phép biến đổi sau:
] ] [ [
1
1
1
1
]
1

¸

·
1 0 0 0
0 Sz 0 0
0 0 Sy 0
0 0 0 Sx
1 z y x 1 z' y' x'
(5-7)
Phép biến đổi được coi là phép tỷ lệ theo gốc tọa độ. Nếu các hệ số Sx, Sy, Sz khác nhau thì hình
ảnh của đối tượng sẽ biến dạng. Ngược lại, thì kích thước đối tượng có thể thay đổi nhưng tỷ lệ với
gốc tọa độ vẫn giữ nguyên.
5.3.2 Phép biến dạng
Phép biến dạng ba chiều tạo ra sự biến dạng cho đối tượng bởi việc thay giá trị của một hoặc nhiều
tọa độ bằng các hệ số tỷ lệ của cột thứ ba. Cách thực hiện trên là biến dạng theo mặt phẳng tạo ra
bởi hai trục tọa độ được điều khiển bởi trục thứ ba. Các thành phần ngoài đường chéo chính của ma
trận con 3×3 phía trên của ma trận biến hình tổng quát ảnh hưởng đến phép biến dạng.
Trang
28
Ma trận biến dạng theo trục X:
1
1
1
1
]
1

¸

1 0 0 0
0 1 0 0
0 0 1 0
0 Sxz Sxy 1

(5-8)
Ma trận biến dạng theo trục Y:
1
1
1
1
]
1

¸

1 0 0 0
0 1 0 0
0 Syz 1 Syx
0 0 0 1

(5-9)
Ma trận biến dạng theo trục Z:
1
1
1
1
]
1

¸

1 0 0 0
0 1 Szy Szx
0 0 1 0
0 0 0 1

(5-10)
5.3.3 Phép tịnh tiến
Ma trận biến đổi hình sẽ thay đổi điểm P(x, y, z) thành P(x’, y’, z’) bằng phép biến đổi sau:
] ] [ [
1
1
1
1
]
1

¸

·
1 L K J
0 1 0 0
0 0 1 0
0 0 0 1
1 z y x 1 z' y' x'
(5-11)

Các giá trị J, K, L mô tả sự tịnh tiến tương đối theo các hướng x, y, z.
5.3.4 Phép quay hình
Phép quay trong không gian là quan trọng để tìm hiểu hình dạng của đối tượng hoặc kiểm tra quá
trình thiết kế ở các góc độ khác nhau. So với phép quay hai chiều, phép quay ba chiều khó hơn vì
phải sử dụng trục quay thay thế điểm quay. Các phép quay được phân tích dựa vào các phép quay
quanh các trục chính, trong trường hợp này xem hệ trục tọa độ theo quy tắc bàn tay phải.
Ma trận quay quanh trục X :
1
1
1
1
1
]
1

¸


·
1 0 0 0
0 cosθ sinθ 0
0 sinθ cosθ 0
0 0 0 1
M] [
θ
X
(5-12)
Ma trận quay quanh trục Y :
1
1
1
1
1
]
1

¸

·
1 0 0 0
0 cosθ 0 sinθ
0 0 1 0
0 sinθ 0 cosθ
M] [
θ
Y
(5-13)
Trang
29
Ma trận quay quanh trục Z :
1
1
1
1
1
]
1

¸

·
1 0 0 0
0 1 0 0
0 0 cosθ sinθ -
0 0 sinθ cosθ
M] [
θ
Z
(5-14)
Đối với phép quay trong hệ trục tọa độ theo quy tắc bàn tay trái, chỉ cần thay đổi hệ số góc quay θ
thành – θ là xong.
Phép quay hình quanh trục nào đó với góc quay cho trước thì phải được phân rã thành các phép
biến đổi cơ sở. Ma trận của phép biến đổi sẽ là tích các ma trận của các phép biến đổi cơ sở.
5.3.5 Phép đối xứng qua mặt phẳng
Phép đối xứng được thực hiện qua các mặt phẳng đối xứng, là mở rộng từ phép đối xứng hai chiều.
Để lấy đối xứng qua mặt phẳng bất kỳ, phép biến đổi kết hợp gồm phép quay (hoặc tịnh tiến) và
phép đối xứng. Sau đây là ma trận của phép đối xứng qua mặt phẳng x = 0, y = 0, z = 0.

1
1
1
1
1
]
1

¸

·
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1 -
M] [
RFL_X

1
1
1
1
1
]
1

¸

·
1 0 0 0
0 1 0 0
0 0 1 - 0
0 0 0 1
M] [
RFL_Y

1
1
1
1
1
]
1

¸

·
1 0 0 0
0 1 - 0 0
0 0 1 0
0 0 0 1
M] [
RFL_Z
Phép đối xứng qua gốc tọa độ trong không gian được mô tả theo ma trận biến đổi như sau :
1
1
1
1
1
]
1

¸

·
1 0 0 0
0 1 - 0 0
0 0 1 - 0
0 0 0 1 -
M] [
RFL_O
Ví dụ : Tìm ma trận biến đổi của phép quay góc 90
o
ngược chiều kim đồng hồ quanh trục AB, nếu
A(2, 1, 0) và B(3, 3, 1).
Phép biến đổi là kết hợp của các phép biến đổi cơ sở : tịnh tiến, quay trục A’B’ quanh trục X, quay
quanh trục Y, quay quanh trục Z, và ngược lại.
Phép tịnh tiến A trùng gốc tọa độ :
1
1
1
1
]
1

¸

·
1 0 1 - 2 -
0 1 0 0
0 0 1 0
0 0 0 1
M
1
Phép quay trục A’B’ quanh trục X sao cho nó trùng với mặt phẳng Y = 0:
Trang
30
1
1
1
1
]
1

¸

·
1 0 0 0
0 5 / 5 5 / 5 2 - 0
0 5 / 5 2 5 / 5 0
0 0 0 1
M
2
Phép quay trục A’B’ quanh trục Y sao cho A’B’ trùng với trục Z:

1
1
1
1
1
]
1

¸


·
1 0 0 0
0 6 / 30 0 6 / 6
0 0 1 0
0 6 / 6 0 6 / 30
M
3
Phép quay góc 90
o
theo chiều dương quanh trục Z là :
1
1
1
1
]
1

¸

·
1 0 0 0
0 1 0 0
0 0 0 1 -
0 0 1 0
M
4
Ma trận biến đổi M là kết hợp các biến đổi:

1
1
1
1
1
]
1

¸


1
1
1
1
]
1

¸

1
1
1
1
]
1

¸

·
1 0 0 0
0 6 / 30 0 6 / 6
0 0 1 0
0 6 / 6 0 6 / 30
1 0 0 0
0 5 / 5 5 / 5 2 - 0
0 5 / 5 2 5 / 5 0
0 0 0 1
1 0 1 - 2 -
0 1 0 0
0 0 1 0
0 0 0 1
M


1
1
1
1
]
1

¸

1
1
1
1
]
1

¸

1
1
1
1
1
]
1

¸


1
1
1
1
]
1

¸

1 0 1 2
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 5 / 5 5 / 5 2 0
0 5 / 5 2 - 5 / 5 0
0 0 0 1
1 0 0 0
0 6 / 30 0 6 / 6
0 0 1 0
0 6 / 6 0 6 / 30
1 0 0 0
0 1 0 0
0 0 0 1 -
0 0 1 0

Do đó:
1
1
1
1
]
1

¸

·
1 0.56 1.151 - 1.742
0 0.167 0.075 0.983
0 0.741 0.667 0.075 -
0 0.65 - 0.742 0.166
M
Trang
31
5.4 Bài tập áp dụng
Bài 1 Các kiến thức mô tả trong chương xét trong hệ tọa độ Đề các bàn tay trái hay bàn tay phải.
Gợi ý : quy tắc bàn tay phải.
Bài 2 Xác định ma trận của phép đối xứng qua trục X, Y, Z.
Gợi ý : phép đối xứng qua trục X, Y, Z : tọa độ tương ứng với trục nào thì lấy đảo dấu.
Bài 3 Xác định điểm Q là ảnh của điểm P cho trước phép biến dạng theo trục tung, với các hệ số
biến dạng là 2.
Gợi ý : tọa độ điểm Q xác định từ phép nhân véc tơ tọa độ P với ma trận biến dạng.
Bài 4 Xác định ma trận của phép quay góc α quanh trục AB bất kỳ.
Gợi ý : Ma trận biến đổi là chuỗi các biến đổi : tịnh tiến trục về gốc tọa độ, quay quanh X M
rot
(X,
α), quay quanh trục Y M
rot
(Y, - β) , quay quanh trục Z M
rot
(Z, α), sau đó là các phép biến đổi
ngược lại quá trình trên.
Trang
32
CHƯƠNG VI QUAN SÁT 3 CHIỀU
6.1 Các phép chiếu
Trong đồ họa hai chiều, các thao tác quan sát biến đổi các điểm hai chiều trong mặt phẳng tọa độ
thực thành các điểm hai chiều trong mặt phẳng hệ tọa độ thiết bị. Định nghĩa đối tượng, bị cắt bởi
một cửa sổ, được ánh xạ vào một vùng quan sát. Các hệ tọa độ thiết bị chuẩn hóa này sau đó được
biến đổi sang các hệ tọa độ thiết bị, và đối tượng được hiển thị lên thiết bị kết xuất. Đối với đồ họa
ba chiều, việc làm này phức tạp hơn một chút, vì bây giờ có vài chọn lựa để có thể quan sát ảnh như
thế nào. Chúng ta có thể quan sát ảnh từ phía trước, từ phía trên, hoặc từ phía sau. Hoặc chúng ta có
thể tạo ra quang cảnh về những gì chúng ta có thể thấy nếu chúng ta đang đứng ở trung tâm của
một nhóm các đối tượng. Ngoài ra, sự mô tả các đối tượng ba chiều phải được chiếu lên bề mặt
quan sát của thiết bị xuất. Trong chương này, trước hết chúng ta sẽ thảo luận các cơ chế của phép
chiếu. Sau đó, các thao tác liên quan đến phép biến đổi cách quan sát, và đầy đủ các kỹ thuật quan
sát ảnh ba chiều sẽ được phát triển.
Có hai phương pháp cơ bản để chiếu các đối tượng ba chiều lên bề mặt quan sát hai chiều. Tất
cả các điểm của đối tượng có thể được chiếu lên bề mặt theo các đường thẳng song song, hoặc các
điểm có thể được chiếu theo các đường hội tụ về một điểm được gọi là tâm chiếu. Hai phương
pháp này được gọi là phép chiếu song song và phép chiếu phối cảnh.
Hình 6.1 Hai phương pháp chiếu một đoạn thẳng lên bề mặt của mặt phẳng chiếu
Trong cả hai trường hợp, giao điểm của đường chiếu với bề
mặt quan sát xác định các tọa điểm của điểm được chiếu lên
mặt phẳng chiếu này.
Hình 6.2 Một bề mặt quan sát được định nghĩa
trong mặt z=0 của hệ tọa độ bàn tay trái.
Trang
33
Chúng ta giả sử rằng mặt phẳng chiếu là mặt z = 0 của hệ tọa độ bàn tay trái. Phép chiếu
song song bảo tồn mối quan hệ về chiều của các đối tượng, và đây là kỹ thuật được dùng trong việc
phác thảo để tạo ra các bức vẽ tỷ lệ của các đối tượng ba chiều. Phương pháp này được dùng để thu
các hình ảnh chính xác ở các phía khác nhau của một đối tượng. Tuy nhiên, phép chiếu song song
không cho một hình ảnh thực tế của các đối tượng ba chiều. Ngược lại, phép chiếu phối cảnh tạo ra
các hình ảnh thực nhưng không bảo tồn các chiều liên hệ. Các đường ở xa được chiếu sẽ nhỏ hơn
các đường ở gần mặt phẳng chiếu, như trong hình 6.3. Hai đoạn thẳng dài bằng nhau, trong phép
chiếu phối cảnh, đoạn nào ở xa mặt phẳng chiếu hơn sẽ có kích thước nhỏ hơn.
Hình 6.3 Hai đoạn
thẳng trong phép chiếu
phối cảnh.
6.2 Phép chiếu song song
Các hình ảnh được hình thành bằng phép chiếu song song có thể được xác định dựa vào góc hợp bởi
hướng của phép chiếu hợp với mặt phẳng chiếu. Khi hướng của phép chiếu vuông góc với mặt
phẳng, ta có phép chiếu
trực giao (hay phép chiếu
vuông góc – orthographic
projection). Một phép chiếu
có thể không vuông góc với
mặt phẳng chiếu được gọi
là phép chiếu xiên.
Hình 6.4 Phép chiếu cùng
kích thước của một đối
tượng lên bề mặt quan sát
Các phép chiếu trực giao đa số được dùng để tạo ra quang cảnh nhìn từ phía trước, bên sườn, và
trên đỉnh của đối tượng. Quang cảnh phía trước, bên sườn, và phía sau của đối tượng được gọi là
“mặt chiếu”, và quang cảnh phía trên được gọi là “mặt phẳng” . Các bản vẽ trong kỹ thuật thường
dùng các phép chiếu trực giao này, vì các chiều dài và góc miêu tả chính xác và có thể đo được từ
Trang
34
bản vẽ. Chúng ta cũng có thể tạo các phép chiếu trực giao để có thể quan sát nhiều hơn một mặt của
một đối tượng. Các quang cảnh như thế được gọi là các phép chiếu trực giao trục lượng học. Hầu
hết phép chiếu trục lượng học được dùng là phép chiếu cùng kích thước. Một phép chiếu cùng kích
thước được thực hiện bằng việc sắp xếp song song mặt phẳng chiếu mà nó cắt mỗi trục tọa độ ở
nơi đối tượng được định nghĩa (được gọi là các trục chính) ở các khoảng cách như nhau từ ảnh gốc.
Hình 6.5 trình bày phép chiếu cùng kích thước. Có tám vị trí, một trong tám mặt, đều có kích thước
bằng nhau. Tất cả ba trục chính được vẽ thu gọn bằng nhau trong phép chiếu cùng kích thước để
kích thước liên hệ của các đối tượng được bảo tồn. Đây không là trường hợp phép chiếu trực giao
trục lượng học tổng quát, khi mà các hệ số tỷ lệ theo ba trục chính có thể khác nhau.
Hình 6.5 Ba phép chiếu trực giao của một đối tượng.
Các phương trình biến đổi để thực hiện một phép chiếu song song trực giao thì dễ hiểu. Đối với
điểm bất kỳ (x, y, z), điểm chiếu (x
p
, y
p
, x
p
) trên bề mặt chiếu được tính như sau:
x
p
= x, y
p
= y, z
p
= 0 (6-1)
6.2.1 Phép chiếu xiên
Một phép chiếu xiên đạt được bằng việc
chiếu các điểm theo các đường thẳng song
song, các đường thẳng này không vuông
góc với mặt phẳng chiếu. Hình 6.6 trình bày
hình chiếu xiên của điểm (x, y, z) theo một
đường thẳng chiếu đến vị trí (x
p
, y
p
). Các
tọa độ chiếu trực giao trên mặt phẳng chiếu
là (x, y). Đường thẳng của phép chiếu xiên
tạo một góc α với đường thẳng trên mặt
Trang
35
phẳng chiếu (đây là đường nối điểm (xp, yp) với điểm (x, y)). Đường này, có chiều dài L, hợp một
góc φ với phương ngang trên mặt phẳng chiếu. Chúng ta có thể diễn tả các tọa độ chiếu qua các số
hạng x, y, L, và φ:
x
p
= x + L cosφ (6-2)
y
p
= y + L sinφ
Hình 6.6 Phép chiếu vuông góc của điểm (x, y, z) thành điểm (xp, yp) lên mặt phẳng chiếu
Phương chiếu có thể định nghĩa bằng việc chọn các giá trị cho góc α và φ. Các chọn lựa thông
thường cho góc φ là 30
o
và 45
o
, là các góc hiển thị một quang cảnh của mặt trước, bên sườn, và trên
đỉnh (hoặc mặt trước, bên sườn, và dưới đáy) của một đối tượng. Chiều dài L là một hàm của tọa độ
z, và chúng ta có thể tính tham số này từ các thành phần liên quan:
L
z
tanα · . Từ đó, các phương
trình của phép chiếu xiên 6.2 có thể được viết lại như sau:
x
p
= x + zcosφ / tgα (6-3)
y
p
= y + z sinφ / tgα
Ma trận biến đổi để tạo ra bất kỳ việc chiếu song song có thể được viết như sau :

1
1
1
1
1
]
1

¸

·
1 0 0 0
0 0 Lsinφ Lcosφ
0 0 1 0
0 0 0 1
M] [
P
(6-4)
Một phép chiếu trực giao có thể đạt được khi ở góc chiếu α = 90
o
. Các phép chiếu xiên được sinh ra
với góc chiếu α ≠ 90
o
. Ma trận phép chiếu có cấu trúc tương tự ma trận của phép làm biến dạng theo
trục z. Thực tế, kết quả của ma trận chiếu này là làm biến dạng mặt phẳng của z và chiếu chúng lên
mặt phẳng quan sát. Các giá trị tọa độ x và y trong mỗi mặt của z bị thay đổi bởi một hệ số tỷ lệ đến
giá trị z của mặt phẳng để các góc, các khoảng cách, và các đường song song trong mặt phẳng được
chiếu chính xác.
6.2.2 Phép chiếu trục đo đều
Trong các phép chiếu trục đo, phép chiếu trục đo đều thường
được dùng trong kỹ thuật. Đối với phép chiếu loại này, góc giữa
các trục chính bằng 120
o
, như hình vẽ dưới đây. Để tạo hình
chiếu trục đo vuông góc đều, kết hợp 2 phép quay được thực
hiện trên đối tượng hình học. Sau đó là phép chiếu vuông góc,
lên mặt phẳng z = 0, lúc đó các cạnh song song của đối tượng
được rút ngắn lại bằng nhau. Hệ số rút ngắn được tính bằng tỷ số
giữa chiều dài mỗi cạnh trên hình chiếu với chiều dài ban đầu.
Giả thiết có một hình chiếu trên mặt phẳng z = 0 trong hệ tọa độ tự nhiên, các phép quay là phép
quay góc
y
θ
quanh trục y, sau đó là phép quay góc
x
θ

quanh trục x. Trình tự quay được dùng để
quan sát hình ảnh trục đo, gọi là phép nghiêng.
Trang
36

Các ma trận quay tương ứng để tạo phép nghiêng được mô tả theo ma trận sau:
θ
x R
θ
y R
] [ ] [ M M [M] ·
=
1
1
1
1
]
1

¸


1
1
1
1
]
1

¸

1 0 0 0
0 cosθ sinθ 0
0 sinθ cosθ 0
0 0 0 1
1 0 0 0
0 cosθ 0 sinθ
0 0 1 0
0 sinθ 0 cosθ
x x
x x
y y
y y

=
1
1
1
1
]
1

¸



1 0 0 0
0 cosθ cosθ cosθ sinθ sinθ
0 sinθ cosθ 0
0 cosθ sinθ sinθ sinθ cosθ
y x y x y
x x
x y x y y
Để tạo hình chiếu trục đo, phép chiếu vuông góc lên mặt phẳng z = 0 được thực hiện như sau:
[M]
trục đo = [M]
1
1
1
1
]
1

¸

1 0 0 0
0 0 0 0
0 0 1 0
0 0 0 1
=
1
1
1
1
]
1

¸


1 0 0 0
0 0 cosθ sinθ sinθ
0 0 cosθ 0
0 0 sinθ sinθ cosθ
y x y
x
x y y
(6-5)
Các véc tơ đơn vị x, y, z qua phép biến đổi bằng ma trận phép chiếu trục đo , trở thành x*, y*, z*:
x* = [1 0 0 1]
[M]
trục đo
= [
y
cosθ

x y
sinθ sinθ
0 1 ]
y* = [0 1 0 1]
[M]
trục đo
= [ 0
x
cosθ 0 1]
z* = [0 0 1 1]
[M]
trục đo
= [
y
sinθ

y x
cosθ sinθ −
0 1]
Có | x*| = |y*| = | z*| , do đó
x
sinθ = 1/ 3 , hay
0
x
26 . 35 θ t · ;
y
sinθ
= 1/
2
hay
0
y
45 θ t ·

6.3 Phép chiếu phối cảnh
Khi các đối tượng ba chiều đựợc chiếu lên một mặt phẳng dùng các phương trình biến đổi phối
cảnh, bất kỳ tập hợp các đường thẳng song song nào của đối tượng mà không song song với mặt
phẳng chiếu được chiếu thành các đường đồng quy. Các đường thẳng song song với mặt phẳng khi
chiếu sẽ tạo ra các đường song song. Điểm mà tại đó tập hợp các đường thẳng song song được chiếu
xuất hiện hội tụ về đó được gọi là điểm tụ (Điểm ảo). Mỗi tập hợp các đường thẳng song song được
chiếu như thế sẽ có một điểm tụ riêng. Các phép chiếu phối cảnh được phân loại dựa vào đó để có
các phép chiếu : một-điểm, hai-điểm, hoặc ba-điểm.
Hình 6.7 Các quang cảnh phối cảnh của một hình lập phương.
Trang
37
Số lượng các điểm tụ chính trong một phép chiếu được xác định bởi số lượng các trục của hệ tọa độ
thực cắt mặt phẳng chiếu. Hình trên minh họa hình ảnh của các phép chiếu phối cảnh một-điểm và
hai-điểm của hình lập phương. Trong hình 6.7(b), mặt phẳng chiếu có phương song song với mặt xy
để chỉ có trục z bị cắt. Phương này tạo ra phép chiếu phối cảnh một-điểm với một điểm tụ trên trục
z. Với quang cảnh trong hình (c), mặt phẳng chiếu cắt cả hai trục x và z nhưng không cắt trục y. Kết
quả, phép chiếu phối cảnh hai-điểm này chứa cả hai điểm tụ : trên trục x và trên trục z.
Để đạt được phép chiếu phối cảnh của đối tượng
ba chiều, chúng ta chiếu các điểm theo đường
thẳng chiếu để các đường này gặp nhau ở tâm
chiếu. Trong dưới đây, tâm chiếu trên trục z và
có giá trị âm, cách một khoảng d phía sau mặt
phẳng chiếu. Bất kỳ điểm nào cũng có thể được
chọn làm tâm của phép chiếu, tuy nhiên việc
chọn một điểm dọc theo trục z sẽ làm đơn giản
việc tính toán trong các phương trình biến đổi.
Hình 6.8 Phép chiếu phối cảnh của điểm P
Chúng ta có thể đạt được các phương trình biến đổi cho phép chiếu phối cảnh từ các phương trình
tham số mô tả các đường chiếu từ điểm P đến tâm chiếu. Các tham số xây dựng các đường chiếu
này là :
x’ = x – xu
y’ = y – yu (6-6)
z’ = z – (z + d)u
Tham số u lấy giá trị từ 0 đến 1, và các tọa độ (x’, y’, z’) thể hiện cho bất kỳ điểm nào dọc theo
Trang
38
đường thẳng chiếu. Khi u = 0, điểm P ở tọa độ (x, y, z). Ở đầu mút kia của đường thẳng u =1, và
chúng ta có các tọa độ của tâm chiếu (0, 0, d). Để thu được các tọa độ trên mặt phẳng chiếu, chúng
ta đặt z’ = 0 và tìm ra tham số u :

d z
z
u
+
· (6-7)
Giá trị của tham số u tạo ra giao điểm của đường chiếu với mặt phẳng chiếu tại (x’, y’, 0). Thế
phương trình 6-7 vào phương trình 6-6, ta thu được các phương trình biến đổi của phép chiếu phối
cảnh như sau :

1 z/d
1
x
d z
d
x x'
+
·
+
· ;
1 z/d
1
y
d z
d
y y'
+
·
+
· ; 0 z' · (6-8)
Dùng biểu diễn hệ tọa độ thuần nhất ba chiều, chúng ta có thể viết phép biến đổi phối cảnh theo ma
trận :
] ] [ [
1
1
1
1
]
1

¸

·
1 0 0 0
1/d 0 0 0
0 0 1 0
0 0 0 1
1 z y x w z y x
h h h
(6-9)
Hình chiếu phối cảnh một tâm chiếu thì không tạo hình chiếu tương ứng với đối tượng hình học. Nói
chung, đối tượng phải được nhìn thấy nhiều mặt để hiểu rõ hình dạng của đối tượng. Nếu các phép
tịnh tiến hay phép quay được thực hiện trước phép chiếu phối cảnh một tâm chiếu thì hình ảnh sẽ tốt
hơn.

Giả thiết có một khối vuông đơn vị, có đỉnh phía sau bên dưới đặt tại gốc tọa độ, như hình dưới đây.
Khối vuông quay góc θ quanh trục y và dịch chuyển tịnh tiến theo ma trận trước khi phép chiếu
phối cảnh một điểm [M] lên mặt phẳng z = 0, với tâm chiếu trên trục z. Các tọa độ đỉnh của khối
vuông thay đổi theo các phép biến hình sau:

] [ ] [M ] [ M M
tr
θ
y R =
1
1
1
1
]
1

¸


1
1
1
1
]
1

¸

1
1
1
1
]
1

¸

1 0 0 0
1/d 0 0 0
0 0 1 0
0 0 0 1
1 b a 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 cosθ 0 sinθ
0 0 1 0
0 sinθ 0 cosθ

Trang
39
[M]phối cảnh 2 điểm =
1
1
1
1
]
1

¸

d / b - 1 0 a 0
d / cosθ - 0 0 sinθ
0 0 1 0
d / sinθ 0 0 cosθ
(6-10)

Nếu khối vuông được quay quanh trục y trước, sau đó quanh trục x trước khi áp dụng phép chiếu
phối cảnh, ma trận kết hợp như sau:
] [ ] [ ] [ M M M
φ
x R
θ
y R
=
1
1
1
1
]
1

¸


1
1
1
1
]
1

¸


1
1
1
1
]
1

¸

1 0 0 0
1/d 0 0 0
0 0 1 0
0 0 0 1
1 0 0 0
0 cosφ sinφ 0
0 sinφ φ cos 0
0 0 0 1
1 0 0 0
0 cosθ 0 sinθ
0 0 1 0
0 sinθ 0 cosθ
[M]phối cảnh 3 điểm =
1
1
1
1
]
1

¸

1 0 0 0
d / cosφ cosθ - 0 φ sin θ cos - sinθ
d φ sin 0 φ cos 0
/d cosφ sinθ 0 sinφ sinθ cosθ
/ -
(6-11)
6.4 Bài tập áp dụng
Bài 1 Viết chương trình vẽ đường cong Bezier.
Bài 2 Viết chương trình vẽ mặt lưới B – Spline.
Bài 3 Viết chương trình vẽ phối cảnh hình khối cầu, lăng trụ.. .
Gợi ý: Sử dụng thư viện đồ họa Direct X hoặc OpenGL.
Trang
40
CHƯƠNG 7 HIỂN THỊ HÌNH ẢNH THẬT
7.1 Khử đường khuất, mặt khuất
Một vấn đề cần được quan tâm đến trong việc tạo ra các hình ảnh thực là sự xác định và xóa bỏ các
phần của đối tượng hình học mà ta không nhìn thấy được từ một vị trí quan sát. Các thuật toán về
đường khuất và mặt khuất dựa vào xử lý trực tiếp định nghĩa đối tượng hay xử lý hình chiếu của các
đối tượng đó. Hai tiếp cận này được gọi là phương pháp không gian đối tượng và phương pháp
không gian ảnh. Phương pháp không gian đối tượng xác định các thành phần của đối tượng được
Trang
41
nhìn thấy bằng cách sử dụng các quan hệ hình học và không gian. Nó thực hiện với độ chính xác từ
dữ liệu mô tả đối tượng. Trong thuật toán không gian ảnh, tính chất nhìn thấy được của một điểm
được quyết định bởi điểm ở vị trí pixel trên mặt phẳng chiếu. Trong mục này, chúng ta khảo sát một
vài trong số các giải thuật khử đường khuất, mặt khuất.
7.1.1 Phép lựa chọn mặt sau
Phép lựa chọn mặt sau là một cách đơn giản dùng để khử bỏ các mặt phía sau đối tượng so với
người quan sát. Nó chỉ áp dụng cho khối đa diện lồi, nhưng nó là bước đầu giải quyết vấn đề khử bỏ
đường và mặt khuất cho nhiều đối tượng phức tạp. Phép lựa chọn mặt sau thực hiện trong không
gian đối tượng.
Kỹ thuật này sử dụng các pháp tuyến hướng ra ngoài mặt một đa diện trong quá trình thực hiện, như
ở hình dưới đây. Phép kiểm tra đơn giản được thực hiện để xác định pháp tuyến có hướng ra ngoài
hay không. Đầu tiên, chọn véc tơ i hướng đến điểm bên trong đa diện, sau đó tìm véc tơ pháp tuyến
n bằng tích có hướng 2 véc tơ nằm trên mặt. Cuối cùng, là phép nhân vô hướng giữa i và n để xác
định hướng của pháp tuyến theo quy tắc:
Nếu n.i > 0 thì pháp tuyến hướng vào trong; ngược lại thì
pháp tuyến hướng ra bên ngoài đa diện.
Việc kiểm tra không cần thiết nếu mọi mặt được mô tả bằng các
đỉnh có thứ tự, theo quy tắc bàn tay phải. Trường hợp đó thì
hướng của pháp tuyến luôn chỉ bên ngoài đa diện. Khi đã tìm ra
véc tơ pháp tuyến hướng ra ngoài cho các mặt, ta xác định tính nhìn thấy của một mặt như sau: tạo
một véc tơ ngắm v được xây dựng từ một điểm bất kỳ trên mặt hướng đến điểm nhìn, như trên hình
sau. Phép nhân v. n > 0 thì mặt được nhìn thấy,
nếu không thì mặt bị che khuất.
Cho hình đa diện sau, hãy xác định các mặt nhìn
thấy từ vị trí P(5, 5, 5) nếu biết i, j, k là các véc
tơ đơn vị trên các trục x, y, z.
Hình 7.2 Đa diện ABCDE
Xét mặt phẳng AED, véc tơ pháp tuyến của mặt phẳng là tích có hướng
AD AE. .
:
N =
AD AE. .
=
1
1
1
]
1

¸



1 0 1
0 1 1
k j i
= (i , j , k)
Nếu chọn điểm Q bên trong đa diện có tọa độ (0, 0.5, 0), thì véc tơ AQ = (-i , 0.5j) . Tích vô hướng
giữa n và AQ là : (i , j , k)(-i , 0.5j) = -0.5 , nên hướng của n đi từ trong đa diện ra bên ngoài.
Véc tơ v được thiết lập là AP = (4i , 5j, 5k) . Tích vô hướng n.v là 14, nên AED nhìn thấy từ P.
Hoàn toàn tương tự cho các mặt BEA, DEC, trong khi CEB và ABCD không nhìn thấy.
7.1.2 Phép kiểm tra minimax
Trang
42
Đối tượng hình học được chiếu lên mặt phẳng chiếu, sẽ có những bề mặt của đối tượng giao nhau.
Phần giao nhau sẽ không cần vẽ lại nhiều lần để tăng tốc độ thực hiện. Phép kiểm tra minimax là
phép thử một điểm nằm trong mặt hay khối bao không. Nó sử dụng trong không gian đối tượng hoặc
trong không gian ảnh, để kiểm tra hai cạnh hoặc mặt có chồng lên nhau không. Nếu vượt qua được
phép kiểm tra, các cạnh hay các mặt cũng không giao nhau.

Xét các đa giác ở hình trên, những giá trị max, min của tọa độ đỉnh đa giác được so sánh theo các
bất phương trình: x
Amax
< x
Bmin
, x
Bmax
< x
Amin
, y
Amax
< y
Bmin
, y
Bmax
< y
Amin
. Nếu một bất phương trình
đúng thì hai đa giác không giao nhau. Qua phép thử, đa giác A không đè lên B trong hình bên trái vì
bất phương trình 1 đúng, trong khi đa giác A đè lên đa giác B vì các bất phương trình đều sai. Phép
kiểm tra cũng được mở rộng cho tọa độ z.
7.1.3 Phép kiểm tra nằm trong
Phép kiểm tra nằm trong kiểm tra các đỉnh của một đa giác này nằm trong đa giác kia không. Nếu
phép minimax xử lý không đúng cho một cặp đa giác thì có thể là một trong hai đa giác bao quanh
cái kia. Xét một điểm P nào đó đối với đa giác, điểm P hoặc nằm trong hay nằm ngoài đa giác. Các
đoạn thẳng vẽ từ P đến các đỉnh của đa giác theo thứ tự, cùng chiều hay ngược chiều kim đồng hồ.
Các góc tạo bởi các đoạn này sẽ được tính tổng và kiểm tra theo cách sau:
• Nếu tổng các góc bằng 0 thì P nằm ngoài đa giác
• Nếu tổng các góc bằng 360 thì P nằm trong đa giác.
Phép kiểm tra áp dụng cho những điểm còn lại của đa giác, xác định được đa giác này nằm trong đa
giác kia không.

7.1.4 Giải thuật vùng đệm độ sâu
Một tiếp cận không gian ảnh được dùng phổ biến để khử mặt khuất là giải thuật vùng đệm độ sâu.
Một cách cơ bản, thuật toán này kiểm tra tính nhìn thấy được của các mặt mỗi lần một điểm. Với
mỗi vị trí pixel (x,y) trên mặt phẳng quan sát, mặt nào có giá trị tọa độ z nhỏ nhất ở vị trí pixel đó thì
nhìn thấy được. Hình 7.3 trình bày ba mặt có độ sâu khác nhau, với sự quan tâm đến vị trí (x, y)
trong hệ quan sát bàn tay trái. Mặt S1 có giá trị z nhỏ nhất ở vị trí này vì vậy giá trị độ sáng ở (x, y)
được lưu.
Hai vùng đệm được cần để cài đặt phương pháp này. Một vùng đệm độ sâu được dùng để lưu trữ
các giá trị z cho mỗi vị trí (x, y) của các mặt được so sánh. Vùng đệm thứ hai là vùng đệm làm tươi
(hay còn gọi là vùng đệm khung), lưu giữ các giá trị độ sáng cho mỗi vị trí (x, y). Ở vị trí (x, y), mặt
S1 có giá độ sâu nhỏ nhất và vì thế được nhìn thấy ở vị trí đó.
Trang
43
Phương pháp này có thể được thực hiện hiệu quả
trong các hệ tọa độ chuẩn, với các giá trị độ sâu thay
đổi từ 0 đến 1. Giả sử rằng một không gian chiếu
được ánh xạ vào một không gian quan sát hình hộp
chuẩn, ánh xạ của mỗi mặt lên mặt phẳng quan sát là
một phép chiếu trực giao. Độ sâu của các điểm trên bề
mặt của một đa giác được tính từ phương trình mặt
phẳng. Ban đầu, tất cả các vị trí trong vùng đệm độ
sâu được đặt giá trị 1 (độ sâu lớn nhất), và vùng đệm
làm tươi được khởi tạo giá trị của độ sáng nền.
Hình 7.3
Mỗi mặt (đã được lập danh sách trong các bảng đa giác sau đó được xử lý. Mỗi lần một đường quét
tính độ sâu, hoặc giá trị z, ở mỗi vị trí (x, y). Giá trị z vừa được tính xong sẽ được so sánh với các
giá trị lưu trữ trước đó trong vùng đệm độ sâu ở vị trí đó. Nếu giá trị z vừa được tính xong nhỏ hơn
các giá trị trước đó, giá trị z mới sẽ được lưu, và độ sáng của mặt ở vị trí đó cũng được cập nhật lại
vào vị trí tương ứng trong vùng đệm làm tươi.
Chúng ta có thể tổng kết các bước của thuật toán vùng đệm độ sâu như sau:
1. Khởi tạo vùng đệm độ sâu và vùng đệm làm tươi để với tất cả các vị trí (x,y), depth(x, y) =1 và
refresh(x, y) = background.
2. Đối với mỗi vị trí trên mỗi mặt, so sánh các giá trị độ sâu với các giá trị độ sâu được lưu trước đó
trong vùng đệm độ sâu để xác định tính chất nhìn thấy được.
a. Tính giá trị z cho mỗi vị trí (x, y) trên mặt.
b. Nếu z < depth(x, y) thì đặt lại depth(x, y)= z và refresh(x, y) = i , với i là giá trị độ sáng trên mặt ở
vị trí (x, y). Trong bước cuối cùng, nếu z không nhỏ hơn giá trị trong vùng đệm độ sâu ở vị trí đó,
điểm không được nhìn thấy. Khi quá trình này được hoàn thành cho tất cả các mặt, vùng đệm độ sâu
chứa các giá trị z của các mặt nhìn thấy được và vùng đệm làm tươi chỉ chứa các giá trị độ sáng của
các mặt nhìn thấy được đó.
Các giá trị độ sâu cho một vị trí (x, y) được tính từ phương trình của mỗi mặt:
Vớ
i mỗi đường quét bất kỳ (xem hình 7.4), các tọa độ x trên
cùng đường quét sai khác nhau 1, và các giá trị y giữa hai
đường quét cũng sai khác nhau 1. Nếu độ sâu của vị trí (x,y)
được xác định là z, khi đó độ sâu z’ của vị trí kế tiếp (x+1, y)
dọc theo theo đường quét có được từ phương trình trên như
sau: Với mỗi đường quét bất kỳ, các tọa độ x trên cùng
đường quét sai khác nhau 1, và các giá trị y giữa hai đường
quét cũng sai khác nhau 1. Nếu độ sâu của vị trí (x,y) được xác
định là z, khi đó độ sâu z’ của vị trí kế tiếp (x+1, y) dọc theo
theo đường quét có được như sau :
Hình 7.4
hoặc
C
A
z z' − ·
Trang
44
C
D By Ax
z
) ( − − −
·
C
D By 1) A(x
z'
) ( − − + −
·
Tỷ số A/C không đổi với mỗi mặt, vì vậy giá trị độ sâu của điểm kế tiếp trên cùng đường quét có
được từ giá trị trước đó với một phép trừ. Chúng ta thu được các giá trị độ sâu giữa các đường quét
theo cách tương tự. Một lần nữa giả sử rằng vị trí (x, y) có độ sâu z. Khi đó ở vị trí (x, y-1) trên
đường quét ngay bên dưới, giá trị độ sâu được tính từ phương trình mặt phẳng như sau :
hoặc
C
B
z ' z' + ·
Độ sâu z được cộng thêm tỷ số B/C. Phương pháp vùng đệm độ sâu thì dễ dàng để cài đặt, và nó
không cần sắp xếp các mặt trong ảnh. Nhưng nó cần đến một vùng đệm thứ hai đó là vùng đệm làm
tươi. Một hệ thống với độ phân giải 1024 x 1024 có thể cần hơn một triệu vị trí trong vùng đệm độ
sâu, với mỗi vị trí cần đủ bit để lưu giữ các tọa độ z tăng. Một cách để giảm bớt không gian lưu giữ
cần thiết là tại mỗi thời điểm chỉ xử lý một phần của ảnh, dùng một vùng độ sâu nhỏ hơn. Sau mỗi
phần ảnh được xử lý xong, vùng đệm được dùng lại cho phần kế tiếp.
7.2 Phép tô bóng
Mặc dù các bản vẽ được dùng trong các ứng dụng kỹ thuật, nhưng chúng chưa đầy đủ nếu biểu diễn
đối tượng như thật. Hình ảnh màu được tô bóng là mục đích cần thu được, và nó có thể cung cấp các
thông tin mà bản vẽ các đường, mặt không giải quyết được. Khi tô bóng bề mặt của đối tượng, hình
bóng của mọi điểm trên bề mặt xác định bằng các yếu tố :
• Mô tả các nguồn sáng
• Đặc điểm bề mặt
• Vị trí tương đối của nguồn sáng quan hệ với bề mặt
Ánh sáng cần được mô tả chi tiết về nguồn sáng như vị trí, cường độ, nơi chúng chiếu vào… Nói
chung, có 2 loại ánh sáng là ánh sáng tỏa (point light) và ánh sáng lan truyền (ambient light). Ánh
sáng tỏa cung cấp ánh sáng từ một điểm theo các hướng xác định. Hình ảnh nó tạo ra có phần thô vì
đối tượng được chiếu sáng từ một vị trí. Ánh sáng môi trường được cung cấp theo các hướng, không
quan tâm đến nguồn sáng.
Trong việc phát triển nguồn sáng, các mô hình được tô bóng phải xác định mối quan hệ giữa nguồn
sáng và bề mặt tô. Hiệu ứng của các nguồn sáng tỏa phải được xem xét, bổ sung giá trị không đổi
cường ánh sáng môi trường trong các phép tính. Cách thức ánh sáng phản chiếu từ bề mặt là hệ số
quan trọng khi tô. Sự tán xạ ánh sáng xuất hiện khi ánh sáng phát ra như nhau theo mọi hướng, do
đó độ sáng trên mặt là như nhau khi nhìn từ các góc độ. Nó tạo ra mặt nhẵn mờ đục. Ngược lại, sự
phản chiếu gương phản chiếu ánh sáng chỉ theo một hướng, tạo ra một mặt sáng chói như tấm
gương. Các bề mặt thật phản chiếu ánh sáng phối hợp hai hiệu ứng trên. Sự tán xạ ánh sáng dễ tính
toán nên nó được kết hợp trong đa số các mô hình đồ họa.
Kết quả tạo ra của mô hình được tô bóng là giá trị cường độ cho một loạt điểm trên bề mặt đối
tượng. Để tính giá trị cường độ ánh sáng, xét tia tới từ nguồn tới bề mặt, như hình dưới đây. Góc tạo
θ giữa tia tới và véc tơ pháp tuyến đơn vị tại điểm tới trên bề mặt được dùng cho phép tính.
Tia tới
Trang
45
C
D) 1) B(y Ax (
' z'
− − − −
·
n
θ i


Kỹ thuật tô bóng bề mặt được nêu ra như sau: Giả thiết cường độ ánh sáng phản chiếu không phụ
thuộc vị trí quan sát, sẽ xác định như sau:
cosθ k I I
d s
·
. Trong đó, I
s
là cường độ của nguồn và k
d

hệ số phản xạ của bề mặt trong khoảng (0, 1). Hàm cosin của góc θ tìm theo tích vô hướng giữa hai
véc tơ đơn vị i và n , do đó
i) . (n. k I I
d s
·
Góc θ càng nhỏ, bề mặt đang xem xét càng hướng tới
nguồn. Đặc điểm phép tô bóng tạo cường độ sáng giống nhau cho mọi điểm trên bề mặt, tạo ra hình
ảnh gồm nhiều ô sáng, không hoàn toàn giống như thật, nhưng lại thực hiện tính nhanh, do đó kỹ
thuật tô bóng bề mặt được sử dụng để kiểm tra sơ bộ khi thiết kế.

Cho 3 điểm A(0, 0, 1); B(1, 0, 0); C(0, 1, 0) và cường độ nguồn sáng là 9 đặt tại khoảng cách xa
theo hướng 4k) 3j, i, 2 ( . Hãy xác định cường độ tô với hệ số phản xạ 0.25.
Véc tơ đơn vị i =
3 3
4k) 3j, i, 2 (
, véc tơ pháp tuyến n =
3
) , , (
| k) , j k).(0, 0, (i, |
k) , j , k).(0 0, (i,
.
. k j i
AC AB
AC AB
·
− −
− −
·
Cường độ tô bóng là I = 9.0,25.(i.n) = 2.1
Kỹ thuật tô bóng Gouraud liên quan đến mọi đỉnh đa giác, cường độ sáng tính toán tại mỗi điểm,
cường độ sáng tại các đỉnh được pha trộn và làm mịn trên bề mặt. Để tính cường độ sáng tại các
đỉnh chung của nhiều đa giác, pháp tuyến của tất cả các đa giác được tính trung bình trước khi tính
toán cường độ:


·
i
i
average
n
n
n
Trang
46

Trong đó, n
i
là pháp tuyến đơn vị của các mặt có chung các đỉnh. Sau khi cường độ tại các đỉnh đã
tính, áp dụng phép nội suy tuyến tính cho cường độ các đỉnh để tô bóng các đa giác. Sử dụng chung
với giải thuật quét dòng, kỹ thuật tạo mô hình tô bóng hiệu quả hơn.
Cho hình thang ABCD như hình vẽ dưới đây, hãy tìm cường độ tại điểm P(5, 2) theo phép tô bóng
Gouroud, biết cường độ trung bình tại bốn đỉnh là I
A
= 5.0 , I
B
= 6.0 , I
C
= 4.0 , I
D
= 9.0 Sử dụng
phép nội suy tuyến tính theo AB, CD để tính giá trị cường độ cho điểm x, y trên dòng quét đi qua P:
5.5 5
2
5) (6
I
) y (y
) y (y
) I (I I
A
B A
P A
A B 1
· +

· +


− ·

6.5 9
2
9) (4
I
) y (y
) y (y
) I (I I
D
C D
P D
D C 2
· +

· +


− ·
6 5 . 5
) 1 9 (
) 1 5 )( 5 . 5 5 . 6 (
I
) x (x
) x (x
) I (I I
1
1 2
1 P
1 2 P
· +

− −
· +


− ·
7.3 Bài tập áp dụng
Bài 1 Cho mặt phẳng tạo bởi 3 điểm A(1, 0, 1); B(4, 0, 1); C(2, 4, 2) và mặt phẳng tạo bởi 3 điểm
D(3, 0, 2); E(2, 0, 0); F(1, 6, 0). Nếu sử dụng phép kiểm tra minmax, xác định tính nhìn thấy giữa 2
phần mặt phẳng.
Bài 2 Cho mặt phẳng chữ nhật tạo bởi A(0, 0) ; B(1, 0) ; C(1, 1); D(0, 1) . Tính cường độ sáng tại
P(0.5, 0,5) theo phép tô bóng Gouraud. Cho cường độ sáng trung bình tại mỗi đỉnh là I
A
= 8, I
B
= 9,
I
C
= 2 , I
D
= 4.
Trang
47
TÀI LIỆU THAM KHẢO
- Đặng Văn Đức. Kỹ thuật đồ họa máy tính. Viện Công nghệ thông tin. 2002.
- Donald Hearn, M. Pauline Baker, Computer Graphics, Prentice-Hall Inc., Englewood
Cliffs, New Jersey, 1986.
- F.S.Hill, Computer graphics, 1990
ĐỀ THI THAM KHẢO
Các đề thi có thời gian làm bài 60 phút
Đề số 1
Trang
48
Câu 1 Cho 3 điểm A, B, C có tọa độ lần lượt là A(0, 40); B(-37, 125); C(40, -81). Hãy tìm tọa độ
mới của các điểm trên qua biến đổi:
a. Phép biến đổi tỷ lệ với hệ số tỷ lệ theo trục hoành là 3, trục tung là 2.
b. Phép quay góc 60
o
, ngược chiều kim đồng hồ quanh gốc tọa độ.
Câu 2 Hãy tìm các hệ số p và tọa độ các điểm sẽ nảy sinh của đoạn thẳng được vẽ theo giải thuật
bresenham, nếu biết đoạn thẳng đi qua hai điểm là A(5, 10) và B(15, 15).
Đề số 2
Câu 1 Cho hệ 3 điểm A, B, C có tọa độ lần lượt là A(43, 0); B(25, -67); C(-40, -34). Hãy tìm tọa độ
mới của các điểm trên qua biến đổi:
a. Phép tịnh tiến với hệ số tịnh tiến theo trục hoành là 44, trục tung là -81.
b. Phép đối xứng qua trục tung.
c. Tìm ma trận biến đổi của 2 phép tịnh tiến và phép đối xứng trên.
Câu 2 Hãy tìm các hệ số p và tọa độ các điểm sẽ nảy sinh của đoạn thẳng được vẽ theo giải thuật
midpoint, nếu biết đoạn thẳng đi qua hai điểm là A(0, 13) và B(10, 7).
Đề số 3
Câu 1 Cho 3 điểm A, B, C có tọa độ lần lượt là A(43, 0); B(25, -67); C(-40, -34). Hãy tìm tọa độ
mới của các điểm trên qua biến đổi:
a. Phép biến dạng với hệ số biến dạng theo trục hoành là 4, trục tung là 3.
b. Phép quay góc 45
o
, ngược chiều kim đồng hồ quanh gốc tọa độ.
Câu 2 Hãy tìm hệ số p và tọa độ của 10 điểm sẽ nảy sinh đầu tiên của cung 1/8 đường tròn được vẽ
theo giải thuật midpoint, nếu biết đường tròn có tâm (10, -25) và bán kính 90.
Đề số 4
Câu 1 Cho 3 điểm A, B, C có tọa độ lần lượt là A(0, 0); B(67, -46); C(-9, 22). Hãy tìm tọa độ mới
của các điểm trên qua biến đổi:
a. Phép đối xứng qua trục hoành.
b. Phép biến đổi tỷ lệ với hệ số tỷ lệ theo trục hoành là 2, trục tung là 1.
c. Tìm ma trận biến đổi của 2 phép đối xứng và phép biến đổi tỷ lệ trên.
Câu 2 Hãy tìm hệ số p và tọa độ của 32 điểm sẽ nảy sinh đầu tiên của đường tròn được vẽ theo giải
thuật midpoint, nếu biết đường tròn có tâm (-30, -12) và bán kính 60.
Đề số 5
Câu 1 Cho 3 điểm A, B, C có tọa độ lần lượt là A(0, 1, 18); B(7, -16, 9); C(-9, 12, 4). Hãy tìm tọa độ
mới của các điểm trên qua biến đổi:
a. Phép biến dạng theo trục z, hệ số biến dạng tác động lên hoành độ là 3, lên tung độ là 2.
b. Tìm ma trận biến đổi của phép đối xứng qua đường y = x.
Câu 2 Cho cửa sổ giới hạn bởi điểm trên trái có tọa độ (10, 76) và điểm dưới phải có tọa độ (60, 24).
Áp dụng giải thuật Cohen-Sutherland thực hiện cắt xén các đoạn thẳng sau với biên cửa sổ:
√ Đoạn thẳng AB: A(4, 35); A(50, 80)
√ Đoạn thẳng CD: C(47, 29); D(55, 3)
√ Đoạn thẳng EF: E(-10, 29); F(0, 3)
Đề số 6
Trang
49
Câu 1 Cho 3 điểm A, B, C có tọa độ lần lượt là A(1, -6, -18); B(16, 7, -9); C(0, 4, -3). Hãy tìm tọa
độ mới của các điểm trên qua biến đổi:
a. Phép biến đổi tỷ lệ, hệ số biến đổi theo trục x là 1, trục y là 3, trục z là 2.
b. Tìm ma trận biến đổi của phép đối xứng qua đường y = -x.
Câu 2 Cho cửa sổ giới hạn bởi điểm trên trái có tọa độ (4, 50) và điểm dưới phải có tọa độ (60, -30).
Áp dụng giải thuật Cohen-Sutherland thực hiện cắt xén các đoạn thẳng sau với biên cửa sổ:
√ Đoạn thẳng AB: A(24, 0); B(40, 90)
√ Đoạn thẳng CD: C(38, -35); D(55, 0)
√ Đoạn thẳng EF: E(-10, 29); F(0, 3)
Đề số 7
Câu 1 Cho 3 điểm A, B, C có` tọa độ lần lượt là A(0, 1, 18); B(7, -16, 9); C(-9, 12, 4). Hãy tìm tọa
độ mới của các điểm trên qua biến đổi:
a. Phép tịnh tiến, hệ số tịnh tiến theo trục x là 10, trục y là -15, trục z là 30.
b. Tìm ma trận biến đổi của phép đối xứng qua đường y = x.
Câu 2 Cho cửa sổ ở hệ tọa độ thực giới hạn bởi điểm trên trái có tọa độ (10, 76) và điểm dưới phải
có tọa độ (60, 24); cửa sổ quan sát giới hạn bởi điểm trên trái có tọa độ (-15, 15) và điểm dưới phải
có tọa độ (-10, 24). Cho tam giác ABC xác định trong hệ tọa độ như sau: A(14, 35); B(50, 29);
C(47, 39). Tìm tọa độ mới của tam giác trong cửa sổ quan sát.
Đề số 8
Câu 1 Cho 3 điểm A, B, C có tọa độ lần lượt là A(-1, -6, 8); B(6, 0, -39); C(4, 0, -2). Hãy tìm tọa độ
mới của các điểm trên qua biến đổi:
a. Phép biến đổi tỷ lệ, hệ số biến đổi theo trục x là 2, trục y là 3, trục z là 1.
b. Tìm ma trận biến đổi của phép đối xứng qua đường y = -x.
Câu 2 Cho cửa sổ ở hệ tọa độ thực giới hạn bởi điểm trên trái có tọa độ (20, 80) và điểm dưới phải
có tọa độ (50, 34); cửa sổ quan sát giới hạn bởi điểm trên trái có tọa độ (-15, 20) và điểm dưới phải
có tọa độ (-12, 25). Cho tam giác ABC xác định trong hệ tọa độ như sau: A(14, 35); B(50, 29);
C(47, 39). Tìm tọa độ mới của tam giác trong cửa sổ quan sát.
Trang
50

MỤC LỤC

STT
CHƯƠNG 1

NỘI DUNG
GIỚI THIỆU ĐỒ HỌA MÁY TÍNH

TRANG
1 1 1 2 3 4 4 4 4 4 6 8 9 10 11 12 13 13 13 13 13 14 14 14 14 14 15 15 15 15 15 16 17 17 18 19 20 21 22 23 24 24 24

1.1 1.2 1.2.1 1.2.2
CHƯƠNG 2

Giới thiệu về đồ họa máy tính Tổng quan về một hệ đồ họa Hệ tọa độ thực, hệ tọa độ thiết bị và hệ tọa độ chuẩn Mô hình màu
CÁC ĐỐI TƯỢNG ĐỒ HỌA CƠ BẢN

2.1 2.1.1 2.1.2 2.2 2.2.1 2.2.2 2.3 2.3.1 2.3.2 2.4
CHƯƠNG 3

Giới thiệu về các đối tượng đồ họa cơ sở Các đối tượng đồ họa cơ sở: điểm, đường, vùng tô, văn bản Các thuộc tính của các đối tượng đồ họa cơ sở Các thuật toán vẽ đối tượng đồ họa cơ sở Vẽ đường thẳng Vẽ đường tròn, elip Các thuật toán tô màu Thuật toán tô màu dựa theo dòng quét đơn giản Thuật toán tô màu dựa theo đường biên Bài tập áp dụng
CÁC PHÉP BIẾN ĐỔI ĐỒ HỌA 2 CHIỀU

3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.2 3.2.1 3.2.2 3.2.3 3.3 3.3.1 3.3.2 3.3.3 3.4 3.5
CHƯƠNG 4

Các phép biến đổi cơ sở Giới thiệu về phép biến đổi Phép tịnh tiến Phép biến đổi tỉ lệ Phép quay Kết hợp các phép biến đổi Kết hợp các phép tịnh tiến Kết hợp các phép biến đổi tỉ lệ Kết hợp các phép quay Một số phép biến đổi khác Phép biến dạng Phép đối xứng Tính chất của phép biến đổi affine Phép biến đổi giữa các hệ tọa độ Bài tập áp dụng
PHÉP QUAN SÁT 2 CHIỀU

4.1 4.2 4.3 4.3.1 4.3.2 4.3.3 4.4
CHƯƠNG 5

5.1 5.1.1

Cửa sổ và vùng quan sát Phép biến đổi từ cửa sổ - đến – vùng quan sát Phép cắt xén hai chiều Giải thuật Cohen – Sutherland Giải thuật chia tại trung điểm Giải thuật Liang – Barsky Bài tập áp dụng ĐỒ HỌA 3 CHIỀU Tổng quan về đồ họa ba chiều Quy trình hiển thị đồ họa ba chiều

5.1.2 5.2 5.2.1

5.2.2 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.4
CHƯƠNG 6

Mô hình hóa đối tượng Biểu diễn đối tượng ba chiều Biểu diễn mặt đa giác Đường cong và mặt cong , đường cong và mặt cong Bezier, BSpline Các phép biến đổi hình học ba chiều Phép biến đổi tỷ lệ Phép biến dạng Phép tịnh tiến Phép quay Bài tập áp dụng
QUAN SÁT 3 CHIỀU

24 26 26 26 28 29 29 30 30 31 32 32 33 36 40 41 41 44 48 49

6.1 6.2 6.3 6.4
CHƯƠNG 7

Các phép chiếu Phép chiếu song song Phép chiếu phối cảnh Bài tập áp dụng
HIỂN THỊ HÌNH ẢNH THẬT

7.1 7.2 7.3

Khử đường khuất, mặt khuất Phép tô bóng Bài tập áp dụng Tài liệu, Đề thi ôn tập

.Đồ họa 2D/3D .2.1. Giới thiệu về đồ họa máy tính 1.Những vấn đề cơ bản về đồ họa máy tính . Các đối tượng đồ họa cơ sở : điểm. Giới thiệu về các đối tượng đồ họa cơ sở 2. Nội dung chủ yếu . 12 9 2 1 TS 3 LT 3 TH/Xemina 0 BT KT . Toán rời rạc. xử lý hình ảnh cơ bản trong đồ họa. vùng tô.1. Giải thuật Mục tiêu của học phần: Cung cấp cho sinh viên kiến thức và rèn luyện kỹ năng lập trình đồ họa máy tính đồ họa máy tính. Tổng quan về một hệ đồ họa Chương 2 : Các đối tượng đồ họa cơ bản 2.Các phương pháp biến hình .Các phương pháp tạo bóng Nội dung chi tiết của học phần: PHÂN PHỐI SỐ TIẾT TÊN CHƯƠNG MỤC Chương 1: Giới thiệu đồ họa máy tính. các phương pháp dựng hình...1. Cấu trúc dữ liệu. .Tên học phần: Đồ họa máy tính Bộ môn phụ trách giảng dạy: Khoa học Máy tính Mã học phần: 17211 TS tiết 75 Lý thuyết 45 Thực hành/Xemina 15 Tự học 0 Bài tập lớn 15 Loại học phần: 4 Khoa phụ trách: CNTT Tổng số TC: 4 Đồ án môn học 0 Điều kiện tiên quyết: Sinh viên phải học xong các học phần sau mới được đăng ký học phần này: Toán cao cấp.1. 1. Tin học đại cương.Các thuật toán cơ bản trong đồ họa máy tính. văn bản. Kỹ thuật lập trình. đường.

1.3.2. 3. Biểu diễn ma trận của các phép biến đổi.4.2. Vẽ đường tròn. Kết hợp hai hay nhiều phép tịnh tiến 3.3. Kết hợp hai hay nhiều phép biến đổi tỉ lệ 3.1. Thuật toán tô màu theo dòng quét 2.PHÂN PHỐI SỐ TIẾT TÊN CHƯƠNG MỤC 2.3. Phép biến dạng 3. Phép tịnh tiến 3. ellipse 2.2.2.1. biểu diễn ma trận của phép biến đổi. Phép biến đổi tỉ lệ 3.2.5.1.1. Một số phép biến đổi khác 3.3.1.2. Hệ tọa độ thuần nhất 3.2.3.3. Các thuật toán tô màu 2. Kết hợp hai hay nhiều phép quay quanh tâm 3.3.1.1.2.2. Các thuộc tính của các đối tượng đồ họa cơ sở 2.2.2.2. Kết hợp các phép biến đổi 3. Phép đối xứng 10 8 2 TS LT TH/Xemina BT KT .3.4. Phép quay quanh gốc tọa độ 3. Các thuật toán vẽ đối tượng đồ họa cơ sở 2. Các phép biến đổi cơ sở 3. Bài tập áp dụng Chương 3: Các phép biến đổi đồ họa 2 chiều.1 Giới thiệu về phép biến đổi. Vẽ đường thẳng 2.2.1. Thuật toán tô màu dựa theo đường biên 2. phép biến đổi affine 3.1.1.

Phép quay quanh trục tọa độ 5. Phép biến dạng 5. Cửa sổ. Phép đối xứng 5. Quy trình hiển thị đồ họa ba chiều 5.PHÂN PHỐI SỐ TIẾT TÊN CHƯƠNG MỤC 3.4.3.4.4.đến – vùng quan sát 4.3.3. Phép tỷ lệ 5. Phép biến đổi từ cửa sổ .3 Giải thuật Liang – Barsky 4. Đường cong và mặt cong .3.2.3.2. đường cong và mặt cong Bezier. Tổng quan về đồ họa ba chiều 5.3. Phép cắt xén 2 chiều 4.1 Giải thuật Cohen – Suntherland 4.1.1.1.5.3. Biểu diễn mặt đa giác 5. Vùng quan sát 4. Bài tập áp dụng Chương 4: Phép quan sát hai chiều 4.2. Các phép biến đổi hình học ba chiều 5.2.1.4.2.3. B-Spline 5.2.3.2. Biểu diễn đối tượng ba chiều 5.1. Tính chất của phép biến đổi affine 3.3. Bài tập áp dụng Chương 5: Đồ họa ba chiều 5.3.1.3.2 Giải thuật chia trung điểm 4.1. Bài tập áp dụng 21 9 5 6 1 TS LT TH/Xemina BT KT 9 6 2 1 . Phép biến đổi giữa các hệ tọa độ 3. Mô hình hóa đối tượng 5.

B. Tài liệu học tập : Đặng Văn Đức. Bài tập áp dụng Chương 7: Hiển thị hình ảnh thật 7. Pauline Baker.1. Viện Công nghệ thông tin.6Y. Prentice-Hall Inc. 1990 Hình thức và tiêu chuẩn đánh giá sinh viên: Hình thức thi cuối kỳ : Thi viết. 2002.1 Khử đường khuất. . Phép chiếu phối cảnh 6. mặt khuất 7.4. F.2. New Jersey.4X + 0. Computer graphics.PHÂN PHỐI SỐ TIẾT TÊN CHƯƠNG MỤC Chương 6: Quan sát ba chiều 6. F Điểm đánh giá học phần: Z = 0.S. D. C.2 Phép tô bóng 10 4 2 3 1 TS 10 LT 6 TH/Xemina 2 BT 2 KT Nhiệm vụ của sinh viên : Tham dự các buổi thuyết trình của giáo viên. Phép chiếu song song 6. M.. tham dự các bài kiểm tra định kỳ và cuối kỳ. Englewood Cliffs. Các phép chiếu 6. Computer Graphics.Hill.3. tự học. Kỹ thuật đồ họa máy tính. tự làm bài tập do giáo viên giao. Sinh viên phải đảm bảo các điều kiện theo Quy chế của Nhà trường và của Bộ Thang điểm: Thang điểm chữ A. 1986. Donald Hearn.

vị trí … Đồ họa máy tính còn có chức năng mô tả kích thước của đối tượng. nên nó phải có khả năng tạo ra và hiệu chỉnh các hình ảnh bằng các tương tác và đáp ứng. Sự độc lập với thiết bị cho phép các chương trình ứng dụng đồ họa chạy trên các dạng phần cứng khác nhau. đồ họa máy tính được ứng dụng rộng rãi trong ngành công nghệ thông tin. làm cầu nối cho giao tiếp giữa người dùng và các thiết bị vật lý đơn giản đi. Để đảm bảo sự linh hoạt. dữ liệu. bằng việc cung cấp sự độc lập thiết bị và ngôn ngữ lập trình. sự phát triển mạnh của những hệ đồ họa như CAD/CAM đã trở thành chuẩn công nghiệp và trường học.1 Giới thiệu về đồ họa máy tính Ngày nay. Sự mở rộng được bắt đầu vào giữa những năm 80 là hệ X-Windows 3 chiều. Nó được thực hiện thông qua thiết bị nhập xuất logic cung cấp cho phần mềm ứng dụng thông qua thư viện đồ họa và ánh xạ thiết bị vật lý cụ thể. được đề xuất bởi nhiều công ty và không nêu ra trong các tiêu chuẩn chính thức. tạo thành thao tác dữ liệu đồ họa phức tạp … Các tiêu chuẩn đồ họa thực tế là kết quả của việc chấp nhận trong công nghiệp các giao diện đặc trưng. PHIGS (Programmer’s Hierarchical Graphics System – 1984) hay PHIGS+ bao gồm khả năng lập trình không gian . 7. bao gồm: GKS(Graphics Kernel System – 1985). cung cấp một loạt các chức năng nhập và thao tác đồ họa 2 chiều. được phát triển riêng cho các thiết bị nhập xuất 2 chiều. người lập trình tạo ra một hệ thống Trang 1 . Các ứng dụng đồ họa đưa ra các chỉ dẫn thuật ngữ theo yêu cầu đồ họa người dùng. GKS-3D bổ sung thêm khả năng lập trình 3 chiều. phải có tiêu chuẩn hóa cho môi trường đồ họa ở mức chức năng. áp dụng cho nhiều hệ thiết bị vật lý. Cho tới nay. cho phép nó định địa chỉ các thiết bị nhập xuất khác nhau.2 Tổng quan về một hệ đồ họa Mục tiêu của đồ họa máy tính có chức năng tạo ra và thao tác các hình ảnh đồ họa. Thư viện đồ họa thực hiện tương tác. Hệ thống đồ họa Một trong các yêu cầu chính của một hệ thống đồ họa là các ứng dụng. Đồ họa máy tính biểu diễn được hình ảnh đối tượng. Khởi đầu. Trong những thập niên cuối thế kỷ 20. Được nhắc đến trong số này là hệ X-Windows.CHƯƠNG I GIỚI THIỆU ĐỒ HỌA MÁY TÍNH 1. Đồ họa máy tính ở vị trí quan trọng trong lĩnh vực thiết kế và giao tiếp kỹ thuật. Nó là cơ sở để chuyển đổi các giải pháp tính toán số sang thể hiện hình ảnh tự nhiên cho thiết kế kỹ thuật hay muốn sáng tỏ một vấn đề phức tạp. phân tích dữ liệu. quan hệ. phải được phát triển không phụ thuộc vào phần cúng. các tiêu chuẩn đồ họa thiết lập cho ứng dụng các thay đổi tối thiểu. Khó mà tìm được một ứng dụng thương mại của công nghệ thông tin không sử dụng một thành phần nào đó của hệ đồ họa máy tính. có những tiêu chuẩn đồ họa đã được phát triển trong nhiều năm. Để có được điều đó.

giúp tìm hiểu các ứng dụng đã lựa chọn màu sắc thích hợp như thế nào. Hệ tọa độ thiết bị chuẩn được định nghĩa cho thiết bị đồ họa lý tưởng. Trong khi đó. còn có một khó khăn khác là với các thiết bị khác nhau thì có các định nghĩa khác nhau. các đối tượng trong thế giới thực được mô tả bằng tọa độ thực. phép biến hình từ tọa độ thực sang tọa độ thiết bị phụ thuộc loại thiết bị hiển thị. Trang 2 . chẳng hạn như GKS hay PHIGS. Chúng dựa trên lý thuyết về bộ não người là màu sắc ánh sáng được tiếp nhận như sự phối hợp từ 3 màu là đỏ (red). mà cố gắng thay thế thông qua một tiêu chuẩn thư viện giao diện đồ họa. Điều này có nghĩa là các điểm trong hệ tọa độ thực được định nghĩa liên tục. Trong hệ tọa độ thiết bị thì các điểm được mô tả bởi tọa độ nguyên. mô tả đối tượng gọi là hệ thống tọa độ thực. màu được mô tả bằng 3 thuộc tính là màu sắc (hue).2 Mô hình màu Màu sắc được sử dụng trong các ứng dụng đồ họa máy tính để giúp người dùng hiểu rõ về đối tượng hình học.tọa độ mô hình. mô tả tọa độ thực của đối tượng. chúng xác định vị trí trong quang phổ màu. màn hình. y sẽ được gán các giá trị trong đoạn từ [0. Ngoài ra. cần có một phương pháp chuyển đổi tương ứng giữa các hệ tọa độ và đối tượng phải được định nghĩa bởi các thành phần đơn giản như thế nào để có thể mô tả gần đúng với hình ảnh thực bên ngoài. tạo ra sự độc lập với thiết bị trong việc tạo ra hình ảnh của đối tượng. Người ta xây dựng một hệ tọa độ thiết bị chuẩn đại diện chung cho tất cả các thiết bị để có thể mô tả các hình ảnh mà không phụ thuộc vào bất kỳ thiết bị nào. 1. hệ tọa độ thiết bị lại sử dụng hệ tọa độ nguyên để hiển thị các hình ảnh. Trong hệ tọa độ chuẩn.1 Hệ tọa độ thực. Trong phần này chỉ đưa ra những mô hình màu tiêu biểu hơn cả. Do đó. Tiếp theo. xanh lá cây (green). và xanh dương (blue). Nói chung. độ bão hòa (saturation). Đây chính là vấn đề cơ bản cần giải quyết. Chương trình ứng dụng sẽ giao tiếp với hệ tọa độ chuẩn theo cách thức phù hợp. Hệ tọa độ thiết bị được dùng cho một thiết bị xuất cụ thể nào đó. Bởi vì. và độ sáng (brightness). Có hàng loạt phương pháp được tạo các mô hình màu trong các ứng dụng đồ họa. là hệ tọa độ tiêu chuẩn và hệ tọa độ thiết bị.. chúng ta phải hiểu được rằng thực chất của đồ họa là làm thế nào để có thể mô tả và biến đổi được các đối tượng trong thế giới thực trên máy tính. Các phép biến hình mô tả trong các chương sau có thể áp dụng trực tiếp trong tọa độ thực. 1. Hệ tọa độ thực là hệ tọa Decac. các tọa độ x.2. Do cách định nghĩa các hệ tọa độ thiết bị khác nhau nên một hình ảnh hiển thị được trên thiết bị này là chính xác thì chưa chắc hiển thị chính xác trên thíết bị khác. Do đó. hệ tọa độ thiết bị và hệ tọa độ chuẩn Trong lĩnh vực kỹ thuật đồ họa. Do đó. không quan tâm đến thiết bị xuất được dùng. độ tinh khiết và cường độ sáng.2. Các màn hình đồ họa dựa trên việc sử dụng các màu sắc chromatic. ví dụ như máy in. các phương pháp tổng quát của ứng dụng đồ họa có khuynh hướng bỏ qua đặc điểm riêng của thiết bị. Ngoài ra.1]. còn các điểm trong hệ tọa độ thiết bị là rời rạc và giới hạn.

G.. Ứng với các tổ hợp khác nhau của 3 màu này sẽ cho ta một màu mới . Trong hình lập phương trên. S.. màu Cyan (1. S (Saturation) chỉ độ bão hoà. b. Mỗi màu trong mô hình này được xác định bởi 3 thành phần R.1. V (Value) có giá trị từ 0 – 1. mỗi màu gốc (R. HSV (Hue – Saturation – Value ): Thực chất của mô hình này là sự biến đổi của mô hình RGB. Blue – Yellow.0).1).. Mô hình HSV được mô tả bằng lệnh lập phương RGB quay trên đỉnh Black.0. Các màu đạt giá trị bão hòa khi s = 1 và v = 1. CMY (Cyan – Magenta – Yellow): Tương tự như mô hình màu RGB nhưng 3 thành phần chính là Cyan – Magenta – Yellow. H (Hue) là góc quay trục V (value) qua 2 đỉnh Black và White. Do đó. CHƯƠNG II CÁC ĐỐI TƯỢNG ĐỒ HỌA CƠ BẢN Trang 3 . màu Green là truc y. Hai màu được gọi là bù nhau khi kết hợp hai màu này lại với nhau ra màu trắng. màu Black (1. Các giá trị biến thiên của H.B) có các gốc đối diện là các màu bù với nó. RGB (Red – Green – Blue): Mô hình màu RGB mô tả màu sắc bằng 3 thành phần chính là Red – Green và Blue.. B. Ví dụ : màu White có các thành phần là (0. và màu Blue là trục z. tọa độ các màu trong mô hình CMY trái ngược với mô hình RGB. c.0). Mô hình này được xem như một khối lập phương 3 chiều với màu red là trục x.a.0. Red – Cyan. G. Ví dụ : Green – Magenta. V như sau: (Hue) chỉ sắc thái có giá trị từ 0 0 – 3600 .

Vùng tô có thuộc tính của đường thẳng. yi + 1).Đoạn thẳng.y1.1. Vấn đề đặt ra là chọn điểm vẽ như thế nào để đường thẳng được vẽ gần với đường thẳng muốn vẽ nhất và đạt được tối ưu hóa về mặt tốc độ ? Thuật toán DDA Trang 4 . khoảng cách giữa các ký tự. độ rộng. Đoạn thẳng.Điểm: điểm là thành phần cơ sở được định nghĩa trong một hệ tọa độ.1 Giới thiệu về các đối tượng đồ họa cơ sở Kỹ thuật đồ họa liên quan đến tin học và toán học bởi vì hầu hết các giải thuật vẽ. yi) hoặc (xi + 1.. B = x1 – x2. đối với hệ tọa độ 2 chiều mỗi điểm được xác định bởi hoành độ và tung độ. 2. y1) và Q(x2. Ký tự có thuộc tính màu sắc. đường tròn. yi+1) ở bước thứ i+1 sẽ là một trong hai điểm (xi + 1. trong đó: Dx = x2 –x1 . . đường biên là đường khép kín như đa giác lồi. Trong chương này. . tô cùng các phép biến hình đều được xây dựng dựa trên nền tảng của hình học không gian hai chiều và ba chiều. chuỗi ký tự: Ký tự cho phép hiển thị thông tin theo ngôn ngữ nào đó. yi) là điểm đã được xác định ở bước thứ i thì điểm kế tiếp (xi+1. Ngoài thông tin tọa độ. Dy = y2 –y1 .2 Các thuật toán vẽ đối tượng đồ họa cơ sở 2. hướng hiển thị ký tự. Giao của hai đoạn thẳng là đỉnh. y2) như sau: x − x1 x 2 − x1 = y − y 1 y 2 − y1 Hay ở dạng phương trình đoạn chắn y = mx + b.Vùng tô: bao gồm đường biên và vùng bên trong. đường thẳng: đường thẳng xác định qua 2 điểm. kiểu chữ. Các thuật toán này giúp cho sinh viên hiểu được quá trình vẽ và tô một đối tượng hình học cơ sở như thế nào. trong đó: A = y2. . nếu (x i.1.2 Các thuộc tính của các đối tượng đồ họa cơ sở Điểm có thuộc tính màu sắc. Dy m= Dx Hay ở dạng tổng quát: Ax + By + C = 0 . và thuộc tính riêng là mầu tô và mẫu tô. 2. ellipse.Đường gấp khúc: là tập các đoạn thẳng nối với nhau một cách tuần tự. điểm còn có thông tin màu sắc. C = x2y1 – x1y2 ..1 Các đối tượng đồ họa cơ sở . đỉnh đầu và đỉnh cuối của đa giác trùng nhau. Với các đoạn thẳng dạng này. kiểu nét. Phương trình đường thẳng được xác định qua 2 điểm P(x1.2.Ký tự. chúng ta giới thiệu các thuật toán vẽ và tô các đường cơ bản như đường thẳng. đa giác. cỡ chữ. đoạn thẳng bị giới hạn bởi 2 điểm đầu và cuối.1 Thuật toán vẽ đường thẳng Xét đoạn thẳng có hệ số góc 0<m<=1 và Δx>0. 2. đường thẳng có thuộc tính màu sắc.2. các đoạn không nhất thiết phải tạo thành hình khép kín và có thể cắt nhau.

nếu tính trực tiếp giá trị thực của y ở mỗi bước từ phương trình y = mx+b thì cần một phép toán nhân và một phép toán cộng số thực: yi +1 = mxi +1 + b = m(xi + 1) + b = mxi + b + m Để cải thiện tốc độ. Ta có : yi = mxi + b ⇒ yi +1 = yi + m → int(yi +1) Có 2 khả năng: • • (2-1) 0<m<=1: xi +1 = xi + 1. Nhận thấy tọa độ của 1 điểm x sẽ tăng 1 đơn vị trên mỗi điểm vẽ. còn việc quyết định chọn yi +1 là yi +1 hay yi sẽ phụ thuộc vào giá trị sau khi làm tròn của tung độ y.1).2 Dạng đường thẳng nếu 0<m<=1 Gọi (xi+1. người ta khử phép nhân trên số thực. Δ y = y 2 − y . Δ x = x 2 − x 1 .1/m → int(xi+1).1 (2-3) Hình 2. yi +1 = yi + 1 (2-2) Hai trường hợp này dùng để vẽ một điểm bắt đầu từ bên trái đến điểm cuối cùng bên phải của đường thẳng (xem hình 2.m → int(yi +1) m>1: xi +1 = xi . Ta có y = m(xi +1) + b Đặt d1 = yi +1 – yi và d2 = (yi +1) – yi +1 Trang 5 . yi +1 = yi + m→ int(yi +1) m>1: xi +1 = xi + 1/m → int(xi+1).1 Dạng đường thẳng tương ứng 2 khả năng của m. có thể tính toán các điểm vẽ cho trường hợp m<0: khi |m|<=1 hoặc |m|>1 (sinh viên tự tìm hiểu thêm). Tương tự. Tuy nhiên. yi +1 = yi .1.Là thuật toán tính toán các điểm vẽ dọc theo đường thẳng dựa vào hệ số góc của phương trình đường thẳng y = mx+b. Thuật toán Bresenham Hình 2. Nếu điểm bắt đầu từ bên phải đến điểm cuối cùng bên trái thì xét ngược lại : • • 0<m<=1: xi +1 = xi . Trong đó: m = Δy Δx .2). yi +1 = yi . yi +1) là điểm thuộc đoạn thẳng (xem hình 2.

phương trình đường tròn bán kính R có dạng: Tâm O(0.xo – 2Δx. và sử dụng công thức truy hồi Pi +1 – Pi để tính Pi bằng các phép toán đơn giản trên số nguyên. elip Trong hệ tọa độ Descartes. yi +1) là P1 hay P2 phụ thuộc vào việc so sánh d1 và d2 • • Nếu d1.yi+1 + C) – (2Δy.yi ) • Nếu Pi < 0 : chọn điểm P1. 2.d2 ≥0 : chọn điểm P2. Ta có : Pi +1 – Pi = (2Δy. tức là yi +1= yi +1 (2-4) Δy (x i + 1) + 2b − 2y i − 1 ] = Δx Ta có : d1 – d2 = 2yi+1 – 2yi – 1 = 2m(xi+1) + 2b – 2yi – 1 ⇒ Pi = Δx (d1 – d2) = Δx[2m(xi+1) + 2b .yi + C ) ⇔ Pi +1 = Pi + 2Δy – 2Δx ( yi+1 .2 Thuật toán vẽ đường tròn.xi – 2Δx.xi+1 – 2Δx.yo ) là điểm nguyên thuộc về đoạn thẳng nên ta có: y o = mx o + b = Thay yo vào phương trình trên ta được: Po = 2Δy – Δx Nhận xét: Thuật toán Bresenham chỉ thao tác trên số nguyên và chỉ tính toán trên phép cộng và phép nhân 2. tức là yi +1= yi +1 và Pi +1 = Pi + 2Δy – 2Δx (2-6) Giá trị P0 được tính từ điểm vẽ đầu tiên (xo. việc xây dựng trường hợp tổng quát cho thuật toán Bresenham có phức tạp hơn thuật toán DDA.xi – 2Δx. tức là yi +1= yi Nếu d1.2yi – 1] ∆x [ 2 = 2Δy(xi+1) – 2Δx.0) : Tâm C(xc.d2<0 : chọn điểm P1.yo + C Do (xo .Việc chọn điểm (xi +1. tức là yi +1= yi và Pi +1 = Pi + 2Δy • Nếu Pi ≥ 0 : chọn điểm P2.2.yi + C (2-5) Nhận xét rằng nếu tại bước thứ i ta xác định được dấu của Pi thì xem như ta xác định được điểm cần chọn ở bước (i+1). 2π ] Trong hệ tọa độ cực :   y = y c + Rsinθ Trang 6 . (x – xc )2 + (y – yc )2 = R2 (2-7) Δy xo + b Δx x = x c + Rcosθ . yo) theo công thức: Po = 2Δy.yi + Δx(2b – 1) = 2Δy. Ý tưởng chính của thuật toán này là ở chổ xét dấu Pi để quyết định điểm kế tiếp. Tuy nhiên.xi – 2Δx.yc) : x2 + y2 = R2 .yi + 2Δy + Δx(2b – 1) Vậy C = 2Δy + Δx(2b – 1) = Const ⇒ Pi = 2Δy. θ ∈ [0. Điều này là một cải tiến làm tăng tốc độ đáng kể so với thuật toán DDA.

yi+1) ở bước i+1 là sự lựa chọn giữa S1 (xi + 1. Khi đó. Ta có : Nếu Pi < 0 : điểm MidPoint nằm trong đường tròn. • • Nếu Pi >= 0 : điểm MidPoint nằm ngoài đường tròn.y) = 0 .y) với điểm giữa là trung điểm (Midpoint) của S1 và S2. nếu điểm (x. yi) và S2 (xi + 1.y) = x + y – R . Đặt F(x. yi – 1/2). thì điểm (xi+1. yi+1 – 1/2) – F(xi + 1.y) nằm ngoài đường tròn.4 Đường tròn với điểm Q(xi +1. ta có : • • • 2 2 2 F(x. y) và trung điểm. R).y) < 0 . Xét Pi = F(MidPoint) = F(xi +1.4). Mặt khác : Pi+1 – Pi = F(xi+1 +1.3 Đường tròn với các điểm đối xứng. Thuật toán xét trung điểm Do tính đối xứng của đường tròn nên ta chỉ cần vẽ 1/8 cung tròn. yi – 1). Giả sử (xi. nếu điểm (x.y) nằm trên đường tròn. F(x. F(x. sau đó lấy đối xứng là vẽ được cả đường tròn. nếu điểm (x.y) nằm trong đường tròn. điểm Q gần với điểm S2 hơn nên ta chọn yi+1 = yi – 1. sau đó lấy đối xứng qua 2 trục tọa độ và 2 đường phân giác thì ta vẽ được cả đường tròn. Thuật toán trung điểm đưa ra cách chọn yi+1 là yi hay yi -1 bằng cách so sánh điểm Q(xi+1.Do tính đối xứng của đường tròn C. Hình 2. yi) là điểm nguyên đã tìm được ở bước thứ i (xem hình 2. yi – 1/2) = [(xi+1 +1) + (yi+1 – 1/2) – R ] – [(xi +1) + (yi – 1/2) – R ] = 2xi + 3 + ((yi+1) – (yi) ) – (yi+1 – yi) Trang 7 2 2 2 2 2 2 2 2 . Khi đó. Chọn điểm bắt đầu để vẽ là (0. điểm Q gần với điểm S1 hơn nên ta chọn yi+1 = yi .y) > 0 . Hình 2. nên ta chỉ cần vẽ 1/8 cung tròn.

Khi đó Pi+1 = Pi + 2xi +3 Nếu Pi >= 0 : chọn yi+1 = yi – 1. yi). Ta có : d1 = (yi) – y = (yi) – (R . do đó : Pi+1 = Pi + a2(3 – 2yi) + b2((xi+1 + 1/2)2 – (xi + 1/2)2) Trang 8 .yi+1) là (xi . Xét ellipse có tâm O. yi . Khi đó Pi+1 = Pi + 2xi – 2yi +5 (2-8) Pi ứng với điểm ban đầu (xo . yi). Khi đó Pi+1 = Pi + 4xi +6 (2-9) Nếu Pi >= 0 : chọn yi+1 = yi – 1. Khi đó Pi+1 = Pi + 4(xi – yi ) + 10 Po ứng với điểm ban đầu (xo . tìm điểm (xi+1 . Phần thứ nhất của 1/4 ellipse chứa tọa độ điểm đầu tiên cần hiển thị (0 . Nếu có (xi . Thuật toán vẽ elip Tương tự thuật toán vẽ đường tròn.1.(xi + 1) ) 2 2 2 2 2 d2 = y – (yi – 1) = (R . yo) = (0. các bán kính là a và b. do đó Pi+1 = Pi + 4xi + 6 + 2((yi+1)2 – (yi)2 ) – 2(yi+1 – yi) • • • Nếu Pi < 0 : chọn yi+1 = yi.Vậy: Nếu Pi < 0 : chọn yi+1 = yi. yi -1) hay (xi +1 . yi -1) hay (xi +1. ta chỉ cần vẽ 1/4 ellipse.R) là: Po= 3 – 2R.R) là: Po = F(xo + 1. yo – 1/2) = F(1. yi – 1) . Căn cứ độ dốc gradient theo hướng x (F’x = 2b2x) và hướng y (F’y = 2a2y) để vẽ cung 1/4 ellipse. cung chia thành 2 phần. sử dụng thuật toán Bresenham để vẽ. Chọn Pi = F(xi + 1. R – 1/2) = 5/4 –R Thuật toán Bresenham Tương tự thuật toán vẽ đường thẳng Bresenham. yi). sau đó lấy đối xứng qua các trục tọa độ sẽ vẽ được toàn bộ ellipse. do đó : Pi+1 = Pi + b2(2xi + 3) + a2((yi+1 –1/2)2 – (yi –1/2)2) • • • Nếu Pi < 0 : yi+1 = yi . yo) = (0. y) = b2x2 + a2y2 – a2b2 x 2 y2 + =1 a 2 b2 (2-10) Cung1/4 ellipse được vẽ nằm trong phần tư thứ nhất của hệ tọa độ. do đó Pi+1 = Pi + b2(2xi + 3) + a2(2 – 2yi) Po của điểm ban đầu (0. yi – 1/2). Hình 2. phương trình là: Đặt F(x. tìm điểm tiếp theo là (xi +1. do đó Pi+1 = Pi + b2(2xi + 3) Nếu Pi >= 0 : yi+1 = yi .(xi + 1) ) – (yi – 1) 2 2 2 2 2 Đặt Pi = d1 – d2 . b) là: b2 – a2b + a2/4 Phần còn lại của 1/4 ellipse: nếu có (xi .1) Chọn Pi = F(xi + 1/2. các vị trí ứng với các tọa độ nguyên nằm trên đường tròn có thể tính được bằng cách xác định một trong hai pixel gần nhất với đường tròn hơn trong mỗi bước.5 Đường tròn với khoảng cách d1 và d2. b).

Có 3 cách tiếp cận chính để tô màu.2y ) i i i o i i i i P của điểm đầu tiên trong phần thứ hai là: P (x . Giải thuật giả mã như sau: i chạy từ xc-r đến xc+r j chạy từ yc-r đến yc+r tìm khoảng cách d giữa hai điểm (i. b. Hình 2. yc + r) của hình vuông . do đó P i i+1 i o = P + b2(2x + 2) + a2 (3 . Thuật toán tô màu theo dòng quét thì sinh viên tự tìm hiểu.Quyết định tô các điểm trên bằng màu nào. Đó là : tô màu theo từng điểm (có thể gọi là tô đơn giản).3.7 đa giác nội tiếp hình chữ nhật. Công đoạn này sẽ trở nên phức tạp khi ta cần tô theo một mẫu tô nào đó chứ không phải tô thuần một màu.Xác định vị trí các điểm cần tô màu. Dạng đường biên đơn giản thường gặp là đa giác.6 đường tròn nội tiếp hình vuông. Một vùng tô thường được xác định bởi một đường khép kín nào đó gọi là đường biên. a.1 Tô đơn giản Thuật toán này bắt đầu từ việc xác định một điểm có thuộc vùng cần tô hay không ? Nếu đúng là điểm thuộc vùng cần tô thì sẽ tô với màu muốn tô. Chúng ta sẽ giới thiệu 2 loại thuật toán tô mầu đơn giản và tô màu đường biên.• Nếu P >=0 : x = x .Tô đa giác Trang 9 . Tô đường tròn Để tô đường tròn thì ta tìm hình vuông nhỏ nhất ngoại tiếp đường tròn bằng cách xác định điểm trên bên trái (xc – r. do đó P i i+1 i i+1 = P + a2(3 .2y ) i i i+1 • • Nếu P < 0 : x = x +1. 2.j) với màu muốn tô Hình 2. .3 Thuật toán tô màu Tô màu một vùng là thay đổi màu sắc của các điểm vẽ nằm trong vùng cần tô.yc) nếu d<r thì tô điểm (i. y ) = –a2b2 + b2(x + 1/2)2 + a2 (y - 1)2 2. tô màu theo dòng quét và tô màu dựa theo đường biên. yc – r) và điểm dưới bên phải (xc + r. Việc tô màu thường chia làm 2 công đoạn : .j) và tâm (xc.

8). Ý tưởng : Bắt đầu từ một điểm nằm bên trong vùng tô. • Pi.8 Cho đa giác gồm 13 đỉnh là Po . xmin.Trước tiên.y) có thuộc đa giác không ? Nếu có thì tô với màu cần tô.y < Pi.y < Pi+2.y < Pi+1.y hay Pi -1.y) thì Pi là đỉnh cực trị ( cực tiểu hay cực đại )..y) thì đoạn [Pi .y > Pi+1. ymin là hoành độ và tung độ nhỏ nhất. hay điểm lân cận có màu trùng với màu biên không ? Nếu cả hai trường hợp đều không phải thì ta sẽ tô điểm đó với màu muốn tô. xmax. Nếu số giao điểm là chẵn thì kết luận điểm không thuộc đa giác. Quá trình này được lặp lại cho đến khi không còn tô được nữa thì dừng. • Pi.y hay Pi -1.y và Pi -1. Pi -1. . P1 . ymax là hoành độ và tung độ lớn nhất của các đỉnh của đa giác.y) hay Pi.y . P12 .y. chúng ta giải quyết bài toán tìm hình chữ nhật nhỏ nhất có các cạnh song song với hai trục tọa độ chứa đa giác cần tô dựa vào hai tọa độ (xmin.y < Min( Pi+1.y > Max( Pi+2.y > Pi. Po . kiểm tra các điểm lân cận của nó đã được tô với màu muốn tô.y thì đoạn [Pi. Trong đó. Cách tô đa giác là cho x đi từ xmin đến xmax. ymax). Thông thường ta chọn tia qua phải. . tại các đỉnh cực trị (cực đại hay cực tiểu ) thì một giao điểm phải được tính 2 lần (xem hình 2.y) hay Pi.y > Pi.2 Tô màu đường biên Bài toán đặt ra : Cần tô màu một vùng nếu biết được màu của đường biên vùng tô và một điểm nằm bên trong vùng tô. Thuật toán kiểm tra điểm có nằm trong đa giác . Ngược lại.y ..Pi+1] là đoạn đơn điệu.y thì Pi là đỉnh đơn điệu. Nếu là đỉnh đơn điệu hay đoạn đơn điệu thì đánh dấu 1. Xét điểm P(x.y. Đặc biệt. • Pi -1. Tuy nhiên có 4 khả năng nảy sinh như sau : Gọi tung độ của đỉnh Pi là Pi. ymin).y < Pi.y > Pi+2. Trang 10 .y= Pi+1. (xmax.Xét số giao điểm của tia nửa đường thẳng từ P là điểm cần xét với biên của đa giác.Với mỗi đỉnh của đa giác ta đánh dấu là 0 hay 1 theo qui ước như sau: nếu là đỉnh cực trị hay đoạn cực trị thì đánh số 0. Pi+1] là đoạn cực trị ( cực tiểu hay cực đại ). Thông thường một điểm nằm trong đa giác thì số giao điểm từ một tia bất kỳ xuất phát từ điểm đó cắt biên của đa giác phải là một số lẻ lần. Nhưng khác với hình tròn.. Nếu : • Pi. P i-1.y và Pi.y . ta không thể xác định một điểm nào đó có nằm trong đa giác không? Do đó.y < Min( Pi+2..y > Max( Pi+1. Pi -1. chúng ta phân tích bài toán sau đây: Hình 2. số giao điểm là lẻ thì điểm thuộc đa giác. Pi -1. y đi từ ymin đến ymax (hoặc ngược lại). Tia có thể qua phải hay qua trái. 2..3. y = Pi+1.

Có thể khắc phục việc tràn stack bằng cách giảm số lần gọi đệ qui. tính toán nhanh và chính xác hơn là tính trực Trang 11 . gọi đệ qui các điểm lân cận của (x.y. Bản chất của so sánh là gì? Gợi ý: giá trị Pi tạo ra không có phép chia nguyên. end. Boundary_fill ( x. 2. mauto.y-1. sau đó. mauto. Nhận xét : . Boundary_fill ( x.y. maubien ). maubien ). mau_ht : integer.y).Thuật toán có thể không chính xác khi có một số điểm nằm trong vùng tô có màu là màu cần tô của vùng. mauto.Việc thực hiện gọi đệ qui làm thuật toán không thể sử dụng cho vùng tô lớn ( tràn stack). maubien :integer). mauto.y+1. mauto. end. Đó là dùng 4 điểm lân cận (có thể gọi là 4 liên thông) hay 8 điểm lân cận (8 liên thông) Cài đặt minh họa thuật toán 4 liên thông Boundary_fill ( x. y).y. Boundary_fill ( x+1. . If (mau_ht <> mauto) and (mau_ht <> maubien) then begin putpixel(x.Có 2 quan điểm về cách tô này.color). begin mau_ht:= getpixel(x. Boundary_fill ( x-1. Khởi đầu điểm (x.4 Bài tập áp dụng Bài 1 Tại sao phải so sánh giá trị Pi với 0 trong các giải thuật Bresenham hay Midpoint.y. maubien ).y) là điểm có vị trí đặc biệt trong vùng tô. maubien ). .

nhưng vẽ cho cung ¼ rồi lấy đối xứng. đường tròn. CHƯƠNG III CÁC PHÉP BIẾN ĐỔI ĐỒ HỌA 2 CHIỀU 3. m= 0. ta xét 3 trường hợp 0 < m < 1. 1]. bán kính trục chính. sử dụng giải thuật không đệ quy thì tốt hơn giải thuật đệ quy. Bài 4 Cài đặt giải thuật vẽ elip có tâm là gốc tọa độ.1 Các phép biến đổi cơ sở Trong lĩnh vực đồ họa máy tính. MidPoint vẽ đoạn thẳng với hệ số góc trong khoảng [-1.tiếp. trục phụ là a. -1 < m < 0. Bài 2 Cặt đặt các giải thuật Bresenham. Bài 3 Giải thích tại sao chỉ chọn cung 1/8 để vẽ rồi lấy đối xứng mà không mở rộng cho cung 1/16 hay 1/32. Gợi ý: Sử dụng giả thuật tô mầu đường biên cải tiến. b. vì không chính xác. Gợi ý: Dựa trên cơ sở giải thuật Midpoint cho vẽ đường tròn. hình dạng và kích thước của đối tượng 2 chiều đặc trưng bởi hệ thống tọa độ Descartes 2 chiều. Một tập hợp các phép biến đổi hình học áp dụng cho đối tượng như: Trang 12 . Gợi ý: Nếu cung độ dài nhỏ hơn 1/8 thì giải thuật Midpoint không còn đúng nữa. Bài 5 Cài đặt thuật toán tô màu đường biên cho đối tượng hình tròn. Gợi ý: Vẽ đường thẳng.

Do đó. Để khắc phục. phương chiều của nó . một tam giác là kết hợp từ ba đoạn thẳng. phép biến đổi sẽ phóng lớn đối tượng. mô tả ma trận vuông cấp 2 trong hệ tọa độ Descartes 2 chiều không mô tả đầy đủ các phép biến đổi. 3. Phép đối xứng sử dụng trong việc tạo các hình đối xứng. hệ tọa độ thuần nhất được áp dụng. Các hệ CAD luôn có thao tác như: scale.Sx (3-2) y’ = y.1. Sy nhỏ hơn 1.Khi Sx = Sy . ta gọi đó là phép căng (strain). với mỗi điểm bất kỳ. phép biển đổi sẽ thu nhỏ đối tượng. Ngược lại. thì ta nhân Sx và Sy lần lượt cho các tọa độ của P.1. Các ứng dụng như CAD luôn có chỉ thị Mirror thực hiện chức năng trên. Trong trường hợp hoặc Sx hoặc Sy có giá trị 1. Ma trận hay dùng cho các định nghĩa hình học và các thao tác trong đồ họa máy tính.Nếu hai hệ số tỉ lệ khác nhau thì ta gọi là phép không đồng dạng. khi các giá trị này lớn hơn 1. Để co hay giãn tọa độ của một điểm P(x. nếu tâm tỷ lệ là gốc tọa độ.dịch chuyển.Sy . Ma trận đối xứng sẽ có dạng chung như sau :  a 0 0   [M] = 0 b 0 (3-3) RFL 0 0 1    Trang 13 . x’ = x. move. ví dụ như việc tạo khung đỡ mái nhà. copy … thực hiện những phép biến đổi hình học cơ sở. Đường thẳng tạo thành từ hai điểm nút. . y) và xem là thành phần cơ bản của mọi đối tượng hình học 2 chiều. Đây là phép biến đổi bảo toàn tính cân xứng của đối tượng. Mỗi đối tượng hình học được biểu diễn bằng tập điểm. 3.3 Phép đối xứng Thuật ngữ đối xứng hiểu như hình ảnh trong gương. rotate.2 Phép biến đổi tỷ lệ Phép biến đổi tỉ lệ làm thay đổi kích thước đối tượng. tất cả các biểu diễn hai chiều được định nghĩa bẳng tập các tọa độ (x. ngoài hoành độ và tung độ sẽ có tọa độ thứ ba là 1 trong hệ tọa độ thuần nhất. Nó sẽ thuận tiện nếu mọi biến đổi hình học có thể biểu diễn theo dạng này. Phép tịnh tiến làm cho đối tượng dịch chuyển theo một hướng với độ dài xác định.Khi các giá trị Sx . sau đó lấy đối xứng để tạo nguyên hình. Phép đối xứng qua điểm hay qua trục nào đó. Ví dụ như một nửa hình được tạo ra.1. người ta gọi đó là phép đồng dạng (uniform scaling).1 Phép tịnh tiến Khả năng tịnh tiến đối tượng là một đặc điểm cần thiết của mọi hệ thống đồ họa. thay đổi kích thước. Ta gọi là phép phóng đại nếu |S|>1 và là phép thu nhỏ nếu | S|<1. mô tả với hệ phương trình sau: x’ = x + Tx (3-1) y’ = y + Ty 3. Dưới dạng toán học. .y) theo trục hoành và trục tung lần lượt là Sx và Sy (gọi là các hệ số tỉ lệ). Tuy nhiên.

2. Sy1 ). Góc quay dương thường được qui ước là chiếu ngược chiều kim đồng hồ.sinθ y’ = x.sinθ + y. Sy2 ) là : Qx = Px* Sx1* Sx2 Qy = Py* Sy1* Sy2 Ta có kết hợp của nhiều phép tỷ lệ là một phép tỷ lệ.2. Y như sau : 1  = 0 0  [M] RFL_X 0  . Ta có công thức biến đổi của phép quay điểm P(x. Một phép quay đòi hỏi phải có tâm quay.2 Kết hợp các phép biến đổi Những phép biến hình 2 chiều đòi hỏi không chỉ một mà là chuỗi thứ tự các phép biến hình cơ sở để cuối cùng thu được mục tiêu mong muốn. M2 (Sx2. rồi lại thực hiện tiếp một phép tịnh tiến khác lên P’ được điểm Q. Qx = Px + ( Tx1 +Tx2 ) Qy = Py + ( Ty1 + Ty2 ) Vậy kết hợp hai phép tịnh tiến là một phép tịnh tiến.1 0 0   =  0 1 0  0 0 1   3. ta có kết hợp của nhiều phép tịnh tiến là một phép tịnh tiến.y. Từ đó.cosθ .4 Phép quay Phép quay làm thay đổi hướng của đối tượng.3 Kết hợp các phép quay Trang 14 (3-4) sinθ 0  cosθ 0 0 1  . 3. ta có tọa độ điểm Q là điểm có được sau hai phép tỷ lệ M1(Sx1. còn tâm quay là gốc tọa độ.2 Kết hợp các phép biến đổi tỉ lệ Tương tự như phép tịnh tiến.1 0 0 1  0 [M] RFL_Y .cosθ  cosθ  hoặc dưới dạng ma trận sau: [ x' y' 1] = [ x y 1] − sinθ  0  3. điểm Q là ảnh của phép biến đổi kết hợp hai phép tịnh tiến liên tiếp.y) quanh gốc tọa độ góc θ tới vị trí P’(x’. 3. y’): x’ = x. góc quay. Như vậy.2. 3.1.Các trường hợp khác nhau của đối xứng trục X.1 Kết hợp các phép tịnh tiến Nếu ta thực hiện phép tịnh tiến từ điểm P được điểm P’.

ta có tọa độ điểm Q là điểm kết quả sau khi kết hợp hai phép quay cùng chiểu dương quanh gốc tọa độ MR1(θ1) và MR2(θ2) là : Qx = Px*cos(θ1+θ2) . Phép biến đổi là kết hợp từ 2 phép biến đổi cơ sở: tịnh tiến. Trang 15 • .Tương tự.Py*sin (θ1+θ2) Qy = Px*sin(θ1+θ2) + Py*cos(θ1+θ2) Ta có kết hợp của nhiều phép quay là một phép quay.1 0 0 1  0 [M] RFY . đối xứng. -1) và B(2. 3.3. 1) qua trục x = -2. sau biến đổi affine có điểm Q(x’.1 0 0   =  0 1 0  0 0 1   3. ta có các ma trận biến đổi đối xứng qua trục hoành và trục tung như sau: 1  = 0 0  0  0 1  [M] RFX 0  .1 Phép biến dạng Phép biến dạng làm thay đổi hình dạng đối tượng.3 Tính chất của phép biến đổi affine Phép biến đổi affine là phép biến đổi tuyến tính.y).2 Phép đối xứng Phép đối xứng xem như phép quay quanh trục đối xứng góc 180o.3. Tính song song của các đường thẳng được bảo toàn. • • Chuyển trục x = -2 trùng trục tung Đối xứng đoạn AB theo trục tung Chuyển trục đối xứng về vị trí ban đầu. như những biến đổi trên. 3. Nếu trục đối xứng là trục hoành hay trục tung . Ví dụ: Thực hiện phép đối xứng đoạn thẳng AB có tọa độ A(-1. Tỷ lệ khoảng cách được bảo toàn. biến dạng theo trục hoành hay trục tung bằng cách thay đổi tọa độ điểm ban đầu theo cách sau đây:  1 0 0 1 s y    [M] = s 1 0 [M] = 0 1 SH_X x SH_Y  0 0 1 0 0    Sx và Sy là các hệ số biến dạng theo trục hoành và trục tung. Nếu có một điểm P(x.3 Một số phép biến đổi khác 3. y’) thì phép biến đổi thực hiện theo phép nhân ma trận: a [ x' y' 1] = [ x y 1] b  c  d 0  e 0 f 1  Sau đây là một vài tính chất cơ bản của phép biến đổi affine: Phép biến đổi affine bảo toàn đường thẳng.3.

b) trong hệ tọa độ II. Nếu hệ tọa độ II nhận được từ hệ tọa độ I sau khi quay góc φ theo chiều dương quanh gốc tọa độ cos φ − sin φ  thì Q và P sẽ xác định như sau: [a b 1] = [x y 1]    sin φ cos φ  3. v. Phép biến hình đối tượng thay đổi tọa độ các điểm nhưng không thay đổi hệ tọa độ.M-1 hoặc QM = P Trong đó. Giả sử ta có hệ tọa độ I có gốc tọa độ O và các véc tơ đơn vị là i. 3. ta có được kết quả: MR1(α1) MR2(α2) = MR ( α1 + α2 ) = MR2(α2) MR1(α1) Trang 16 . -1) và B’(-6 . một điểm P(x. có gốc tọa độ O’ và các véc tơ đơn vị là tương ứng u. Chứng minh M1 = M2 M3 Bài 3 Chứng minh phép quay có tính giao hoán. vị trí sau biến hình là : A’(-3 . y) trong hệ tọa độ I sẽ biến đổi thành điểm Q(a. Gợi ý: Giả sử với phép quay quanh gốc tọa độ 1 góc α.1 0 0  1 0 0  . ma trận M3 của phép quay 90o quanh gốc tọa độ.1 0 0 .5 Bài tập áp dụng Bài 1 Cho biết phép biến đổi hình vuông thành hình chữ nhật? Gợi ý: Sử dụng phép biến đổi tỷ lệ Bài 2 Chứng minh rằng ma trận phép biến đổi lấy đối xứng qua đường thẳng y = x tương đương với kết hợp của phép lấy đối xứng trục hoành và phép quay quanh gốc tọa độ góc 90o . ma trận M2 của phép đối xứng qua trục hoành. M là ma trận biến đổi của phép biến đổi T(M) . Gợi ý: Tìm ma trận M1 của phép lấy đối xứng qua trục y = x. Lúc này.4 0 1  Do đó. Hệ tọa độ II là ảnh của hệ tọa độ I qua phép biến đổi T(M).1 0 0 − 1 − 1 1   − 3 − 1 1 Áp dụng cho đoạn AB:    0 1 0 =    2 1 1    −6 1 1  .2 0 1 .4 0 1        . Qua chứng minh. j . tìm được mối liên hệ giữa 2 điểm Q và P trong hệ tọa độ I và II như sau: Q = P.1 0 0       Ma trận biểu diễn các biến đổi trên: M = 0 1 0  0 1 0  0 1 0 =  0 1 0 2 0 1  0 0 1 . tọa độ cầu sang hệ tọa độ đề các hay giữa hai hệ tọa độ đề các. còn biến hình hệ tọa độ tạo ra hệ tọa độ mới.4 Phép biến đổi giữa các hệ tọa độ Các phép biến hình dựa trên hai phương pháp là phép biến hình đối tượng và biến hình hệ thống tọa độ. M-1 là ma trận nghịch đảo của M. chẳng hạn như từ hệ tọa độ cực. còn trong phần này. Các phép biến đổi đối tượng đã xem xét ở phần trước. 1). ta khảo sát phép biến đổi giữa 2 hệ tọa độ Đề các.

Những vùng này có thể được đặt ở những vị trí tách biệt. Các hình ảnh được định nghĩa trên hệ tọa độ thực này sau đó được hệ đồ họa vẽ lên các hệ tọa độ thiết bị. y) là tọa độ của điểm P trong xOy. một vùng đồ họa cho phép người sử dụng xác định vùng nào của hình ảnh sẽ được hiển thị và bạn muốn đặt nó ở nơi nào trên hệ tọa độ thiết bị. try) trong hệ tọa độ xOy. Quá trình biến đổi này liên quan đến những thao tác như tịnh tiến. hoặc một vùng có thể được chèn vào một vùng lớn hơn. Bài 5 Hệ tọa độ x’O’y’ nhận được bằng cách quay quanh gốc tọa độ góc α. Trang 17 . rồi tịnh tiến theo véc tơ (trx. Vùng quan sát Hệ tọa độ Descartes là dễ thích ứng cho các chương trình ứng dụng để miêu tả các hình ảnh trên hệ tọa độ thực. quay. Gợi ý: Áp dụng quy tắc phân rã phép biến đổi. CHƯƠNG IV PHÉP QUAN SÁT 2 CHIỀU 4. cần tìm ma trận biến đổi là tích giữa ma trận quay và ma trận tịnh tiến.Bài 4 Chứng minh phép biến đổi affine được phân tích thành tích của các phép tịnh tiến. biến đổi tỷ lệ vùng được chọn .1 Cửa sổ. Hãy cho biết công thức tọa độ của điểm Q trong hệ tọa độ x’O’y’ nếu P(x. Điển hình. Gợi ý: Hệ tọa độ x’O’y’ là ảnh của hệ tọa độ xOy. Những thao tác trên là Windowing và Clipping. Một vùng đơn lẻ hoặc vài vùng của hình ảnh có thể được chọn. xóa bỏ vùng không được chọn. tỷ lệ.

82. người sử dụng trước tiên phải biến đổi nó sang hệ tọa độ thực. yw_max) set_viewport(xv_min. Việc ánh xạ này gọi là một phép biến đổi hệ quan sát. Thuận lợi của việc dùng hệ tọa độ thiết bị chuẩn là để các gói đồ họa độc lập với thiết bị. dù rằng hệ tọa độ thiết bị có thể được dùng nếu chỉ có một thiết bị xuất duy nhất trong hệ thống. xw_max. 0.8. 0. -20. xv_max.1 ánh xạ cửa sổ . như hệ tọa độ cực. Những hệ tọa độ Descart này sau đó được dùng trong các lệnh cửa sổ để xác định phần nào của hình ảnh muốn được hiển thị.7. Thông thường một thiết bị xác định được chứa trong các gói đồ họa cho mục đích này. Nếu một cửa sổ buộc phải được ánh xạ lấp đầy vùng hiển thị. Bất kỳ sự định nghĩa hình ảnh nào dùng trong một hệ tọa độ khác.5. 41. 1) Các vị trí được biểu diễn trên hệ tọa độ thiết bị chuẩn phải được biến đổi sang hệ tọa độ thiết bị trước khi được hiển thị bởi một thiết bị xuất cụ thể. sự xác định vùng quan sát được thiết lập theo thủ tục: set_viewport(0. 0.75. Các thiết bị xuất khác nhau có thể được dùng nhờ việc cung cấp các trình điều khiển thiết bị thích hợp. 1. Hình 4. Hệ tọa độ thiết bị chuẩn thường được dùng nhất cho việc xác định vùng quan sát. yw_min. 1. set_viewport(0. biến đổi cửa sổ.25.Hình 4. Còn vùng hình chữ nhật trên thiết bị hiển thị để cửa sổ đó ánh xạ đến được gọi là một vùng quan sát (viewport). yv_max) Các tham số trong mỗi hàm được dùng để định nghĩa các giới hạn tọa độ của các vùng chữ nhật.2: set_window(-60.5. Công việc xác định sẽ là đặt một phần của sự định nghĩa hệ tọa độ thực vào trong góc trên bên phải của vùng hiển thị. Mọi điểm được tham khảo đến trong các gói đồ họa phải được xác định tương ứng trong hệ tọa độ Descartes. Các giới hạn của cửa sổ được xác định trong hệ tọa độ thực. yv_min.đến – vùng quan sát Một vùng có dạng hình chữ nhật được xác định trong hệ tọa độ thực được gọi là một cửa sổ (window).1]. biến đổi chuẩn hóa. Một sự xác định vùng quan sát được cho với các giá trị trong khoảng [0. Khi hệ tọa độ thiết bị chuẩn được dùng. Trang 18 . Các lệnh để xây dựng một cửa sổ và vùng quan sát từ một chương trình ứng dụng có thể được định nghĩa như sau: set_window(xw_min.1 minh họa việc ánh xạ một phần hình ảnh vào trong một vùng quan sát.0). lập trình viên xem thiết bị xuất có giá trị tọa độ trong khoảng [0.5). 1]. như được minh họa trong hình 4.

đến – vùng quan sát Khi tất cả các điểm. 1/2) . yvmax = 1 Trang 19 . yvmin =1/2 ywmax = 5 . Để duy trì sự sắp đặt liên hệ tương tự trong vùng quan sát như trong cửa sổ. yw) trong một cửa sổ được ánh xạ và trong vị trí (xv. Nếu 2 tỷ lệ khác nhau thì hình vẽ mới trong vùng quan sát bị biến dạng so với hình ban đầu. Trong hình. còn nếu 2 tỷ lệ giống nhau thì hình vẽ mới không biến dạng.2 Phép biến đổi từ cửa sổ .2: Ánh xạ một cửa sổ vào một vùng quan sát trong hệ tọa độ thiết bị chuẩn 4. chúng được ánh xạ lên vùng quan sát để hiển thị. chúng ta cần xác định ánh xạ: x vmax − x vmin Do đó: x v − x vmin = x wmax − x wmin x w − x wmin .2). v m in yv = (y w − y w m in) y w m ax − y w m in y vm ax − y vm in +y (4. góc phải trên (1 . góc trên phải là (6. ánh xạ điểm trong cửa sổ có góc trái dưới là (2.5). xvmin =1/2 xwmax = 6 . yv) trong vùng quan sát. và văn bản vừa bị cắt. một điểm ở vị trí (xw. Các tham số cửa sổ/vùng quan sát là: xwmin = 2 . Ví dụ: Tìm ma trận biến hình. Phép biến đổi đến vùng quan sát này được thực hiện để các vị trí tọa độ liên hệ được giữ lại. y vm ax − y vm in y v − y vm in = y w max − y w m in y w − y w m in (4-1) xv = (x w − x w m in) x w m ax− x w m in x vmax − x vmin x v m ax − x v m in +x . sang vùng quan sát có góc trái dưới (1/2 . đoạn thẳng. xvmax = 1 ywmin = 2 . 1) .2) vm in Các giá trị tỷ lệ x wmax − x wmin và y wmax − y wmin y vmax − y vmin là hằng số đối với các điểm được ánh xạ và là hệ số tỷ lệ Sx và Sy theo 2 trục tương ứng.Hình 4.

Chúng ta kiểm tra một đoạn thẳng xem có bị cắt hay không bằng việc xác định xem hai điểm đầu mút đoạn thẳng là nằm trong hay nằm ngoài cửa sổ. sau đó ánh xạ phần bên trong cửa sổ vào một vùng quan sát . Một điểm ở vị trí (x. Việc cài đặt phép biến đổi cửa sổ thường được thực hiện bằng việc cắt khỏi cửa sổ. Mọi thứ bên ngoài cửa sổ sẽ bị loại bỏ. Sau khi cắt xong.3 Phép cắt xén 2 chiều Ánh xạ một vùng cửa sổ vào trong một vùng quan sát.2. các điểm bên trong cửa sổ mới được ánh xạ đến vùng quan sát. Hình 4. Một đoạn thẳng với cả hai đầu nằm trong cửa sổ thì được giữ Trang 20 . ywmin ≤ y ≤ ywmax (4-3) 0 1/8 0 0    0 =  0 1/6 0 y  (-S y +y ) 1 1/4 1/6 1  y wmin vmin   0 S Nếu điểm nào không thỏa một trong bốn bất phương trình trên. Trong các các phần thảo luận sau. Việc cắt các điểm khỏi cửa sổ được hiểu đơn giản là chúng ta kiểm tra các giá trị tọa độ để xác định xem chúng có nằm bên trong biên không. suy được ma trận biến đổi là:  S  x M= 0  (-S x x wmin + x vmin )  4. kết quả là chỉ hiển thị những phần trong phạm vi cửa sổ.y) được giữ lại để chuyển đổi sang vùng quan sát nếu nó thỏa các bất phương trình sau: xwmin ≤ x ≤ xwmax. một vài gói đồ họa đầu tiên ánh xạ sự định nghĩa trong hệ tọa độ thực vào trong hệ tọa độ thiết bị chuẩn và sau đó cắt khỏi biên vùng quan sát. Các thủ tục để loại bỏ các phần hình ảnh nằm bên ngoài biên cửa sổ được xem như các thuật toán cắt xén (clipping algorithms) hoặc đơn giản được gọi là clipping. nó bị cắt bỏ. Trong hình dưới đây.Theo phương trình 4.3 minh họa các quan hệ có thể có giữa các vị trí đoạn thẳng với biên cửa sổ.3 Hình 4. chúng ta giả thiết rằng việc cắt được thực hiện dựa vào đường biên cửa sổ trong hệ tọa độ thực. Như một lựa chọn. điểm P1 được giữ lại. trong khi điểm P2 bị cắt bỏ.

Bit 2 – phải. Mọi điểm ở hai đầu mút đoạn thẳng trong hình ảnh sẽ được gán một mã nhị phân 4 bit. trên đỉnh. Nếu một điểm nằm trong cửa sổ. ngược lại bit ở vị trí đó là 0. Một điểm bên dưới và bên trái cửa sổ có mã vùng là 0101 . các đường thuộc nhóm này có thể cắt hoặc không cắt cửa sổ. Các đường không được nhận dạng là hoàn toàn nằm trong hay hoàn toàn nằm ngoài một cửa sổ thông qua các phép kiểm tra trên sẽ được tìm giao điểm với biên cửa sổ. Bit 4 – trên. phải.4.3. Chúng ta có thể xử lý các đoạn Trang 21 . Trước khi đi tính các giao điểm. Thuật toán cắt xén đường xác định xem đoạn nào toàn bộ nằm trong. Các giá trị bit trong mã vùng được xác định bằng cách so sánh giá trị tọa độ (x. Vì một hình ảnh có thể chứa hàng ngàn đoạn thẳng.1 Giải thuật Cohen – Suntherland Một tiếp cận để cắt các đoạn là dựa trên cơ chế đánh mã được phát triển bởi Cohen và Sutherland. đoạn nào là hoàn toàn nằm ngoài. Bit 1 đặt lên 1 nếu x < xwmin. Hình 4. các giá trị bit mã vùng có thể được xác định theo các bước sau: (1) Tìm hiệu giữa tọa độ các điểm đầu mút với biên cửa sổ. việc xác định các giao điểm cho phần được giữ lại nên được thực hiện với sự tính toán ít nhất. Bất kỳ đường nào mà trong hai mã vùng của hai đầu mút có một số 1 ở cùng vị trí bit thì đoạn hoàn toàn nằm ngoài cửa sổ. Các đoạn thẳng có cả hai đầu đều nằm ngoài cửa sổ. đoạn nào bị cắt bỏ hoàn toàn hay bị cắt một phần.y) của điểm đầu mút với biên cửa sổ. được gọi là mã vùng. Các vùng này được xây dựng dựa trên sự xem xét với biên cửa sổ. Trong các ngôn ngữ lập trình. một thuật toán nên xác định rõ tất cả các đoạn thẳng được giữ lại hoàn toàn hoặc bị cắt bỏ hoàn toàn. Một phương pháp có thể được dùng để kiểm tra các đoạn cho việc cắt toàn bộ là thực hiện phép ‘and’ với cả hai mã vùng. Ví dụ. (2) Dùng bit dấu (kết quả của mỗi hiệu) để đặt giá trị tương ứng trong mã vùng. chúng ta vứt bỏ đoạn có mã vùng ở một đầu là 1001. Nếu kết quả không phải là 0000 thì đoạn nằm bên ngoài cửa sổ. như ở hình 4. việc xử lý clipping nên được thực hiện sao cho có hiệu quả nhất. Nhưng đoạn từ P7 đến P8 sẽ được giữ lại phần từ P’7 đến P’8. chúng ta có thể xác định nhanh chóng đoạn thẳng nào là hoàn toàn nằm trong cửa sổ. Khi chúng ta xây dựng xong các mã vùng cho tất cả các điểm đầu mút. làm việc trên bit như thế này có thể thực hiện được. bit 2 là bit dấu của y – ywmin . Bit 1 là bit dấu của x – xwmin . Đoạn từ P3 đến P4 bị cắt bỏ hoàn toàn. Với những đoạn được xem xét là bị cắt bỏ. Mỗi vị trí bit trong mã vùng được dùng để chỉ ra một trong bốn vị trí tọa độ tương ứng của điểm so với cửa sổ: bên trái. Như được chỉ ra ởình bên. Một đoạn với một đầu nằm ngoài (P9) và một đầu nằm trong (P10) sẽ bị cắt bớt tại giao điểm với biên cửa sổ (P’9). giúp nhận ra vùng tọa độ của một điểm.4 Giá trị 1 ở bất kỳ vị trí nào chỉ ra rằng điểm ở vị trí tương ứng. Bất kỳ đoạn nào có mã vùng của cả 2 đầu mút là 0000 thì nằm trong cửa sổ và chúng ta chấp nhận các đường này. như đoạn từ P5 đến P6. Các giá trị của ba bit còn lại được xác định bằng cách so sánh tương tự. và chúng ta loại bỏ các đoạn này.lại hết. mã vị trí là 0000. và bit 4 là bit dấu của ywmax – y. Bit 3 – dưới. bit 2 là bit dấu của xwmax – x . các vùng tọa độ có thể liên quan với vị trí bit như sau: Bit 1 – trái . Đối với các đoạn bị cắt bỏ một phần. Việc đánh số theo vị trí bit trong mã vùng từ 1 đến 4 cho từ phải sang trái. các giao điểm với biên cửa sổ phải được tính. dưới đáy. còn đầu kia là 0101 (có cùng bit 1 ở vị trí 1 nên cả hai đầu mút của đoạn này nằm ở phía bên trái cửa sổ). có thể rơi vào hai trường hợp: toàn bộ đoạn thẳng đều nằm ngoài hoặc đoạn thẳng cắt hai cạnh cửa sổ. 4.

y1) và (x2. Giao điểm P’2 được tính. và chúng ta tiếp tục cho đến khi toàn bộ đường bị bỏ đi hay đến khi một phần đường được xác định là nằm trong cửa sổ.y1) và (x2. ta kiểm tra P1 với biên trái. Sau khi tìm giao điểm P’1.2 Giải thuật chia tại trung điểm Một kỹ thuật để xác định giao điểm với biên cửa sổ mà không dùng đến phương trình đường thẳng là dùng thủ tục tìm kiếm nhị phân. tung độ y của giao điểm với một biên dọc cửa sổ có thể tính được theo phép tính : y = y1 + m (x – x1) (4-4) Ở đây giá trị x được đặt là xwmin hoặc xwmax. chúng ta thấy rằng phần còn lại này nằm phía dưới cửa sổ và cũng bị vứt bỏ luôn. Ta tìm giao điểm P’1 với biên dưới. Mỗi kết quả tính toán cho tọa độ giao điểm liên quan đến một phép cộng và một phép chia 2.này bằng cách so sánh một điểm đầu mút (cái đang nằm ngoài cửa sổ) với một biên cửa sổ để xác định phần nào của đường sẽ bị bỏ. được gọi là sự phân chia tại trung điểm.6. nếu ta tìm giao điểm với biên ngang. một nửa kia sau đó sẽ được xử lý theo cách tương tự. Bắt đầu ở điểm đầu mút bên dưới từ P1 đến P2. và độ dốc m = (y2 – y1)/ (x2 – x1) Tương tự. Điểm P3 nằm bên trái cửa sổ. chúng ta vứt bỏ đoạn từ P1 đến P’1. bên phải. y2). việc kiểm tra các đoạn vẫn được thực hiện bằng cách dùng mã vùng. Hình 4. và đoạn từ P’1 đến P’2 được giữ lại. Bây giờ xét đoạn kế tiếp. vì vậy ta xác định giao điểm P’3 và loại bỏ đoạn từ P’3 đến P3. P3P4. Điều này tiếp tục cho đến khi gặp một giao điểm. Các giao điểm với biên cửa sổ có thể được tính bằng cách dùng các tham số của phương trình đường thẳng. Với một đường thẳng đi qua hai điểm (x1. Nếu một nửa đoạn được chấp nhận hoặc bị huỷ bỏ.5 Kết thúc quá trình xử lý đoạn P1P2. Khi tọa độ giao điểm được xác định. mỗi nửa đoạn thẳng được kiểm tra để chấp nhận hay huỷ bỏ toàn bộ. hoành độ x có thể được tính như sau : x = x1 + (y – y1)/m với y là ywmin hoặc ywmax. trung điểm được tính như sau: xm = (x1 + x2) / 2 . phải và đáy cửa sổ và thấy rằng điểm này nằm phía dưới cửa sổ. Sau đó. Tiếp cận này được minh họa trong hình 4. bên dưới hay trên đỉnh. 4. y2).3. Mọi đoạn thẳng với hai điểm đầu mút (x1. phần đường được giữ lại sẽ được kiểm tra với các biên khác. Bất kỳ đoạn nào không được chấp nhận hoàn toàn hoặc không bị huỷ bỏ hoàn toàn (nhờ vào kiểm tra mã vùng) thì sẽ được đi tìm giao điểm bằng cách kiểm tra tọa độ trung điểm. Chúng ta xây dựng thuật toán để kiểm tra các điểm đầu mút tương tác với biên cửa sổ là ở bên trái. Đầu tiên. Chúng ta xem các đoạn trong hình được xử lý như thế nào. Trang 22 (4-5) ym = (y1 + y2) / 2 (4-6) . Bằng cách kiểm tra mã vùng phần đoạn thẳng từ P’3 đến P4.

3.4} : pk ≠ 0 hay qk ≥ 0 thì với các bất pt ứng với pk = 0 luôn đúng.2. p k < 0 } . q4 = ywmax – y1 Hệ bất pt (4-8) viết lại như sau : p t ≤ q (4-9) k .x1 p3 = -Dy. tìm đoạn giao thực chất là tìm nghiệm của hệ bất pt 4-9.Hình 4. y + t D ) và Q2 ( x 1 + t D x . q2 = xwmax .3. • Nếu ∃ k ∈ {1. (4-8) qk pk qk • Nếu pk > 0: ta có t ≤ pk • Nếu pk < 0: ta có t ≥ qk  Vậy nghiệm của hệ (4-9) là [t1. p k > 0 } . y + t D ) 2 1 2 y 1 1 1 y Trang 23 . D x = x 2 − x 1 y = y1 + t(y 2 − y1 ) = y1 + tD y . 4.4}  k 0 ≤ t ≤ 1 Như thế. q3 = y1 – ywmin p4 = Dy. nửa kia tiếp tục được xử lý cho đến khi toàn bộ nó là bị huỷ bỏ hoặc được giữ lại.3. Có các trường hợp sau: • Nếu ∃ k ∈ {1. Tập hợp các điểm thuộc phần giao của đoạn thẳng và cửa sổ thỏa mãn hệ bất phương trình: x wmin ≤ x 1 + tD x ≤ x wmax   y wmin ≤ y1 + tD y ≤ y wmax  0 ≤ t ≤1  Đặt p1 = -Dx. 0) (4-10) k  qk  . t2] thỏa mãn : t 1 = max({ p . 1)  t 2 = min({ pk  t1 ≤ t 2    Nếu hệ (4-9) có nghiệm thì đoạn giao giữa đoạn thẳng và cửa sổ là Q1( x 1 + t D x . k ∈ {1. q1 = x1 – xwmin p2 = Dx. D y = y 2 − y1 (4-7) .4} : pk = 0 và qk < 0 thì hệ vô nghiệm.3. ta có một điểm P tương ứng thuộc đường thẳng. Cài đặt phần cứng theo phương pháp này có thể giúp ta clipping khỏi biên vùng quan sát nhanh chóng sau khi các đối tượng vừa được chuyển sang hệ tọa độ thiết bị. 0 ≤ t ≤1 Ứng với mỗi giá trị t.3 Giải thuật Liang – Barsky Giải thuật được dựa trên phân tích phương trình tham số đoạn thẳng: x = x 1 + t(x 2 − x 1 ) = x 1 + tD x .6 Nếu một nửa được chấp nhận hoặc bị huỷ bỏ toàn bộ.2.2.

Trong chương này. mặt phức tạp khác. các phép biến đổi được dùng đa dạng hơn so với đồ họa hai chiều vì phải chọn nhiều tham số mô tả đối tượng. Trang 24 . từ các đối tượng đơn giản như hình khối. Những phần nhìn thấy của cảnh. ta loại bỏ các phần của đối tượng không nhìn thấy. giúp giảm bớt những thao tác dư thừa của hình ảnh sẽ hiển thị. Bài 3 Cài đặt thuật toán cắt xén hình chữ nhật với 1 đoạn thẳng cho trước theo giải thuật Liang – Barsky hay Cohen – Sutherland. tịnh tiến. 5. nguồn sáng. Tiếp theo là bước tối ưu. Cũng giống như cách biểu diễn đối tượng 3 chiều trên mặt phẳng.1. Bề mặt có thể xây dựng bởi nhiều tổ hợp khác nhau của các mặt phẳng và mặt cong. biểu diễn trên máy tính cũng phải tuân theo các quy luật như : phối cảnh. Bài 4 Cho biết ma trận của phép biến đổi từ cửa sổ sang vùng quan sát.1 Quy trình hiển thị đồ họa ba chiều Bước đầu tiên trong quy trình hiển thị là biến đổi đối tượng từ không gian đối tượng sang không gian thực. Gợi ý : Sử dụng giải thuật Liang – Barsky. phải xem xét nhiều khía cạnh và vấn đề chứ không đơn giản là thêm tọa độ thứ 3 cho đối tượng. Gợi ý : ma trận biến đổi là tích ba ma trận tịnh tiến. người quan sát cùng tồn tại. Ngoài ra. Mô tả một đối tượng ba chiều phải qua quy trình xử lý gồm nhiều công đoạn như phép biến đổi hệ tọa độ quan sát và phép chiếu phối cảnh . ứng với hệ tọa độ quan sát được chọn. đa diện. việc thể hiện chúng trên máy tính là việc cần thiết để đưa tin học gần gũi với thực tế. những nét tiêu biểu hay một phần của đối tượng 3 chiều. màu sắc … nhằm giúp người quan sát tưởng tượng được hình ảnh gần đúng nhất. ta cần mô tả thông tin cho đối tượng. cho tới các hình. Khi mô hình hóa và hiển thị một đối tượng ba chiều. Ngoài ra. CHƯƠNG V ĐỒ HỌA 3 CHIỀU 5. phải xác định và cuối cùng là giải thuật vẽ bề mặt của đối tượng được áp dụng nhằm tạo ra hình ảnh thực tế của đối tượng ba chiều.1 Tổng quan về đồ họa ba chiều Các đối tượng trong thế giới thực phần lớn là các đối tượng 3 chiều. Các công cụ hỗ trợ đồ họa cung cấp một số hàm hiển thị các thành phần bên trong. tỷ lệ. ánh sáng. chúng ta thảo luận một vài kỹ thuật biểu diễn đối tượng 3 chiều trên máy tính.4 Bài tập áp dụng Bài 1 Ý nghĩa mã vùng trong giải thuật Cohen – Sutherland. Gợi ý : Giải thuật Liang – Barsky thực hiện ít phép toán hơn. Gợi ý : mã vùng để mô tả vị trí tương đối của vùng nào đó so với cửa sổ. Trong không gian này thì đối tượng. chuyển đổi từ hệ tọa độ quan sát ba chiều sang hệ tọa độ quan sát hai chiều. Bài 2 So sánh hai thuật toán Cohen – Sutherland và Liang – Barsky về số phép tính thực hiện trong các trường hợp chính.. Quá trình này gọi là biến đổi mô hình.4.

5. Sau đó. Trong không gian quan sát.Bước tiếp theo là phải chiếu sáng đối tượng . Thông tin về các thành phần hình học được lưu trữ trong cơ sở dữ liệu của B-rep.2. Tuy nhiên. với những đối tượng như mặt cong. 5. Các mặt đa giác và mặt bậc hai cung cấp cho chúng ta mô tả gần đúng của các đối tượng elip. Các đối tượng được đưa từ không gian thực về không gian quan sát. phải thực hiện một phép biến đổi hệ tọa độ để đặt vị trí quan sát về gốc tọa độ và mặt phẳng quan sát tại vị trí phù hợp. mỗi mặt bao lại bởi các cạnh và mỗi cạnh được tạo bởi hai đỉnh. Mô hình bề mặt được xây dựng dựa trên cơ sở đối tượng được bao kín bởi tập các mặt. Ví dụ như biểu diễn một hình trụ thì xem Trang 25 . Mô hình bề mặt có ưu điểm hiển thị mức chi tiết chính đầy đủ hơn mô hình khối rắn. người ta dùng các phương pháp xấp xỉ để đưa mặt cong về dạng mặt đa giác hoặc dùng nhiều mặt cong trơn ghép nối với nhau. Các mặt này thuộc về các mặt cong khép kín và có hướng. Có nhiều loại khối cơ sở như khối chữ nhật. Để tìm hướng bề mặt.1 Biểu diễn mặt đa giác Mô hình hóa bề mặt đối tượng thường được biểu diễn đối tượng. Với cách biểu diễn trên. để tạo ra mức độ chính xác chấp nhận thì cần lưu trữ lượng dữ liệu lớn. cầu… trong khi các phép toán tập hợp như phép giao. việc biểu diễn như thế cung cấp một định nghĩa chính xác về đặc tính của đối tượng. Các tính toán giao nhau giữa đường cong và đường cong. Đối tượng xem như tập hợp các điểm rời rạc. Hướng của bề mặt phân biệt hai phía trong và ngoài bề mặt. nón. Bước này là được xem là biến đổi hệ quan sát. Mỗi mô hình có những ưu điểm riêng. ta phải thực hiện việc xén các đối tượng thừa. không nhìn thấy được trong cảnh. mô hình cũng có nhược điểm là nếu mô hình đối tượng có bề mặt phức tạp. kích thước hình học. Trong mô hình này. 5. …cách tiếp cận hình học Fractal cho phép ta biểu diễn chính xác các đối tượng tự nhiên như bầu trời. Vì nguyên nhân trên mà mô tả các đối tượng thông qua mặt đa giác được dùng cho các đối tượng đồ họa cơ sở.2 Biểu diễn đối tượng ba chiều Các cảnh đồ họa được biểu diễn theo những phương pháp khác nhau sao cho phù hợp với thuộc tính đối tượng. chiếu đối tượng xuống mặt phẳng hai chiều. Trong một vài trường hợp. Hình học khối đặc giả thiết là các đối tượng tự nhiên có thể tạo ra bằng cách phối hợp các khối cơ sở thông qua các quy luật đại số Bool. trụ. Sau khi chiếu sáng. chẳng hạn như một hình trụ. Để biểu diễn đối tượng có bề mặt phức tạp. phương chiều khối cơ sở như trong hình học không gian song không thật chính xác. đường cong với mặt cong. hyperbol. toàn cảnh đối tượng được hiển thị lên màn hình. Cách thực hiện này rất dễ dàng chỉ với một số mặt cong nhưng hình dạng không trơn. Do đó. bề mặt ngoài khối trụ được xấp xỉ bằng nhiều bề mặt B-rep. ta chỉ có thể chọn lựa cách biểu diễn đa giác.1. dựa trên thông tin là dữ liệu vị trí. khối bậc hai thì sử dụng mô hình hóa khối đặc. loại trừ được sử dụng để phối hợp các đối tượng hình học cơ sở. không gian thực tế. biến đổi từ không gian quan sát sang không gian thiết bị màn hình. khối với mặt phẳng cắt. thông qua tập hợp các mặt đa giác xác định bề mặt đối tượng. gán cho chúng màu sắc dựa vào đặc tính của các chất tạo nên vật và các nguồn sáng tồn tại trong khung cảnh.2 Mô hình hóa đối tượng Có hai dạng mô hình hóa là hình học khối đặc (Solid Geometric) hay mô hình bề mặt (Boundary Representation). ta đơn giản hóa cách lưu trữ dữ liệu và tăng tốc độ hiển thị đối tượng vì bề mặt được mô tả bằng phương trình tuyến tính. hợp. hướng của véc tơ pháp tuyến sẽ được tính toán. và nếu có sự cập nhật những thay đổi của đối tượng thì mô hình bề mặt còn có thể thực hiện được dựa trên cơ sở dữ liệu lưu trữ.

Tuy nhiên.Thứ hai. 5. xác định một số điểm điều khiển. có những đối tượng hình học không có quy luật chính xác để mô tả những đối tượng như mặt cong của thanh chắn va đập của xe ô tô. định vị tọa độ các điểm đã biết thuộc đường cong.1 Mô hình biểu diễn hình trụ thông qua mặt đa giác.2 Đường cong và mặt cong . Trong phần này. pk . • Đường cong Bezier: đường cong dựa trên L+1 điểm điều khiển p0. .2. và tìm giải thuật tạo đường cong dựa trên các điểm đó. tuy nhiên cách biểu diễn thứ nhất được áp dụng trong các bài toán đồ họa sẽ thuận tiện hơn cách kia. Nếu cần thể hiện hình trụ thực hơn thì phải biến đổi tạo bóng nội suy cho hình trụ. Hình biểu diễn đường cong là tập các điểm dọc theo hình chiếu của đường mô tả bởi hàm số.Thứ nhất.. tìm ra phương trình tham số để nó đi qua các điểm đó và trùng khớp hình dáng với đường cong ban đầu. . hình dáng hiển thị thỏa mãn yêu cầu thiết kế chứ không quan tâm lắm tới độ chính xác phép nội suy. Đối với các đối tượng hình học như hình tròn hay elip thì thư viện đồ họa đã cung cấp sẵn hàm vẽ đối tượng lên mặt phẳng hiển thị. trong thực tế. mọi hệ đồ họa đều hỗ trợ trực tiếp biểu diễn các đối tượng hình học trên. Yêu cầu đặt ra là: Có một đường cong. tay cầm tách chén cafe… Những đối tượng hình học theo mô tả trên. Hình 5. Những đối tượng hình học như hình tròn. Do đó. xác định theo tập các điểm phân biệt p1. dẫn đến ∑ B L (t) = 1 k L L k =0 Trang 26 . chúng dựa trên cách giải quyết thứ hai. B-Spline Hình ảnh các đường cong và mặt cong có thể được tạo ra từ một tập các hàm toán học định nghĩa các đối tượng hoặc tập các điểm trên đối tượng. hay hình cầu … được xem là những đường và mặt cong xác định được phương trình tham số chính xác cho nó.. đường cong và mặt cong Bezier. Nhưng với các đường cong hay mặt cong không có quy luật. elip hình trụ. Hãy tìm ra giải thuật tạo đường cong ban đầu với độ chính xác nào đó? Có 2 cách giải quyết: . hình nón. p1. . Hệ đồ họa hay tạo các lưới tam giác để đảm bảo tính đồng phẳng của các cạnh. hình thân tàu thủy. Một đường cong hay mặt cong có thể diễn tả bằng phương trình tham số hay không có tham số.như hình trụ là tập các mặt đa giác ghép liền. p2. Từ công thức 5-2. pL được biểu diễn qua công thức sau đây: P(t) = ∑ Pk B L (t) k k =0 L (5-1) (5-2) BL (t) là đa thức Berntein được xác định theo: B L (t) = C k (1 − t) L − k t k k k L C k là tổ hợp chọn k từ L. thì tập điểm hay lưới đa giác xấp xỉ với đường mặt cong sẽ tạo ra. chúng ta sẽ giới thiệu phương trình đường cong Bezier và B – Spline. Ta phải thay đổi vị trí điểm điều khiển cho tới khi đường cong mới có hình dáng giống như hình dáng đường cong ban đầu thì xem như giải quyết xong.

v) = ∑ ∑ Pi. 4 nút điều khiển. k N i =0 k =0 M L i. ta có phương trình mặt cong B – Spline là: P(u. Trong thế giới ba chiều. mỗi đoạn xấp xỉ theo một đường cong Bezier bậc nhỏ hơn.1 (t) = 0 trong các trường hợp khác.. trong khi các đoạn khác thuộc tập điểm điều khiển khác thì không bị ảnh hưởng. m (t) là đa thức cơ sở như sau: N k. Sự biến thiên của đường cong Bezier trong không gian tạo ra mặt cong.L. Trong thế giới hai chiều. mặt phẳng xy chứa toàn bộ đối tượng. các điểm kiểm soát cũng thay đổi trên một đường cong nào đó xem như đường cong Bezier. m (v) (5-6) 5. N k. tuy nhiên trong trường hợp đó khiến bậc đa thức càng cao. khi u thay đổi kéo theo các điểm kiểm soát thay đổi dẫn tới đường cong thay đổi.1 (t) = 1 nếu tk ≤ t < tk+1 . Công thức cho đường cong sẽ là: P(u. một trục z vuông góc được đưa ra để tạo thêm hai mặt phẳng chính khác là Trang 27 . Nếu u thay đổi... khoảng cách nút đều nhau.Đường cong phức tạp thì yêu cầu số lượng điểm điều khiển nhiều.3 3. có thể xem là mở rộng của hệ trục tọa độ hai chiều.3 Các phép biến đổi hình học 3 chiều Các điểm trong không gian ba chiều được biểu diễn bằng hệ trục tọa độ ba chiều. bằng cách ghép các đoạn ngắn cũng cho phép kiểm soát sự thay đổi một phần đường cong. N k. dựa trên M+1 điểm kiểm soát. 1] t .3 6 6 L • Mặt cong Bezier: Xét đường cong Bezier như hàm theo tham số v và các điểm kiểm soát theo tham số u. v) = ∑ ∑ Pi. k BiM (u)B L (v) k i =0 k =0 M L (5-5) Mặt cong B – Spline: Cũng dựa trên phân tích trên. thì 4 đa thức cơ sở như sau: N (t) = 1 3 1 t ∈ [0 . Các khoảng cách [ti. đòi hỏi tính toán dài và khó.. m − 1 (t) + ( t t k+m −t k +1 k+m −t )N k + 1.3 1.3 6 6 1 1 N (t) = (3t 3 . N (t) = (-t 3 + 3t 2 − 3t + 1) 2. m (t) = ( t-t k t k + m -1 −t )N k k. v) = ∑ Pk (u)B L (v) k k =0 Lúc này. Giả thiết một đường cong B – Spline bậc 3. Phương trình mặt cong Bezier là: • P(u. Việc tạo các đường cong phức tạp. m − 1 (t) (5-4) k = 0.1. N (t) = (-3t 3 + 3t 2 + 3t + 1) 0. ti+1] có thể chia đều nhau hoặc không đều. • Đường cong B – Spline: đường cong cấp m dựa trên véc tơ nút T và L+1 điểm kiểm soát p k có dạng: L P(t) = ∑ Pk N (t) k. m (u)N k. m k =0 (5-3) Trong đó N k.6t 2 + 4) . Cách khắc phục là đường cong phức tạp vẫn được ghép từ những đoạn khác nhau.

Các phép biến đổi tuyến tính là tổ hợp của các phép biến đổi sau : tỉ lệ.Tổ hợp các phép biến đổi có tính phân phối. 5.Ảnh của đường thẳng là đường thẳng . nếu đặt bàn tay trái sao cho các ngón tay uốn cong theo chiều từ trục x dương tới trục y dương. Nếu các hệ số Sx.Gốc tọa độ là điểm bất động .Ảnh của các đường thẳng song song là các đường thẳng song song .hz.y.3. 5. Hình 5. z’) bằng phép biến đổi sau: Sx 0 0 0  0 Sy 0 0  [ x' y' z' 1] = [ x y z 1]   0 0 Sz 0    0 0 0 1 (5-7) Phép biến đổi được coi là phép tỷ lệ theo gốc tọa độ. thì kích thước đối tượng có thể thay đổi nhưng tỷ lệ với gốc tọa độ vẫn giữ nguyên. với ngón tay cái hướng theo trục z. Sy. y. quay.2 Phép biến dạng Phép biến dạng ba chiều tạo ra sự biến dạng cho đối tượng bởi việc thay giá trị của một hoặc nhiều tọa độ bằng các hệ số tỷ lệ của cột thứ ba.xz và yz.hy.h). z) được biến đổi tỷ lệ thành P(x’.2 Các hệ trục tọa độ bàn tay phải và tay trái Hệ trục tọa độ tuân theo quy tắc bàn tay phải được mô tả bằng bàn tay phải.z) trong không gian Descartes được biểu diễn bởi một bộ bốn tọa độ trong không gian 4 chiều thu gọn (hx. Các thành phần ngoài đường chéo chính của ma trận con 3×3 phía trên của ma trận biến hình tổng quát ảnh hưởng đến phép biến dạng. Các phép biến đổi tuyến tính có các tính chất như trong tọa độ 2 chiều: . Trang 28 . Hệ tọa độ thuần nhất: Mỗi điểm (x. y’.3. Hệ trục tọa độ tuân theo quy tắc bàn tay trái được mô tả bằng bàn tay trái. Ngược lại. Sz khác nhau thì hình ảnh của đối tượng sẽ biến dạng. Người ta thường chọn h=1. Chiều của các trục tọa độ trong hệ trục tọa độ ba chiều có thể tuân theo quy tắc bàn tay phải hay quy tắc bàn tay trái.Bảo toàn tỉ lệ khoảng cách . các ngón tay còn lại xoắn theo chiều từ trục x dương sang trục y dương.1 Phép biến đổi tỷ lệ Phép biến đổi tỷ lệ tạo thành bằng cách gán các giá trị cho đường chéo chính của ma trận biến hình tổng quát 4×4 . thì ngón tay cái sẽ chỉ theo chiều trục z dương. Cách thực hiện trên là biến dạng theo mặt phẳng tạo ra bởi hai trục tọa độ được điều khiển bởi trục thứ ba. biến dạng và đối xứng. Một điểm P(x.

phép quay ba chiều khó hơn vì phải sử dụng trục quay thay thế điểm quay.3 Phép tịnh tiến Ma trận biến đổi hình sẽ thay đổi điểm P(x. z’) bằng phép biến đổi sau: 1 0 0 0 1 0 [ x' y' z' 1] = [ x y z 1]  0 0 1  J K L 0 0  0  1 (5-11) Các giá trị J. y.3. So với phép quay hai chiều. K. y’. 5.Ma trận biến dạng theo trục X: 1 Sxy Sxz 0 0 1 0 0   0 0 1 0   0 1 0 0  1 Syx   0   0 0 0 0 1 Syz 0  0 1 0  0 0 1 0 0  0  1 (5-8) Ma trận biến dạng theo trục Y: (5-9) Ma trận biến dạng theo trục Z: 0 0  1  0 1 0  Szx Szy 1  0 0  0 (5-10) 5.4 Phép quay hình Phép quay trong không gian là quan trọng để tìm hiểu hình dạng của đối tượng hoặc kiểm tra quá trình thiết kế ở các góc độ khác nhau.3. trong trường hợp này xem hệ trục tọa độ theo quy tắc bàn tay phải. Các phép quay được phân tích dựa vào các phép quay quanh các trục chính. y. L mô tả sự tịnh tiến tương đối theo các hướng x. z) thành P(x’. z. 1  0 θ [M] =  0 X  0  Ma trận quay quanh trục X : 0 0 0  cosθ sinθ 0 − sinθ cosθ 0  0 0 1  0 − sinθ 1 0 0 cosθ 0 0 0  0 0  1  (5-12) cosθ  θ  0 Ma trận quay quanh trục Y : [M] Y =  sinθ   0  (5-13) Trang 29 .

Phép quay hình quanh trục nào đó với góc quay cho trước thì phải được phân rã thành các phép biến đổi cơ sở.Ma trận quay quanh trục Z :  cosθ  . và ngược lại. 1 0 0 1 M1 =  Phép tịnh tiến A trùng gốc tọa độ : 0 0  . z = 0. y = 0.3. quay quanh trục Z.1 0 0 1 0 0 0  0  1 Phép quay trục A’B’ quanh trục X sao cho nó trùng với mặt phẳng Y = 0: Trang 30 .1 0 0  0 -1 0 =  0 0 -1  0 0 0  [M] RFL_O 0  0 0  1  Ví dụ : Tìm ma trận biến đổi của phép quay góc 90o ngược chiều kim đồng hồ quanh trục AB. quay quanh trục Y.1  0 0 0  0  0 0  1  Phép đối xứng qua gốc tọa độ trong không gian được mô tả theo ma trận biến đổi như sau : . nếu A(2.5 Phép đối xứng qua mặt phẳng Phép đối xứng được thực hiện qua các mặt phẳng đối xứng. 5. Ma trận của phép biến đổi sẽ là tích các ma trận của các phép biến đổi cơ sở.sinθ θ [M] =   0 Z   0  sinθ cosθ 0 0 0 0 1 0 0  0 0  1  (5-14) Đối với phép quay trong hệ trục tọa độ theo quy tắc bàn tay trái. chỉ cần thay đổi hệ số góc quay θ thành – θ là xong. Để lấy đối xứng qua mặt phẳng bất kỳ. là mở rộng từ phép đối xứng hai chiều. phép biến đổi kết hợp gồm phép quay (hoặc tịnh tiến) và phép đối xứng. 1).1  0 = 0  0  [M] RFL_X 0 1 0 0 0 0 1 0 0  0 0  1  [M] RFL_Y 1  0 = 0  0  0 -1 0 0 0 0 1 0 0  0 0  1  [M] RFL_Z 1 0 0  0 1 0 = 0 0 . quay trục A’B’ quanh trục X. Phép biến đổi là kết hợp của các phép biến đổi cơ sở : tịnh tiến. 3. Sau đây là ma trận của phép đối xứng qua mặt phẳng x = 0. 1. 0) và B(3. .2 .

151 0.667 0.1 o M4 =  Phép quay góc 90 theo chiều dương quanh trục Z là : 0  0 1 0 0 0 0 0 1 0 0 0  0  1 Ma trận biến đổi M là kết hợp các biến đổi: 1 0 0 1 M= 0 0  .075 0.0.167   1.56 Trang 31 .0 0 1 0 5 /5 2 5 /5 M2 =  0 .742 .2 5 / 5 5 /5  1 0 0 0 0  30 / 6  0  0  0  6 / 6  1  0  0 − 6 /6 1 0 0 30 / 6 0 0 0 0  0  1 0  30 / 6  0  0  0 − 6 / 6  1  0  0 1 0 0 6 /6 0 30 / 6 0 0  0 0  1  0  1 0 0  0 0  1 2 0 1 0 1 0 0 1 0 0 0  0  1 0 0 0 1  5 /5 -2 5 /5 0  0 5 /5 0  0 2 5 / 5  0 0 1  0   0.0.742 .166 0.1 0 .2 .075 0.1.1  0  0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0  0 0  5 /5 2 5 /5 0 0 .65 .983 0.741 Do đó: M =   0.2 5 / 5 5 /5  0 0 0 0 0  0  1 Phép quay trục A’B’ quanh trục Y sao cho A’B’ trùng với trục Z:  30 / 6 0 6 / 6 0   1 0 0  0 M3 = − 6 / 6 0 30 / 6 0   0 0 1  0   0 .

Gợi ý : quy tắc bàn tay phải. Gợi ý : Ma trận biến đổi là chuỗi các biến đổi : tịnh tiến trục về gốc tọa độ. Z : tọa độ tương ứng với trục nào thì lấy đảo dấu.5. . sau đó là các phép biến đổi ngược lại quá trình trên. quay quanh trục Z Mrot (Z. Z. quay quanh trục Y Mrot (Y.4 Bài tập áp dụng Bài 1 Các kiến thức mô tả trong chương xét trong hệ tọa độ Đề các bàn tay trái hay bàn tay phải. Trang 32 . α). Bài 2 Xác định ma trận của phép đối xứng qua trục X. Y. với các hệ số biến dạng là 2.β) . α). quay quanh X Mrot (X. Y. Gợi ý : tọa độ điểm Q xác định từ phép nhân véc tơ tọa độ P với ma trận biến dạng. Gợi ý : phép đối xứng qua trục X. Bài 3 Xác định điểm Q là ảnh của điểm P cho trước phép biến dạng theo trục tung. Bài 4 Xác định ma trận của phép quay góc α quanh trục AB bất kỳ.

các thao tác liên quan đến phép biến đổi cách quan sát. vì bây giờ có vài chọn lựa để có thể quan sát ảnh như thế nào. được ánh xạ vào một vùng quan sát. trước hết chúng ta sẽ thảo luận các cơ chế của phép chiếu. Hai phương pháp này được gọi là phép chiếu song song và phép chiếu phối cảnh.CHƯƠNG VI QUAN SÁT 3 CHIỀU 6. và đầy đủ các kỹ thuật quan sát ảnh ba chiều sẽ được phát triển. Có hai phương pháp cơ bản để chiếu các đối tượng ba chiều lên bề mặt quan sát hai chiều. Chúng ta có thể quan sát ảnh từ phía trước. các thao tác quan sát biến đổi các điểm hai chiều trong mặt phẳng tọa độ thực thành các điểm hai chiều trong mặt phẳng hệ tọa độ thiết bị. việc làm này phức tạp hơn một chút. Tất cả các điểm của đối tượng có thể được chiếu lên bề mặt theo các đường thẳng song song. sự mô tả các đối tượng ba chiều phải được chiếu lên bề mặt quan sát của thiết bị xuất.2 Một bề mặt quan sát được định nghĩa trong mặt z=0 của hệ tọa độ bàn tay trái.1 Hai phương pháp chiếu một đoạn thẳng lên bề mặt của mặt phẳng chiếu Trong cả hai trường hợp. Sau đó. Ngoài ra. và đối tượng được hiển thị lên thiết bị kết xuất. hoặc từ phía sau. hoặc các điểm có thể được chiếu theo các đường hội tụ về một điểm được gọi là tâm chiếu. từ phía trên. Các hệ tọa độ thiết bị chuẩn hóa này sau đó được biến đổi sang các hệ tọa độ thiết bị. Hình 6. Định nghĩa đối tượng. Trong chương này. bị cắt bởi một cửa sổ. giao điểm của đường chiếu với mặt quan sát xác định các tọa điểm của điểm được chiếu mặt phẳng chiếu này. Đối với đồ họa ba chiều. Hoặc chúng ta có thể tạo ra quang cảnh về những gì chúng ta có thể thấy nếu chúng ta đang đứng ở trung tâm của một nhóm các đối tượng. Hình 6. Trang 33 bề lên .1 Các phép chiếu Trong đồ họa hai chiều.

ta có phép chiếu trực giao (hay phép chiếu vuông góc – orthographic projection).4 Phép chiếu cùng kích thước của một đối tượng lên bề mặt quan sát Các phép chiếu trực giao đa số được dùng để tạo ra quang cảnh nhìn từ phía trước. Phép chiếu song song bảo tồn mối quan hệ về chiều của các đối tượng. Tuy nhiên. bên sườn. Hai đoạn thẳng dài bằng nhau. và trên đỉnh của đối tượng. 6. như trong hình 6. bên sườn. Ngược lại. Các đường ở xa được chiếu sẽ nhỏ hơn các đường ở gần mặt phẳng chiếu. và quang cảnh phía trên được gọi là “mặt phẳng” . Quang cảnh phía trước. vì các chiều dài và góc miêu tả chính xác và có thể đo được từ Trang 34 . Một phép chiếu có thể không vuông góc với mặt phẳng chiếu được gọi là phép chiếu xiên. Hình 6. đoạn nào ở xa mặt phẳng chiếu hơn sẽ có kích thước nhỏ hơn. Các bản vẽ trong kỹ thuật thường dùng các phép chiếu trực giao này. Hình 6.3 Hai đoạn thẳng trong phép chiếu phối cảnh.2 Phép chiếu song song Các hình ảnh được hình thành bằng phép chiếu song song có thể được xác định dựa vào góc hợp bởi hướng của phép chiếu hợp với mặt phẳng chiếu. và đây là kỹ thuật được dùng trong việc phác thảo để tạo ra các bức vẽ tỷ lệ của các đối tượng ba chiều.3. phép chiếu phối cảnh tạo ra các hình ảnh thực nhưng không bảo tồn các chiều liên hệ. phép chiếu song song không cho một hình ảnh thực tế của các đối tượng ba chiều. Khi hướng của phép chiếu vuông góc với mặt phẳng.Chúng ta giả sử rằng mặt phẳng chiếu là mặt z = 0 của hệ tọa độ bàn tay trái. trong phép chiếu phối cảnh. và phía sau của đối tượng được gọi là “mặt chiếu”. Phương pháp này được dùng để thu các hình ảnh chính xác ở các phía khác nhau của một đối tượng.

yp. Một phép chiếu cùng kích thước được thực hiện bằng việc sắp xếp song song mặt phẳng chiếu mà nó cắt mỗi trục tọa độ ở nơi đối tượng được định nghĩa (được gọi là các trục chính) ở các khoảng cách như nhau từ ảnh gốc. Các tọa độ chiếu trực giao trên mặt phẳng chiếu là (x. Đường thẳng của phép chiếu xiên tạo một góc α với đường thẳng trên mặt Trang 35 yp = y. Hình 6. Đối với điểm bất kỳ (x. z) theo một đường thẳng chiếu đến vị trí (xp.5 Ba phép chiếu trực giao của một đối tượng. y.1 Phép chiếu xiên Một phép chiếu xiên đạt được bằng việc chiếu các điểm theo các đường thẳng song song. z). Tất cả ba trục chính được vẽ thu gọn bằng nhau trong phép chiếu cùng kích thước để kích thước liên hệ của các đối tượng được bảo tồn. 6.6 trình bày hình chiếu xiên của điểm (x. Chúng ta cũng có thể tạo các phép chiếu trực giao để có thể quan sát nhiều hơn một mặt của một đối tượng. xp) trên bề mặt chiếu được tính như sau: xp = x. khi mà các hệ số tỷ lệ theo ba trục chính có thể khác nhau. Hình 6. Các phương trình biến đổi để thực hiện một phép chiếu song song trực giao thì dễ hiểu. Đây không là trường hợp phép chiếu trực giao trục lượng học tổng quát. Hình 6. một trong tám mặt. zp = 0 (6-1) . y).5 trình bày phép chiếu cùng kích thước.2. Có tám vị trí. các đường thẳng này không vuông góc với mặt phẳng chiếu. Các quang cảnh như thế được gọi là các phép chiếu trực giao trục lượng học. Hầu hết phép chiếu trục lượng học được dùng là phép chiếu cùng kích thước.bản vẽ. y. đều có kích thước bằng nhau. yp). điểm chiếu (xp.

bên sườn. Các giá trị tọa độ x và y trong mỗi mặt của z bị thay đổi bởi một hệ số tỷ lệ đến giá trị z của mặt phẳng để các góc.2. hợp một góc φ với phương ngang trên mặt phẳng chiếu. lên mặt phẳng z = 0. Sau đó là phép chiếu vuông góc. Trình tự quay được dùng để quan sát hình ảnh trục đo. phép chiếu trục đo đều thường được dùng trong kỹ thuật. góc giữa các trục chính bằng 120o . y)). gọi là phép nghiêng. và trên đỉnh (hoặc mặt trước. 6. Đường này. và chúng ta có thể tính tham số này từ các thành phần liên quan: tanα = trình của phép chiếu xiên 6.2 có thể được viết lại như sau: xp = x + zcosφ / tgα yp = y + z sinφ / tgα Ma trận biến đổi để tạo ra bất kỳ việc chiếu song song có thể được viết như sau :  1  0 [M] =  Lcos φ P   0  z . Chiều dài L là một hàm của tọa độ z. y. có chiều dài L. lúc đó các cạnh song song của đối tượng được rút ngắn lại bằng nhau.2 Phép chiếu trục đo đều Trong các phép chiếu trục đo. Đối với phép chiếu loại này. Hệ số rút ngắn được tính bằng tỷ giữa chiều dài mỗi cạnh trên hình chiếu với chiều dài ban đầu. Thực tế. và dưới đáy) của một đối tượng. z) thành điểm (xp. L. Các chọn lựa thông thường cho góc φ là 30o và 45o. Từ đó. Các phép chiếu xiên được sinh ra với góc chiếu α ≠ 90o. là các góc hiển thị một quang cảnh của mặt trước. Ma trận phép chiếu có cấu trúc tương tự ma trận của phép làm biến dạng theo trục z. bên sườn. các phép quay là phép quay góc θ y quanh trục y. yp) lên mặt phẳng chiếu Phương chiếu có thể định nghĩa bằng việc chọn các giá trị cho góc α và φ.6 Phép chiếu vuông góc của điểm (x. sau đó là phép quay góc θ x quanh trục x.phẳng chiếu (đây là đường nối điểm (xp. các khoảng cách. và các đường song song trong mặt phẳng được chiếu chính xác. Trang 36 . số Giả thiết có một hình chiếu trên mặt phẳng z = 0 trong hệ tọa độ tự nhiên. Chúng ta có thể diễn tả các tọa độ chiếu qua các số hạng x. kết quả của ma trận chiếu này là làm biến dạng mặt phẳng của z và chiếu chúng lên mặt phẳng quan sát. và φ: xp = x + L cosφ yp = y + L sinφ (6-2) Hình 6. các phương L (6-3) 0 0 0  1 0 0 Lsinφ 0 0  0 0 1  (6-4) Một phép chiếu trực giao có thể đạt được khi ở góc chiếu α = 90o. kết hợp 2 phép quay được thực hiện trên đối tượng hình học. như hình vẽ dưới đây. Để tạo hình chiếu trục đo vuông góc đều. yp) với điểm (x. y.

hoặc ba-điểm. y*. z qua phép biến đổi bằng ma trận phép chiếu trục đo . bất kỳ tập hợp các đường thẳng song song nào của đối tượng mà không song song với mặt phẳng chiếu được chiếu thành các đường đồng quy. Hình 6.7 Các quang cảnh phối cảnh của một hình lập phương.Các ma trận quay tương ứng để tạo phép nghiêng được mô tả theo ma trận sau: cosθ y  0 =  sinθ y   0 cosθ y  0 =   sinθ y   0 0 − sinθ y 1 0 0 cosθ y 0 0 sinθ y sinθ x cosθ x − sinθ x cosθ y 0 0 1 0  0 cosθ 0  x 0 0 − sinθ x  1 0 0 − sinθ y cosθ x sinθ x cosθ x cosθ y 0 0 sinθ x cosθ x 0 0 0  0  1 0 0  0  1 [M] = [M R ]θ [M R ]θ y x Để tạo hình chiếu trục đo. do đó sinθ x = 1/ 3 .26 0 . Các phép chiếu phối cảnh được phân loại dựa vào đó để có các phép chiếu : một-điểm. Điểm mà tại đó tập hợp các đường thẳng song song được chiếu xuất hiện hội tụ về đó được gọi là điểm tụ (Điểm ảo). Mỗi tập hợp các đường thẳng song song được chiếu như thế sẽ có một điểm tụ riêng. y. hay θ x = ±35. trở thành x*. hai-điểm. Các đường thẳng song song với mặt phẳng khi chiếu sẽ tạo ra các đường song song. sinθ y = 1/ 2 hay θ y = ±45 6. Trang 37 . phép chiếu vuông góc lên mặt phẳng z = 0 được thực hiện như sau: 1 0 [M] trục đo = [M]  0  0 0 1 0 0 0 0 0 0 0 cosθ y   0 0 =   sinθ y 0   1  0 sinθ y sinθ x cosθ x − sinθ x cosθ y 0 0 0 0 0 0 0  0  1 (6-5) Các véc tơ đơn vị x. z*: x* = [1 0 0 1] [M] trục đo = [ cosθ y sinθ y sinθ x 0 1 ] y* = [0 1 0 1] [M] trục đo = [ 0 cosθ x 0 1] 0 1] z* = [0 0 1 1] [M] trục đo = [ sinθ y − sinθ x cosθ y 0 Có | x*| = |y*| = | z*| .3 Phép chiếu phối cảnh Khi các đối tượng ba chiều đựợc chiếu lên một mặt phẳng dùng các phương trình biến đổi phối cảnh.

Số lượng các điểm tụ chính trong một phép chiếu được xác định bởi số lượng các trục của hệ tọa độ thực cắt mặt phẳng chiếu.7(b). chúng ta chiếu các điểm theo đường thẳng chiếu để các đường này gặp nhau ở tâm chiếu. Hình 6. phép chiếu phối cảnh hai-điểm này chứa cả hai điểm tụ : trên trục x và trên trục z. z’) thể hiện cho bất kỳ điểm nào dọc theo Trang 38 . tâm chiếu trên trục z và có giá trị âm. và các tọa độ (x’. mặt phẳng chiếu có phương song song với mặt xy để chỉ có trục z bị cắt. Các tham số xây dựng các đường chiếu này là : x’ = x – xu y’ = y – yu (6-6) z’ = z – (z + d)u Tham số u lấy giá trị từ 0 đến 1. Kết quả. Phương này tạo ra phép chiếu phối cảnh một-điểm với một điểm tụ trên trục z. Để đạt được phép chiếu phối cảnh của đối tượng ba chiều. cách một khoảng d phía sau mặt phẳng chiếu. Bất kỳ điểm nào cũng có thể được chọn làm tâm của phép chiếu. tuy nhiên việc chọn một điểm dọc theo trục z sẽ làm đơn giản việc tính toán trong các phương trình biến đổi. Với quang cảnh trong hình (c). y’.8 Phép chiếu phối cảnh của điểm P Chúng ta có thể đạt được các phương trình biến đổi cho phép chiếu phối cảnh từ các phương trình tham số mô tả các đường chiếu từ điểm P đến tâm chiếu. Trong hình 6. Trong dưới đây. Hình trên minh họa hình ảnh của các phép chiếu phối cảnh một-điểm và hai-điểm của hình lập phương. mặt phẳng chiếu cắt cả hai trục x và z nhưng không cắt trục y.

z+d z/d + 1 y' = y d 1 =y . đối tượng phải được nhìn thấy nhiều mặt để hiểu rõ hình dạng của đối tượng. Khi u = 0.đường thẳng chiếu. y. và chúng ta có các tọa độ của tâm chiếu (0. với tâm chiếu trên trục z. chúng ta đặt z’ = 0 và tìm ra tham số u : u= z z+d (6-7) Giá trị của tham số u tạo ra giao điểm của đường chiếu với mặt phẳng chiếu tại (x’. 0). Khối vuông quay góc θ quanh trục y và dịch chuyển tịnh tiến theo ma trận trước khi phép chiếu phối cảnh một điểm [M] lên mặt phẳng z = 0. 0. Nói chung. điểm P ở tọa độ (x. có đỉnh phía sau bên dưới đặt tại gốc tọa độ. Để thu được các tọa độ trên mặt phẳng chiếu. Giả thiết có một khối vuông đơn vị. Thế phương trình 6-7 vào phương trình 6-6. z'= 0 z+d z/d + 1 (6-8) Dùng biểu diễn hệ tọa độ thuần nhất ba chiều. Ở đầu mút kia của đường thẳng u =1. y’. chúng ta có thể viết phép biến đổi phối cảnh theo ma trận : 1 0 0 0  0 1 0 0   x y z w = [ x y z 1]  (6-9) h h h 0 0 0 1/d    0 0 0 1  [ ] Hình chiếu phối cảnh một tâm chiếu thì không tạo hình chiếu tương ứng với đối tượng hình học. Nếu các phép tịnh tiến hay phép quay được thực hiện trước phép chiếu phối cảnh một tâm chiếu thì hình ảnh sẽ tốt hơn. d). z). Các tọa độ đỉnh của khối vuông thay đổi theo các phép biến hình sau: cosθ  0 θ [M R ] y [M ] [M] =  tr  sinθ   0 0 − sinθ 1 0 0 cosθ 0 0 0 1 0  0  0  0  1  0 0 1 0 a 0 0 1 b 0 1 0  0  0  0  1  0 0 1 0 0 0 0  0 0   0 − 1/d   0 1  Trang 39 . ta thu được các phương trình biến đổi của phép chiếu phối cảnh như sau : x' = x d 1 =x . như hình dưới đây.

ma trận kết hợp như sau: cosθ  0 [M R ]θ [M R ]φ [M] =  y x  sinθ   0 0 − sinθ 1 0 0 cosθ 0 0 0 1 0 0 0 1 0 0 cos φ sinφ 0 0   0 0 − sinφ cosφ 0 0   1  0 0 0 1  0 0 sinθ cosφ /d  0 .cos θ sin φ  0  0 (6-11) 6.[M]phối cảnh 2 điểm cosθ  0 =  sinθ   0 0 1 0 a 0 sinθ / d   0 0  0 . Trang 40 . Bài 3 Viết chương trình vẽ phối cảnh hình khối cầu.. lăng trụ. Bài 2 Viết chương trình vẽ mặt lưới B – Spline. Gợi ý: Sử dụng thư viện đồ họa Direct X hoặc OpenGL.b / d  (6-10) Nếu khối vuông được quay quanh trục y trước.4 Bài tập áp dụng Bài 1 Viết chương trình vẽ đường cong Bezier.cosθ cosφ / d   0 1  0 1 0 0 0 0  0 0   0 − 1/d   0 1  [M]phối cảnh 3 điểm cosθ sinθ sinφ  0 cos φ =  sinθ .cosθ / d   0 1. . sau đó quanh trục x trước khi áp dụng phép chiếu phối cảnh.sin φ /d   0 .

mặt khuất Một vấn đề cần được quan tâm đến trong việc tạo ra các hình ảnh thực là sự xác định và xóa bỏ các phần của đối tượng hình học mà ta không nhìn thấy được từ một vị trí quan sát. Hai tiếp cận này được gọi là phương pháp không gian đối tượng và phương pháp không gian ảnh. Phương pháp không gian đối tượng xác định các thành phần của đối tượng được Trang 41 . Các thuật toán về đường khuất và mặt khuất dựa vào xử lý trực tiếp định nghĩa đối tượng hay xử lý hình chiếu của các đối tượng đó.1 Khử đường khuất.CHƯƠNG 7 HIỂN THỊ HÌNH ẢNH THẬT 7.

k)(-i . ta xác định tính nhìn thấy của một mặt như sau: tạo một véc tơ ngắm v được xây dựng từ một điểm bất kỳ trên mặt hướng đến điểm nhìn. mặt khuất. tính chất nhìn thấy được của một điểm được quyết định bởi điểm ở vị trí pixel trên mặt phẳng chiếu.5. 7. Cho hình đa diện sau. hãy xác định các mặt nhìn thấy từ vị trí P(5. như ở hình dưới đây. DEC. k) − 1 0 1    Nếu chọn điểm Q bên trong đa diện có tọa độ (0. Tích vô hướng giữa n và AQ là : (i .v là 14. Trong mục này. là phép nhân vô hướng giữa i và n để xác định hướng của pháp tuyến theo quy tắc: Nếu n. Khi đã tìm ra véc tơ pháp tuyến hướng ra ngoài cho các mặt. n > 0 thì mặt được nhìn thấy.2 Đa diện ABCDE Xét mặt phẳng AED. AD =   = (i .5j) = -0. Nó thực hiện với độ chính xác từ dữ liệu mô tả đối tượng. chúng ta khảo sát một vài trong số các giải thuật khử đường khuất. Phép kiểm tra đơn giản được thực hiện để xác định pháp tuyến có hướng ra ngoài hay không. 5j. y. Trong thuật toán không gian ảnh. sau đó tìm véc tơ pháp tuyến n bằng tích có hướng 2 véc tơ nằm trên mặt. j . k là các véc tơ đơn vị trên các trục x.. 5k) . nhưng nó là bước đầu giải quyết vấn đề khử bỏ đường và mặt khuất cho nhiều đối tượng phức tạp.. theo quy tắc bàn tay phải. j. Véc tơ v được thiết lập là AP = (4i . nên AED nhìn thấy từ P.1. Phép lựa chọn mặt sau thực hiện trong không gian đối tượng. Nó chỉ áp dụng cho khối đa diện lồi. 5. 0. Đầu tiên. như trên hình sau. 7.1 Phép lựa chọn mặt sau Phép lựa chọn mặt sau là một cách đơn giản dùng để khử bỏ các mặt phía sau đối tượng so với người quan sát. 0.nhìn thấy bằng cách sử dụng các quan hệ hình học và không gian. trong khi CEB và ABCD không nhìn thấy. Phép nhân v. Trường hợp đó thì hướng của pháp tuyến luôn chỉ bên ngoài đa diện. véc tơ pháp tuyến của mặt phẳng là tích có hướng AE. 0. chọn véc tơ i hướng đến điểm bên trong đa diện.5j) . Hình 7. nên hướng của n đi từ trong đa diện ra bên ngoài.1. thì véc tơ AQ = (-i . Tích vô hướng n. 5) nếu biết i. j . nếu không thì mặt bị che khuất.2 Phép kiểm tra minimax Trang 42 . Cuối cùng. Việc kiểm tra không cần thiết nếu mọi mặt được mô tả bằng các đỉnh có thứ tự.5 . AD : j k i − 1 1 0  N = AE. z. Kỹ thuật này sử dụng các pháp tuyến hướng ra ngoài mặt một đa diện trong quá trình thực hiện. 0). ngược lại thì pháp tuyến hướng ra bên ngoài đa diện.i > 0 thì pháp tuyến hướng vào trong. Hoàn toàn tương tự cho các mặt BEA.

đa giác A không đè lên B trong hình bên trái vì bất phương trình 1 đúng. Ở vị trí (x. Phép kiểm tra áp dụng cho những điểm còn lại của đa giác. để kiểm tra hai cạnh hoặc mặt có chồng lên nhau không. Hình 7. y) trong hệ quan sát bàn tay trái. Nếu vượt qua được phép kiểm tra. Phép kiểm tra minimax là phép thử một điểm nằm trong mặt hay khối bao không. các cạnh hay các mặt cũng không giao nhau.3 Phép kiểm tra nằm trong Phép kiểm tra nằm trong kiểm tra các đỉnh của một đa giác này nằm trong đa giác kia không. y). xBmax < xAmin . những giá trị max. Hai vùng đệm được cần để cài đặt phương pháp này. thuật toán này kiểm tra tính nhìn thấy được của các mặt mỗi lần một điểm. Phép kiểm tra cũng được mở rộng cho tọa độ z. lưu giữ các giá trị độ sáng cho mỗi vị trí (x. min của tọa độ đỉnh đa giác được so sánh theo các bất phương trình: xAmax < xBmin . với sự quan tâm đến vị trí (x.y) trên mặt phẳng quan sát. trong khi đa giác A đè lên đa giác B vì các bất phương trình đều sai. yAmax < yBmin . yBmax < yAmin . Qua phép thử. Với mỗi vị trí pixel (x.Đối tượng hình học được chiếu lên mặt phẳng chiếu. sẽ có những bề mặt của đối tượng giao nhau. Nó sử dụng trong không gian đối tượng hoặc trong không gian ảnh. xác định được đa giác này nằm trong đa giác kia không. Các góc tạo bởi các đoạn này sẽ được tính tổng và kiểm tra theo cách sau: • Nếu tổng các góc bằng 0 thì P nằm ngoài đa giác • Nếu tổng các góc bằng 360 thì P nằm trong đa giác. y) của các mặt được so sánh. mặt S1 có giá độ sâu nhỏ nhất và vì thế được nhìn thấy ở vị trí đó. 7. Xét một điểm P nào đó đối với đa giác. Một cách cơ bản. Trang 43 .3 trình bày ba mặt có độ sâu khác nhau. y) được lưu. Nếu phép minimax xử lý không đúng cho một cặp đa giác thì có thể là một trong hai đa giác bao quanh cái kia. Mặt S1 có giá trị z nhỏ nhất ở vị trí này vì vậy giá trị độ sáng ở (x.4 Giải thuật vùng đệm độ sâu Một tiếp cận không gian ảnh được dùng phổ biến để khử mặt khuất là giải thuật vùng đệm độ sâu. Các đoạn thẳng vẽ từ P đến các đỉnh của đa giác theo thứ tự.1. Một vùng đệm độ sâu được dùng để lưu trữ các giá trị z cho mỗi vị trí (x. Xét các đa giác ở hình trên. Phần giao nhau sẽ không cần vẽ lại nhiều lần để tăng tốc độ thực hiện. Vùng đệm thứ hai là vùng đệm làm tươi (hay còn gọi là vùng đệm khung). 7.1. cùng chiều hay ngược chiều kim đồng hồ. y). điểm P hoặc nằm trong hay nằm ngoài đa giác. mặt nào có giá trị tọa độ z nhỏ nhất ở vị trí pixel đó thì nhìn thấy được. Nếu một bất phương trình đúng thì hai đa giác không giao nhau.

Nếu z < depth(x. hoặc giá trị z. y) dọc theo theo đường quét có được như sau : Hình 7.y) được xác định là z.4 (−A(x + 1) − By − D) z' = y) xác C hoặc z' = z − A C Trang 44 . depth(x. Hình 7. và các giá trị y giữa hai đường quét cũng sai khác nhau 1. giá trị z mới sẽ được lưu. ở mỗi vị trí (x. y) = i . y) trên mặt.4). Giả sử rằng một không gian chiếu được ánh xạ vào một không gian quan sát hình hộp chuẩn.Phương pháp này có thể được thực hiện hiệu quả trong các hệ tọa độ chuẩn. khi đó độ sâu z’ của vị trí kế tiếp (x+1. vùng đệm độ sâu chứa các giá trị z của các mặt nhìn thấy được và vùng đệm làm tươi chỉ chứa các giá trị độ sáng của các mặt nhìn thấy được đó. Tính giá trị z cho mỗi vị trí (x. ánh xạ của mỗi mặt lên mặt phẳng quan sát là một phép chiếu trực giao. dọc theo theo đường quét có được từ phương trình trên như sau: Với mỗi đường quét bất kỳ. với i là giá trị độ sáng trên mặt ở vị trí (x. y)= z và refresh(x. tất cả các vị trí trong vùng đệm độ sâu được đặt giá trị 1 (độ sâu lớn nhất). y) thì đặt lại depth(x. y) được tính từ phương trình của mỗi mặt: ( −Ax − By − D) z= C Vớ i mỗi đường quét bất kỳ (xem hình 7. Khởi tạo vùng đệm độ sâu và vùng đệm làm tươi để với tất cả các vị trí (x. y). Đối với mỗi vị trí trên mỗi mặt. Nếu độ sâu của vị trí (x.y) được định là z. và vùng đệm làm tươi được khởi tạo giá trị của độ sáng nền. Chúng ta có thể tổng kết các bước của thuật toán vùng đệm độ sâu như sau: 1. y) = background. Nếu giá trị z vừa được tính xong nhỏ hơn các giá trị trước đó. Các giá trị độ sâu cho một vị trí (x. Khi quá trình này được hoàn thành cho tất cả các mặt. 2. a. các tọa độ x trên cùng đường quét sai khác nhau 1. y) =1 và refresh(x. Giá trị z vừa được tính xong sẽ được so sánh với các giá trị lưu trữ trước đó trong vùng đệm độ sâu ở vị trí đó. y). các tọa độ x trên cùng đường quét sai khác nhau 1. Độ sâu của các điểm trên bề mặt của một đa giác được tính từ phương trình mặt phẳng. và các giá trị y giữa hai đường quét cũng sai khác nhau 1. Trong bước cuối cùng. Mỗi lần một đường quét tính độ sâu.y). điểm không được nhìn thấy. so sánh các giá trị độ sâu với các giá trị độ sâu được lưu trước đó trong vùng đệm độ sâu để xác định tính chất nhìn thấy được. khi đó độ sâu z’ của vị trí kế tiếp (x+1. với các giá trị độ sâu thay đổi từ 0 đến 1. Ban đầu. nếu z không nhỏ hơn giá trị trong vùng đệm độ sâu ở vị trí đó. và độ sáng của mặt ở vị trí đó cũng được cập nhật lại vào vị trí tương ứng trong vùng đệm làm tươi. b.3 Mỗi mặt (đã được lập danh sách trong các bảng đa giác sau đó được xử lý. Nếu độ sâu của vị trí (x.

và nó không cần sắp xếp các mặt trong ảnh. bổ sung giá trị không đổi cường ánh sáng môi trường trong các phép tính. cường độ. hình bóng của mọi điểm trên bề mặt xác định bằng các yếu tố : • Mô tả các nguồn sáng • • Đặc điểm bề mặt Vị trí tương đối của nguồn sáng quan hệ với bề mặt Ánh sáng cần được mô tả chi tiết về nguồn sáng như vị trí. như hình dưới đây. vì vậy giá trị độ sâu của điểm kế tiếp trên cùng đường quét có được từ giá trị trước đó với một phép trừ. các mô hình được tô bóng phải xác định mối quan hệ giữa nguồn sáng và bề mặt tô. vùng đệm được dùng lại cho phần kế tiếp. Sự tán xạ ánh sáng dễ tính toán nên nó được kết hợp trong đa số các mô hình đồ họa. Ánh sáng tỏa cung cấp ánh sáng từ một điểm theo các hướng xác định. giá trị độ sâu được tính từ phương trình mặt phẳng như sau : z' ' = (−Ax − B(y − 1) − D) C hoặc z' ' = z + B C Độ sâu z được cộng thêm tỷ số B/C. Góc tạo θ giữa tia tới và véc tơ pháp tuyến đơn vị tại điểm tới trên bề mặt được dùng cho phép tính. nhưng chúng chưa đầy đủ nếu biểu diễn đối tượng như thật. Nhưng nó cần đến một vùng đệm thứ hai đó là vùng đệm làm tươi. Tia tới Trang 45 . với mỗi vị trí cần đủ bit để lưu giữ các tọa độ z tăng. Kết quả tạo ra của mô hình được tô bóng là giá trị cường độ cho một loạt điểm trên bề mặt đối tượng. Phương pháp vùng đệm độ sâu thì dễ dàng để cài đặt. Khi tô bóng bề mặt của đối tượng. Nó tạo ra mặt nhẵn mờ đục.Tỷ số A/C không đổi với mỗi mặt. Cách thức ánh sáng phản chiếu từ bề mặt là hệ số quan trọng khi tô. và nó có thể cung cấp các thông tin mà bản vẽ các đường. nơi chúng chiếu vào… Nói chung. y) có độ sâu z. có 2 loại ánh sáng là ánh sáng tỏa (point light) và ánh sáng lan truyền (ambient light). Ánh sáng môi trường được cung cấp theo các hướng. Các bề mặt thật phản chiếu ánh sáng phối hợp hai hiệu ứng trên. Ngược lại. Hiệu ứng của các nguồn sáng tỏa phải được xem xét. không quan tâm đến nguồn sáng. tạo ra một mặt sáng chói như tấm gương. mặt không giải quyết được. Để tính giá trị cường độ ánh sáng. do đó độ sáng trên mặt là như nhau khi nhìn từ các góc độ. Một cách để giảm bớt không gian lưu giữ cần thiết là tại mỗi thời điểm chỉ xử lý một phần của ảnh. dùng một vùng độ sâu nhỏ hơn. Sau mỗi phần ảnh được xử lý xong. Khi đó ở vị trí (x. Một hệ thống với độ phân giải 1024 x 1024 có thể cần hơn một triệu vị trí trong vùng đệm độ sâu. Chúng ta thu được các giá trị độ sâu giữa các đường quét theo cách tương tự. 7. xét tia tới từ nguồn tới bề mặt. Hình ảnh màu được tô bóng là mục đích cần thu được. Sự tán xạ ánh sáng xuất hiện khi ánh sáng phát ra như nhau theo mọi hướng. sự phản chiếu gương phản chiếu ánh sáng chỉ theo một hướng. Một lần nữa giả sử rằng vị trí (x.2 Phép tô bóng Mặc dù các bản vẽ được dùng trong các ứng dụng kỹ thuật. Hình ảnh nó tạo ra có phần thô vì đối tượng được chiếu sáng từ một vị trí. y-1) trên đường quét ngay bên dưới. Trong việc phát triển nguồn sáng.

AC (i. 1. Cho 3 điểm A(0. j . 3j. C(0. Hàm cosin của góc θ tìm theo tích vô hướng giữa hai véc tơ đơn vị i và n . 0. không hoàn toàn giống như thật. 0. bề mặt đang xem xét càng hướng tới nguồn. 0). 0.1 Kỹ thuật tô bóng Gouraud liên quan đến mọi đỉnh đa giác. 1). j . AC | (i. Để tính cường độ sáng tại các đỉnh chung của nhiều đa giác. nhưng lại thực hiện tính nhanh. i) Góc θ càng nhỏ.(0. do đó kỹ thuật tô bóng bề mặt được sử dụng để kiểm tra sơ bộ khi thiết kế. j . véc tơ pháp tuyến n = AB. − k) | 3 Cường độ tô bóng là I = 9. k ) = = AB. 4k) . sẽ xác định như sau: I = I s k d cosθ .− k) (i. Is là cường độ của nguồn và kd là hệ số phản xạ của bề mặt trong khoảng (0. Hãy xác định cường độ tô với hệ số phản xạ 0. B(1.25.25. Trong đó. − k).n) = 2. − k).n θ i Kỹ thuật tô bóng bề mặt được nêu ra như sau: Giả thiết cường độ ánh sáng phản chiếu không phụ thuộc vị trí quan sát. Véc tơ đơn vị i = ( 2 i.(0 . 0. do đó I = I s k d (n. Đặc điểm phép tô bóng tạo cường độ sáng giống nhau cho mọi điểm trên bề mặt. 4k) 3 3 . 3j. cường độ sáng tính toán tại mỗi điểm. 0) và cường độ nguồn sáng là 9 đặt tại khoảng cách xa theo hướng ( 2 i.0. tạo ra hình ảnh gồm nhiều ô sáng. pháp tuyến của tất cả các đa giác được tính trung bình trước khi tính toán cường độ: n average = ∑n ∑n i i Trang 46 . 1). . cường độ sáng tại các đỉnh được pha trộn và làm mịn trên bề mặt.(i.

IB = 9. IB = 6. ID = 4. B(4. 0. F(1. D(0. 1). kỹ thuật tạo mô hình tô bóng hiệu quả hơn. B(1. 0) . Sau khi cường độ tại các đỉnh đã tính. Cho hình thang ABCD như hình vẽ dưới đây. 1). Trang 47 . 2) theo phép tô bóng Gouroud.Trong đó. 0). áp dụng phép nội suy tuyến tính cho cường độ các đỉnh để tô bóng các đa giác. C(1.0 . ni là pháp tuyến đơn vị của các mặt có chung các đỉnh. ID = 9. y trên dòng quét đi qua P: I1 = (I B −I A ) (y A − y P ) (6 − 5) + IA = + 5 = 5. 2). 4. 0) .5 − 5.3 Bài tập áp dụng Bài 1 Cho mặt phẳng tạo bởi 3 điểm A(1. Bài 2 Cho mặt phẳng chữ nhật tạo bởi A(0. biết cường độ trung bình tại bốn đỉnh là IA = 5. IC = 4. Sử dụng chung với giải thuật quét dòng. xác định tính nhìn thấy giữa 2 phần mặt phẳng. Nếu sử dụng phép kiểm tra minmax. 1).5.0 .0 . Tính cường độ sáng tại P(0.0 Sử dụng phép nội suy tuyến tính theo AB. 0.5 (y A − y B ) 2 (y D − y P ) (4 − 9) + ID = + 9 = 6. E(2. CD để tính giá trị cường độ cho điểm x. Cho cường độ sáng trung bình tại mỗi đỉnh là I A = 8. 2) và mặt phẳng tạo bởi 3 điểm D(3. 0. 0. 6.5 (y D − y C ) 2 I 2 = (I C −I D ) I P = (I 2 −I1 ) (x P − x 1 ) (6. IC = 2 . 0.5)(5 − 1) + I1 = + 5. 1) .5 = 6 (x 2 − x 1 ) (9 − 1) 7. C(2. 0). hãy tìm cường độ tại điểm P(5.5) theo phép tô bóng Gouraud.

Pauline Baker. F. Computer graphics. Prentice-Hall Inc. Computer Graphics. 1990 ĐỀ THI THAM KHẢO Các đề thi có thời gian làm bài 60 phút Đề số 1 Trang 48 .TÀI LIỆU THAM KHẢO Đặng Văn Đức. Viện Công nghệ thông tin.. Kỹ thuật đồ họa máy tính. 1986.Hill. Englewood Cliffs. Donald Hearn. New Jersey. M. 2002.S.

trục tung là 3. Hãy tìm tọa độ mới của các điểm trên qua biến đổi: a. B(67. B(25. 0). C(-9. 13) và B(10. B(7. Câu 2 Hãy tìm các hệ số p và tọa độ các điểm sẽ nảy sinh của đoạn thẳng được vẽ theo giải thuật bresenham. 7). b. C có tọa độ lần lượt là A(0. 80) √ Đoạn thẳng CD: C(47. 0). 35). Tìm ma trận biến đổi của 2 phép tịnh tiến và phép đối xứng trên. b. Hãy tìm tọa độ mới của các điểm trên qua biến đổi: a. -81). Câu 2 Hãy tìm hệ số p và tọa độ của 10 điểm sẽ nảy sinh đầu tiên của cung 1/8 đường tròn được vẽ theo giải thuật midpoint. Hãy tìm tọa độ mới của các điểm trên qua biến đổi: a. lên tung độ là 2. 29). Đề số 3 Câu 1 Cho 3 điểm A. 12. Tìm ma trận biến đổi của phép đối xứng qua đường y = x. C(40. D(55. Phép tịnh tiến với hệ số tịnh tiến theo trục hoành là 44. Hãy tìm tọa độ mới của các điểm trên qua biến đổi: a. B(-37. 125). Phép quay góc 45o . 4). 10) và B(15. B. Áp dụng giải thuật Cohen-Sutherland thực hiện cắt xén các đoạn thẳng sau với biên cửa sổ: √ Đoạn thẳng AB: A(4. b. -46). 0). C(-40. Phép biến dạng theo trục z. Phép đối xứng qua trục tung. 24). 40). Câu 2 Hãy tìm hệ số p và tọa độ của 32 điểm sẽ nảy sinh đầu tiên của đường tròn được vẽ theo giải thuật midpoint. A(50. Phép đối xứng qua trục hoành.Câu 1 Cho 3 điểm A. Đề số 5 Câu 1 Cho 3 điểm A. C có tọa độ lần lượt là A(43. 9). -34). C có tọa độ lần lượt là A(43. B. 29). F(0. 18). c. Đề số 2 Câu 1 Cho hệ 3 điểm A. Câu 2 Hãy tìm các hệ số p và tọa độ các điểm sẽ nảy sinh của đoạn thẳng được vẽ theo giải thuật midpoint. 1. B(25. trục tung là 2. B. 22). -67). B. Đề số 4 Câu 1 Cho 3 điểm A. 15). b. C(-9. nếu biết đường tròn có tâm (10. Phép biến đổi tỷ lệ với hệ số tỷ lệ theo trục hoành là 3. nếu biết đoạn thẳng đi qua hai điểm là A(5. -12) và bán kính 60. C có tọa độ lần lượt là A(0. C(-40. 76) và điểm dưới phải có tọa độ (60. Tìm ma trận biến đổi của 2 phép đối xứng và phép biến đổi tỷ lệ trên. -16. hệ số biến dạng tác động lên hoành độ là 3. nếu biết đoạn thẳng đi qua hai điểm là A(0. trục tung là -81. -67). Phép biến đổi tỷ lệ với hệ số tỷ lệ theo trục hoành là 2. trục tung là 1. b. B. Hãy tìm tọa độ mới của các điểm trên qua biến đổi: a. Phép biến dạng với hệ số biến dạng theo trục hoành là 4. c. nếu biết đường tròn có tâm (-30. 3) √ Đoạn thẳng EF: E(-10. -25) và bán kính 90. C có tọa độ lần lượt là A(0. 3) Đề số 6 Trang 49 . -34). ngược chiều kim đồng hồ quanh gốc tọa độ. Phép quay góc 60o . ngược chiều kim đồng hồ quanh gốc tọa độ. Câu 2 Cho cửa sổ giới hạn bởi điểm trên trái có tọa độ (10.

20) và điểm dưới phải có tọa độ (-12. 15) và điểm dưới phải có tọa độ (-10. 4. Áp dụng giải thuật Cohen-Sutherland thực hiện cắt xén các đoạn thẳng sau với biên cửa sổ: √ Đoạn thẳng AB: A(24. Câu 2 Cho cửa sổ giới hạn bởi điểm trên trái có tọa độ (4. trục z là 1. C(0. Cho tam giác ABC xác định trong hệ tọa độ như sau: A(14. 29). 1. -2). b. C có tọa độ lần lượt là A(-1. 34). 0. Phép biến đổi tỷ lệ. -6. B(40. B(50. 0. 90) √ Đoạn thẳng CD: C(38. -39). Hãy tìm tọa độ mới của các điểm trên qua biến đổi: a. hệ số biến đổi theo trục x là 1. b. trục z là 2. Phép biến đổi tỷ lệ. -18). -3). C(47. trục z là 30. C có` tọa độ lần lượt là A(0. B. 24). 18). C có tọa độ lần lượt là A(1. B. b. Hãy tìm tọa độ mới của các điểm trên qua biến đổi: a. B(7. 39). 8). -30). Tìm ma trận biến đổi của phép đối xứng qua đường y = -x. D(55. Tìm ma trận biến đổi của phép đối xứng qua đường y = x. Câu 2 Cho cửa sổ ở hệ tọa độ thực giới hạn bởi điểm trên trái có tọa độ (20. 50) và điểm dưới phải có tọa độ (60. C(4. Phép tịnh tiến. 35). 7. -35). Tìm tọa độ mới của tam giác trong cửa sổ quan sát. cửa sổ quan sát giới hạn bởi điểm trên trái có tọa độ (-15. 29). C(-9. C(47. trục y là 3. 39). 4). 80) và điểm dưới phải có tọa độ (50. B(16. Tìm tọa độ mới của tam giác trong cửa sổ quan sát. 29). -16. Câu 2 Cho cửa sổ ở hệ tọa độ thực giới hạn bởi điểm trên trái có tọa độ (10. 24). Đề số 8 Câu 1 Cho 3 điểm A. B.Câu 1 Cho 3 điểm A. Trang 50 . 25). 76) và điểm dưới phải có tọa độ (60. 3) Đề số 7 Câu 1 Cho 3 điểm A. 0). F(0. Tìm ma trận biến đổi của phép đối xứng qua đường y = -x. 12. -6. Hãy tìm tọa độ mới của các điểm trên qua biến đổi: a. trục y là 3. 9). 0) √ Đoạn thẳng EF: E(-10. Cho tam giác ABC xác định trong hệ tọa độ như sau: A(14. B(50. -9). hệ số tịnh tiến theo trục x là 10. hệ số biến đổi theo trục x là 2. cửa sổ quan sát giới hạn bởi điểm trên trái có tọa độ (-15. 35). trục y là -15. B(6.

Sign up to vote on this title
UsefulNot useful