(Hay) -30. Tập BG Đồ Họa Máy Tính

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 227

Đồ họa máy tính

MỤC LỤC
Chƣơng 1 TỔNG QUAN VỀ ĐỒ HOẠ MÁY TÍNH ..........................................1
1.1. Các khái niệm tổng quan của kỹ thuật đồ họa máy tính ............................1
1.1.1. Kỹ thuật đồ họa máy tính ....................................................................1
1.1.2.Kỹ thuật đồ họa tƣơng tác ....................................................................1
1.2. Các kỹ thuật đồ họa ...................................................................................2
1.2.1.Kỹ thuật đồ hoạ điểm ...........................................................................3
1.2.2.Kỹ thuật đồ hoạ Vecto .........................................................................4
1.2.3. Sự phát triển của kỹ thuật hiển thị ......................................................5
1.3. Phân loại các lĩnh vực của kỹ thuật đồ họa ..............................................7
1.3.1. Phân loại theo mục đích xử lý dữ liệu ................................................7
1.3.2. Phân loại theo hệ tọa độ dùng trong kỹ thuật đồ họa ..........................8
1.4.Giới thiệu một số ứng dụng của kỹ thuật đồ họa ........................................8
1.4.1. Hỗ trợ thiết kế .....................................................................................8
1.4.2. Biểu diễn thông tin ..............................................................................9
1.4.3. Lĩnh vực giải trí, nghệ thuật ................................................................9
1.4.4. Điều khiển các quá trình sản xuất .....................................................10
1.4.5. Lĩnh vực bản đồ ................................................................................10
1.4.5. Giáo dục và đào tạo ...........................................................................10
1.4.6. Giao tiếp giữa máy tính và ngƣời dùng ............................................11
1.5. Hệ đồ họa tƣơng tác .................................................................................12
1.5.1. Mô hình hệ tọa độ tƣơng tác .............................................................12
1.5.2. Các thành phần của hệ đồ họa tƣơng tác ..........................................12
1.6. Phần cứng đồ họa .....................................................................................15
1.6.1. Các thành phần phần cứng của hệ tọa độ tƣơng tác ..........................15
1.6.2. Các thiết bị hiển thị (thiết bị ra dữ liệu) ............................................15
1.6.3. Các thiết bị vào dữ liệu .....................................................................19
CÂU HỎI CHƢƠNG 1 ..................................................................................20
Chƣơng 2CÁC GIẢI THUẬT XÂY DỰNG CÁC THỰC THỂ CƠ SỞ ..........22
2.1 Giới thiệu ..................................................................................................22
2.2. Các đối tƣợng đồ họa cơ sở .....................................................................23

i
Đồ họa máy tính
2.2.1 Điểm................................................................................................... 23
2.2.2. Đƣờng thẳng, đƣờng gấp khúc ......................................................... 24
2.2.3 Vùng tô .............................................................................................. 25
2.2.4 Kí tự, chuỗi kí tự ................................................................................ 26
2.3. Giải thuật sinh đƣờng thẳng .................................................................... 27
2.3.1 Nguyên lý chung ................................................................................ 27
2.3.2 Thuật toán DDA (Digital Differential Analyzer) .............................. 28
2.3.3 Giải thuật Bresenham ........................................................................ 31
2.3.4 Thuật toán MidPoint .......................................................................... 35
2.4. Giải thuật sinh đƣờng tròn ....................................................................... 37
2.4.1 Nguyên lý chung ................................................................................ 37
2.4.2 Thuật toán MidPoint .......................................................................... 38
2.4.3 Giải thuật Bresenham ........................................................................ 43
2.5. Giải thuật sinh elip................................................................................... 45
2.5.1. Giải thuật Midpoint ........................................................................... 45
2.5.2. Giải thuật Bresenham ....................................................................... 48
2.6. Giải thuật sinh đa giác ............................................................................. 50
2.7. Giải thuật sinh ký tự ................................................................................ 51
CÂU HỎI VÀ BÀI TẬP CHƢƠNG 2 ........................................................... 55
Hƣớng dẫn giải bài tập ................................................................................... 61
Chƣơng 3CÁC GIẢI THUẬT ĐỒ HOẠ CƠ SỞ .............................................. 64
3.1. Hệ toạ độ và mô hình chuyển đổi ............................................................ 64
3.1.1. Các hệ thống tọa độ trong đồ họa ..................................................... 64
3.1.2. Phép chuyển đổi ................................................................................ 65
3.2. Các giải thuật xén tỉa ............................................................................... 66
3.2.1. Khái niệm .......................................................................................... 66
3.2.2. Các giải thuật xén tỉa đoạn thẳng ...................................................... 66
3.2.3. Giải thuật Hodgman .......................................................................... 76
3.3. Các giải thuật tô miền kín ........................................................................ 77
3.3.1. Giải thuật đƣờng biên ....................................................................... 77
3.3.2. Giải thuật dòng quét cho việc tô màu vùng ...................................... 78

ii
Đồ họa máy tính
CÂU HỎI VÀ BÀI TẬP CHƢƠNG 3 ...........................................................82
Hƣớng dẫn giải bài tập ....................................................................................88
Chƣơng 4CÁC PHÉP BIẾN ĐỔI HÌNH HỌC 2 CHIỀU ..................................92
4.1.Phƣơng pháp biểu diễn đối tƣợng trong không gian hai chiều .................92
4.2. Phép biến đổi Afine 2D ...........................................................................93
4.3. Các phép biến đổi hình học cơ sở ............................................................93
4.3.1. Phép tịnh tiến ....................................................................................93
4.3.2. Phép biến đổi tỉ lệ..............................................................................94
4.3.2. Phép quay ..........................................................................................95
4.3.3. Phép đối xứng ...................................................................................96
4.3.4. Phép biến dạng ..................................................................................96
4.4. Hệ tọa độ thuần nhất và các phép biến đổi ..............................................97
4.4.1. Hệ tọa độ thuần nhất .........................................................................97
4.4.2. Biểu diễn các phép biến đổi dƣới dạng tọa độ thuần nhất ................98
4.4.3. Phép biến đổi ngƣợc..........................................................................99
4.5. Kết hợp các phép biến đổi .....................................................................100
4.5.1. Kết hợp các phép tịnh tiến ..............................................................100
4.5.2. Kết hợp các phép tỉ lệ .....................................................................102
4.5.3. Kết hợp các phép quay ....................................................................104
4.5.4. Phép quay có tâm quay là điểm bất kỳ ...........................................104
4.5.5. Phép tỉ lệ giữ nguyên điểm chốt .....................................................105
4.6. Phép biến đổi giữa các hệ tọa độ ...........................................................106
CÂU HỎI VÀ BÀI TẬP CHƢƠNG 4 .........................................................108
Hƣớng dẫn giải bài tập ..................................................................................113
Chƣơng 5CÁC PHÉP BIẾN ĐỔI HÌNH HỌC 3 CHIỀU ................................123
5.1. Giới thiệu đồ họa ba chiều .....................................................................123
5.1.1. Tổng quan về đồ họa ba chiều ........................................................123
5.1.2. Sơ lƣợc về quy trình hiển thị ...........................................................124
5.1.3. Mô hình khung nối kết (Wireframe Model) ...................................126
5.2. Một số khái niệm ...................................................................................128
5.2.1. Phƣơng pháp biểu diễn điểm trong không gian 3 chiều. ................128

iii
Đồ họa máy tính
5.2.2. Phƣơng pháp biểu diễn sử dụng hệ tọa độ đồng nhất. .................... 129
5.2.3. Công thức biến đổi Affine. ............................................................. 130
5.2.4. Các hệ trục tọa độ theo quy ƣớc bàn tay phải và bàn tay trái ......... 131
5.3. Các phép biến đổi hình học 3 chiều cơ sở ............................................. 131
5.3.1. Phép tịnh tiến .................................................................................. 131
5.3.2. Phép biến đổi tỉ lệ ........................................................................... 132
5.3.3. Phép biến dạng ................................................................................ 133
5.3.4. Phép quay ........................................................................................ 134
5.3.5.Phép đối xứng. ................................................................................. 139
5.3.6 Kết hợp các phép biến đổi affine ba chiều....................................... 144
5.4. Các phép chiếu của vật thể trong không gian lên mặt phẳng ................ 144
5.4.1. Định nghĩa chung ............................................................................ 144
5.4.2. Phân loại phép chiếu ....................................................................... 145
5.4.3. Phép chiếu song song ...................................................................... 146
5.4.4. Phép chiếu phối cảnh (Perspective Projection) .............................. 154
5.5. Phép biến đổi mô hình và phép biến đổi hệ trục toạ độ ........................ 158
CÂU HỎI VÀ BÀI TẬP CHƢƠNG 5 ............................................................. 160
Hƣớng dẫn giải bài tập ................................................................................. 168
Chƣơng 6MÀU SẮC TRONG ĐỒ HỌA ........................................................ 175
6.1. Ánh sáng đơn sắc ................................................................................... 175
6.1.1. Cƣờng độ sáng và cách tính ............................................................ 175
6.1.2. Hiệu chỉnh Gama ............................................................................ 176
6.2. Lý thuyết màu sắc trong đồ họa ............................................................ 182
6.2.1. Cảm nhận màu sắc .......................................................................... 182
6.2.2. Yếu tố vật lý .................................................................................... 184
6.2.3. Biểu đồ màu CIE............................................................................. 185
6.3. Giới thiệu về các hệ màu trong màn hình đồ họa .................................. 189
6.3.1. Mô hình màu RGB .......................................................................... 189
6.3.2.Mô hình màu CMY .......................................................................... 192
6.3.3. Mô hình màu YIQ ........................................................................... 193
6.3.4. Mô hình màu HSV .......................................................................... 194

iv
Đồ họa máy tính
6.3.5. Mô hình màu HLS...........................................................................196
6.3.6. Chuyển đổi giữa các hệ màu ...........................................................197
CÂU HỎI VÀ BÀI TẬP CHƢƠNG 6 .............................................................215
Hƣớng dẫn giải bài tập ..................................................................................220

v
Đồ họa máy tính

Chƣơng 1TỔNG QUAN VỀ ĐỒ HOẠ MÁY TÍNH


1.1. Các khái niệm tổng quan của kỹ thuật đồ họa máy tính

Đồ họa máy tính là tất cả những gì liên quan đến việc sử dụng máy tính để phát
sinh ra hình ảnh. Các vấn đề liên quan tới công việc này bao gồm: tạo, lƣu trữ, thao tác
trên các mô hình (các mô tả hình học của đối tƣợng) và các ảnh.
1.1.1. Kỹ thuật đồ họa máy tính

Kỹ thuật đồ hoạ máy tính (Computer Graphics) có thể định nghĩa nhƣ một lĩnh
vực của công nghệ thông tin mà ở đó nghiên cứu, xây dựng và tập hợp các công cụ
(mô hình lý thuyết và phần mềm) khác nhau để kiến tạo xây dựng, lƣu trữ và xử lý các
mô hình (model) và hình ảnh (image) của đối tƣợng, sự vật hiện tƣợng khác nhau
trong cuộc sống, sản xuất và nghiên cứu. Các mô hình và hình ảnh này có thể là các
kết quả thu đƣợc từ những lĩnh vực khác nhau của nhiều ngành nghề khoa học (vật lý,
toán học, thiên văn học...) và bao trùm nhiều thể loại nhƣ: cấu trúc phân tử, cấu trúc
sinh học, mô hình vũ trụ...

Thuật ngữ kỹ thuật đồ hoạ máy tính đƣợc đề xuất bởi nhà khoa học ngƣời Mỹ
William Fetter vào năm 1960. Khi đó ông đang nghiên cứu xây dựng mô hình buồng
lái máy bay cho hãng Boeing của Mỹ. William Fetter đã dựa trên các hình ảnh ba
chiều của mô hình ngƣời phi công trong buồng lái máy bay để xây dựng nên một mô
hình tối ƣu cho buồng lái máy bay Boeing. Đây là phƣơng pháp nghiên cứu rất mới và
có những tính năng vƣợt trội hơn tất cả những phƣơng pháp nghiên cứu xây dựng mô
hình buồng lái máy bay khác trƣớc đó đƣợc áp dụng trong hãng Boeing. Phƣơng pháp
này cho phép nhà thiết kế quan sát một cách trực quan vị trí của ngƣời lái trong
khoang buồng lái. William Fetter đã đặt tên cho phƣơng pháp của mình là Computer
Graphics.

1.1.2.Kỹ thuật đồ họa tƣơng tác

Cũng nhƣ mọi lĩnh vực khác trong công nghệ thông tin, một hệ thống sử dụng
kỹ thuật đồ hoạ tƣơng tác là một hệ thống xử lý thông tin bao gồm ba thành phần với
các thao tác tƣơng ứng:
 Nhập (vào) dữ liệu: thông qua các thiết bị vào dữ liệu nhƣ chuột, máy quét, bàn
phím ...
 Xử lý và lƣu trữ dữ liệu
 Hiển thị/ kết xuất kết quả: thông qua các thiết bị nhƣ màn hình, máy in ...

1
Đồ họa máy tính
Ngoài những đặc thù chung đã đƣợc liệt kê ở trên, hệ thống kỹ thuật đồ hoạ
tƣơng tác còn có một đặc điểm: trong hệ thống này, các thông tin và dữ liệu đặc trƣng
đƣợc hiển thị trên màn hình một cách trực quan và ngƣời sử dụng có thể quan sát,
theo dõi, thay đổi giá trị hoặc khuôn dạng của chúng một cách tƣơng tác (interactive)
và ngay lập tức những thay đổi này đƣợc hệ thống ghi nhận và xử lý . Kết quả của sự
thay đổi sẽ đƣợc hệ thống xử lý ngay trên các mô hình, cấu trúc hoặc hình ảnh của các
đối tƣợng và hiển thị chúng ngay trên màn hình ngƣời sử dụng mong muốn.

Nhập dữ liệu Xử lý lƣu trữ Hiển thị kết quả

USER

Hình 1.1 Mô hình chung của hệ đồ họa tương tác

Nhƣ trên mô hình chung của một hệ thống sử dụng kỹ thuật đồ hoạ tƣơng tác,
ngƣời sử dụng có khả năng giao tiếp tƣơng tác với hệ thống ở cả ba giai đoạn trong
quá trình xử lý thông tin.

Hệ thống đồ hoạ tƣơng tác đầu tiên đƣợc thiết kế và xây dựng bởi Ivan
Sutherland năm 1963 mang tên Sketchpad. Hệ thống này đƣợc dùng để thiết kế mạch
điện và bao gồm những thành phần sau:
 CRT màn hình.
 Bút chì sáng và một bàn phím bao gồm một số phím bấm chức năng.
 Máy tính chứa chƣơng trình xử lý các thông tin.

Ngƣời sử dụng có thể vẽ mạch điện trực tiếp lên màn hình thông qua bút sáng,
chƣơng trình sẽ phân tích và tính toán những thông số cần thiết của mạch điện do
ngƣời sử dụng vẽ nên.

1.2. Các kỹ thuật đồ họa

Ngày nay số lƣợng các hệ thống sử dụng kỹ thuật đồ họa tƣơng tác ngày càng
nhiều và đa dạng. Tuy vậy căn cứ vào phƣơng pháp xử lý dữ liệu trong hệ thống, có
thể phân kỹ thuật đồ họa thành hai loại: kỹ thuật đồ họa điểm (Sample – Based
Graphics) và kỹ thuật đồ họa vector (Geometry – Based Graphics).

2
Đồ họa máy tính
1.2.1.Kỹ thuật đồ hoạ điểm

Nguyên lý xây dựng các mô hình và hình ảnh trong kỹ thuật đồ họa điểm là:
Các mô hình, hình ảnh của các đối tƣợng đƣợc hiển thị thông qua từng điểm ảnh
(pixel).

Đặc điểm của kỹ thuật đồ họa điểm:

- Có thể tạo ra, thay đổi thuộc tính, xoá đi từng điểm ảnh của mô hình và hình
ảnh các đối tƣợng.

- Các mô hình hình ảnh đƣợc hiển thị nhƣmột lƣới (grid) các điểm ảnh rời rạc,
từng điểm ảnh đều có vị trí xác định, đƣợc hiển thị với một giá trị rời rạc (số nguyên)
các thông số hiển thị ví dụ nhƣ màu sắc hoặc độ sáng.

- Tập hợp tất cả các điểm ảnh của lƣới điểm cho ta mô hình, hình ảnh đối tƣợng
ta muốn hiển thị để nghiên cứu hoặc xây dựng.

Có hai phƣơng pháp để tạo ra các điểm ảnhtrong kỹ thuật đồ họa điểm:

- Dùng phần mềm để vẽ trực tiếp từng điểm ảnh một, dựa trên các lý thuyết mô
phỏng để xây dựng nên các đối tƣợng hoặc hình ảnh thực của sự vật.

- Rời rạc hóa (số hóa) hình ảnh thực của đối tƣợng, sau đó có thể sửa đổi hoặc
xử lý mảng các điểm ảnh thu đƣợc theo những phƣơng pháp khác nhau để thu đƣợc
hình ảnh đặc trƣng của đối tƣợng.

Hình 1.2 Ví dụ ảnh đồ họa điểm

3
Đồ họa máy tính

Hình 1.3 Kỹ thuật đồ họa điểm


1.2.2.Kỹ thuật đồ hoạ Vector

Nguyên lý của kỹ thuật này là xây dựng mô hình hình học (geometrical model)
cho hình ảnh đối tƣợng, xác định các thuộc tính của mô hình hình học, sau đó dựa trên
mô hình này để thực hiện quá trình tô trát (rendering) để hiển thị từng điểm trên mô
hình, hình ảnh của đối tƣợng.

Mô hình của một hình ảnh phải lột tả một cách chính xác và làm nổi bật những
điểm chính nhất của hình ảnh đó. Thông thƣờng quá trình mô hình hóa sử dụng
phƣơng pháp thiết kế từ trên xuống (top-down) và kết quả thu đƣợc là một sơ đồ phân
cấp. Sơ đồ này cần phải chỉ rõ những thành phần cơ sở của đối tƣợng và phƣơng thức
kết nối giữa các thành phần này.

Ở kỹ thuật này, ta chỉ lƣu trữ mô hình toán học của các thành phần trong mô
hình hình học cùng với các thuộc tính tƣơng ứng mà không cần lƣu lại toàn bộ tất cả
các pixel của hình ảnh đối tƣợng.

Các thành phần đƣợc mô tả trong mô hình hình học của đối tƣợng đƣợc gọi là
thực thể cơ sở hình học của mô hình hình học. Hình ảnh đƣợc xây dựng từ các thực thể
cơ sở sau đó đƣợc tô trát theo điểm ảnh nhƣng những điểm ảnh này không đƣợc lƣu
trữ nhƣ một thành phần của mô hình. Nhƣ thế hình ảnh có thể đƣợc tô trát từ nhiều
điểm nhìn và góc nhìn khác nhau dựa trên cùng một mô hình mẫu.

4
Đồ họa máy tính

Hình 1.4 Ví dụ về hình ảnh đồ họa vector

Hình 1.5 Kỹ thuật đồ họa Vector

1.2.3. Sự phát triển của kỹ thuật hiển thị

Đồ hoạ máy tính là một trong những lĩnh vực quan trọng nhất đóng góp cho quá
trình phát triển của môi trƣờng giao diện trong lịch sử phát triển của máy tính. Những
phát triển này đƣợc nảy sinh nhƣ sau:

 Giao diện đồ họa tƣơng tác với ngƣời sử dụng.

 Xây dựng các phần mềm trực quan (thiết kế quảng cáo, hiển thị khoa học,...)

5
Đồ họa máy tính
Những yêu cầu này đã thúc đẩy sự phát triển của kỹ thuật đồ hoạ, giao diện với
ngƣời sử dụng càng đẹp, càng phải dễ sử dụng ... càng làm sáng tỏ những kỹ thuật mới
trong đồ hoạ

Các kỹ thuật hiển thị đã nảy sinh và phát triển theo những giai đoạn sau:

1) Kỹ thuật hiển thị bằng ký tự


Kỹ thuật này chỉ cho phép hiển thị văn bản và các hình đồ hoạ đơn giản. Giao
tiếp với ngƣời sử dụng thông qua các lệnh dƣới dạng văn bản. Để có thể mã hoá những
phƣơng thức hiển thị khác nhau của đối tƣợng ngƣời ta sử dụng những ký tự mã hoá
đặc biệt. Tất cả các chƣơng trình và phần mềm đƣợc thực hiện đều là đơn nhiệm. Ví
dụ: Hệ điều hành MS- DOS- hệ điều hành tiêu biểu của những năm 1980 và đầu những
năm 1990 của hãng Microsoft; phần mềm soạn thảo văn bản BKED chạy trên môi
trƣờng MS- DOS.

2) Kỹ thuật hiển thị vector


Kỹ thuật này phát triển từ 1963 đến 1980 cho phép hiển thị văn bản và vẽ các
đƣờng thẳng, các mô hình mô phỏng đơn giản. Ngƣời sử dụng có thể quan sát thấy các
hình ảnh 2D và 3D của các đối tƣợng. Giao tiếp với ngƣời sử dụng đƣợc thực hiện
thông qua các dòng lệnh, các phím ký tự nóng và menu chọn. Ở đây xuất hiện ý tƣởng
ban đầu về phƣơng thức WYSIWYG (What You See Is What You Get – Bạn nhìn
thấy gì thì bạn nhận đƣợc cái đó). Môi trƣờng sử dụng (hệ điều hành) là đơn nhiệm
hoặc đa nhiệm phân tán.

3) Ảnh hai chiều


Kỹ thuật này cho phép hiển thị các cửa sổ (window), các biểu tƣợng (icon), và
các dòng văn bản (text). Trong giao tiếp với ngƣời sử dụng đã hạn chế tối đa việc gõ
các lệnh (tuy nhiên vẫn cho phép ngƣời sử dụng nhập lệnh theo phƣơng thức này).
Việc tƣơng tác với ngƣời sử dụng đƣợc thực hiện thông qua kỹ thuật tiêu biểu sau:

- Thông qua WIWP (Windows, icon,menus, pointer) của giao diện đồ hoạ
(Graphics Use Interface): có thể chọn và nhấn vào thực đơn ta muốn mà
không phải viết lệnh.
- Xử lý trực tiếp các đối tƣợng (drag and drop). Ở đây phƣơng thức
WYSIWYG đƣợc hoàn thiện và phát triển. Môi trƣờng sử dụng thông
thƣờng là đa nhiệm (multi-task) hoặc cơ chế Client -Server trên mạng.

6
Đồ họa máy tính
Ví dụ điển hình cho các hệ điều hành thuộc kỹ thuật này là các hệ điều hành
windows 3x và sau đó là windows 9x của hãng Microsoft.

4) Trạm làm việc đồ hoạ (3D Graphics workstation) và các công nghệ hiển
thị tiên tiến khác
Công nghệ này đƣợc xây dựng và phát triển trong công ty Sillcon Graphics,
một trong những công ty hàng đầu của Mỹ về lĩnh vực đồ hoạ. Công nghệ này cho
phép hiển thị các hình ảnh thực và hình ảnh không gian ba chiều của hình ảnh của sự
vật dựa trên các cảnh trí (Sence) 3 chiều. Môi trƣờng giao tiếp với ngƣời sử dụng đƣợc
xây dựng trên cơ sở các hình ảnh hai chiều (2D), ba chiều (3D) và mô phỏng thế giới
thực. Các thao tác xử lý trực tiếp các đối tƣợng đƣợc xây dựng mạnh hơn. Môi trƣờng
làm việc thông thƣờng là đa nhiệm và Client – Server

1.3. Phân loại các lĩnh vực của kỹ thuật đồ họa

1.3.1. Phân loại theo mục đích xử lý dữ liệu

Hình 1.6 Phân loại theo các lĩnh vực của đồ họa máy tính

- Kỹ thuật xử lý ảnh (Computer Imaging): sau quá trình xử lý ảnh cho ta ảnh số
của đối tƣợng. Trong quá trình xửlý ảnh sử dụng nhiều các kỹ thuật phức tạp: kỹ thuật
khôi phục ảnh, kỹ thuật làm nổi ảnh, kỹ thuật xác định biên ảnh. Ví dụ ảnh chụp vũ
trụ, ảnh truyền qua vệ tinh...

- Kỹ thuật nhận dạng (Pattern Recognition): từ những ảnh mẫu có sẵn ta phân
loại theo cấu trúc hoặc theo các tiêu chí đƣợc xác định từ trƣớc và bằng các thuật toán
chọn lọc để có thể phân tích hay tổng hợp ảnh đã cho thành một tập hợp các ảnh gốc,
các ảnh gốc này đƣợc lƣu trong một thƣviện và căn cứ vào thƣ viện này ta xây dựng
đƣợc các thuật giải phân tích và tổ hợp ảnh.
7
Đồ họa máy tính
- Kỹ thuật tổng hợp ảnh (Image Synthesis): là lĩnh vực xây dựng mô hình và
hình ảnh của các vật thể dựa trên các đối tƣợng và mối quan hệ giữa chúng.

- Các hệ CAD/CAM (Computer Aided Design/Computer Aided Manufacture


System): kỹ thuật đồ hoạ tập hợp các công cụ, các kỹ thuật trợ giúp cho thiết kế các
chi tiết và các hệthống khác nhau: hệ thống cơ, hệ thống điện, hệ thống điện tử….

- Đồ hoạ minh hoạ (Presentation Graphics): gồm các công cụ giúp hiển thị các
số liệu thí nghiệm một cách trực quan, dựa trên các mẫu đồ thị hoặc các thuật toán có
sẵn.

- Đồ hoạ hoạt hình và nghệ thuật: bao gồm các công cụ giúp cho các hoạ sĩ,
các nhà thiết kế phim hoạt hình chuyên nghiệp làm các kỹ xảo hoạt hình, vẽ tranh... Ví
dụ: phần mềm 3D Studio, 3D Animation, 3D Studio Max.

1.3.2. Phân loại theo hệ tọa độ dùng trong kỹ thuật đồ họa

Hình 1.7 Phân loại theo hệ tọa độ

- Kỹ thuật đồ hoạ hai chiều: là kỹ thuật đồ hoạ máy tính sử dụng hệ toạ độ hai
chiều (hệ tọa độ phẳng), sử dụng rất nhiều trong kỹ thuật xử lý bản đồ, đồ thị.

- Kỹ thuật đồ hoạ ba chiều: là kỹ thuật đồ hoạ máy tính sử dụng hệ tọa độ ba


chiều, đòi hỏi nhiều tính toán và phức tạp hơn nhiều so với kỹ thuật đồ hoạ hai chiều.

1.4.Giới thiệu một số ứng dụng của kỹ thuật đồ họa

1.4.1. Hỗ trợ thiết kế

Một trong những ứng dụng lớn nhất của đồ họa máy tính là hỗ trợ thiết kế
(CAD –Computer Aided Design). Ngày nay CAD đã đƣợc sử dụng hầu hết trong việc
thiết kế các cao ốc, ô tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, trang trí mẫu vải, và
rất nhiều sản phẩm khác.

Sử dụng những chƣơng trình này, đầu tiên các đối tƣợng đƣợc hiển thị dƣới
dạng các phác thảo của phần khung (wireframe outline), từ đó có thể thấy đƣợc toàn
bộ hình dạng và các thành phần bên trong của đối tƣợng. Sử dụng kĩ thuật này, ngƣời
thiết kế sẽ dễ dàng nhận thấy ngay các thay đổi của đối tƣợng khi tiến hành hiệu chỉnh
các chi tiết hay thay đổi góc nhìn,….
8
Đồ họa máy tính
Một khi đã thiết kế xong phần khung của đối tƣợng, các mô hình chiếu sáng, tô
màu và tạo bóng bề mặt sẽ đƣợc kết hợp để tạo ra kết quả cuối cùng gần với thế giới
thực.

Hình 1.8 Phác thảo phần khung và kết quả của thiết kế xy lanh

1.4.2. Biểu diễn thông tin

Đây là các ứng dụng sử dụng đồ họa máy tính để phát sinh các biểu đồ, đồ thị,…
dùng minh họa mối quan hệ giữa nhiều đối tƣợng với nhau. Các ứng dụng này thƣờng
đƣợc dùng để tóm lƣợc các dữ liệu về tài chính, thống kê, kinh tế, khoa học, toán
học,… giúp cho việc nghiên cứu, quản lí, … thêm có hiệu quả.

Hình 1.9 Thông tin tóm lược được biểu diễn qua các biểu đồ

1.4.3. Lĩnh vực giải trí, nghệ thuật

Trong lĩnh vực nghệ thuật, các chƣơng trình máy tính nhƣ Paint Shop Pro,
Adobe Photoshop, 3D Studio,… hỗ trợ rất đắc lực cho các họa sĩ, các nhà tạo mẫu

9
Đồ họa máy tính
trong việc thiết kế các hình ảnh sống động và rất thực. Với các chƣơng trình này,
ngƣời họa sĩ đƣợc máy tính tạo cho cảm giác nhƣ đang làm việc ngoài đời thực bằng
cách cung cấp các công cụ nhƣ khung vẽ, giá vẽ, bảng pha màu, các hiệu ứng ba
chiều,… làm cho họ cảm thấy thoải mái và tiện lợi.

Ngoài ra đồ họa máy tính còn giúp tạo ra các chƣơng trình trò chơi, giải trí; hỗ
trợ cho các kĩ xảo điện ảnh, cho các nhà làm phim. Có nhiều bộ phim nổi tiếng nhờ
vào kĩ xảo điện ảnh nhƣ: Công viên Khủng long kỉ Jura (Jurassic Park), Titanic, Thế
giới nƣớc (Water World), …

Hình 1.10 Hình ảnh được tạo ra từ chương trình đồ họa

1.4.4. Điều khiển các quá trình sản xuất

Các chƣơng trình cho phép theo dõi toàn bộ quá trình nào đó xảy ra trong thực
tế bằng cách mô phỏng toàn bộ các diễn biến xảy ra trong quá trình này và thông qua
các giao thức ghép nối ngƣời ta có thể kiểm soát đƣợc toàn bộ diễn biến của quá trình
thực hiện.
1.4.5. Lĩnh vực bản đồ

Đồ họa máy tính đƣợc sử dụng để xây dựng và in các bản đồ địa lý nhƣ bản đồ
địa hình, bản đồ dân số,... Một trong những ứng dụng hiện nay là hệ thống thông tin
địa lý GIS (Geographical Information System), kết hợp giữa đa phƣơng tiện
(Multimedia) và cơ sở dữ liệu (Database)
1.4.5. Giáo dục và đào tạo

Hiện nay các chƣơng trình mô phỏng cấu trúc của các vật thể, tiến trình của các
phản ứng hóa học, hoạt động của các gói tin trên mạng máy tính,… đƣợc dùng rất
nhiều trong việc hỗ trợ giảng dạy.

10
Đồ họa máy tính
Trong đào tạo, các ứng dụng mô phỏng đƣợc dùng để kiểm tra trình độ ngƣời
lái, huấn luyện phi công, điều khiển giao thông, …

Hình 1.11 Chương trình học về máy tính

1.4.6. Giao tiếp giữa máy tính và ngƣời dùng

Mọi ứng dụng đều phải có giao diện giao tiếp với ngƣời dùng. Giao diện đồ họa
thực sự là một cuộc cách mạng mang lại sự thuận tiện và thoải mái cho ngƣời dùng
ứng dụng. Các ứng dụng dựa trên hệ điều hành MS Windows là một minh họa rất
trực quan của giao diện đồ họa. Các chức năng của các ứng dụng này đƣợc thiết kế cho
ngƣời dùng làm việc thông qua các biểu tƣợng mô tả chức năng đó. Ví dụ, chức năng
lƣu tập tin đƣợc hiểu thông qua biểu tƣợng đĩa mềm, chức năng in ấn đƣợc hiểu thông
qua biểu tƣợng máy in,… Để chọn các chức năng, ngƣời dùng sử dụng chuột trỏ đến
và nhấn vào các biểu tƣợng tƣơng ứng. Điểm thuận lợi chính khi dùng biểu tƣợng là
kích thƣớc không gian mà nó chiếm ít hơn nhiều so với dùng văn bản để mô tả cho
cùng một chức năng, ngoài ra việc nắm bắt các chức năng qua các biểu tƣợng sẽ dễ
dàng hơn rất nhiều khi ngƣời dùng gặp trở ngại về mặt ngôn ngữ.Các ứng dụng có
giao diện đồ họa còn cho phép ngƣời dùng khả năng làm việc dễ dàng với nhiều cửa sổ
với nhiều dạng tài liệu khác nhau cùng một lúc.

11
Đồ họa máy tính

Hình 1.12 Giao diện của chương trình MS Word

1.5.Hệ đồ họa tƣơng tác

1.5.1.Mô hình hệ tọa độ tƣơng tác

1) Khái niệm xử lý theo lô (Batch processing)

Xử lý theo lô là chế độ thao tác của máy tính trong đó các chỉ thị lệnh chƣơng
trình đƣợc thực hiện lệnh này liên tiếp sau lệnh kia mà không cần sự can thiệp của
ngƣời sử dụng máy tính. Xử lý theo lô thể hiện sự hiệu quả khi sử dụng nguồn tài
nguyên dự trữ của máy tính, nhƣng thể hiện sự bất tiện khi ngƣời sử dụng cần hiệu
chỉnh lỗi và giao tiếp với máy tính.

2) Khái niệm tƣơng tác (Interactive processing)

Đây là phƣơng pháp xử lý của máy tính, cho phép ngƣời dùng có thể bắt giữ và
hiệu chỉnh các sai sót trƣớc khai thao tác xử lý đƣợc hoàn chỉnh. Tính năng này của
các phần mềm hiện nay cho phép ngƣời sử dụng xử lý dễ dàng hơn, các thao tác thực
hiện mềm dẻo hơn.
1.5.2. Các thành phần của hệ đồ họa tƣơng tác

Hình 1.13 Mô hình của hệ đồ họa tương tác

 Mô hình ứng dụng (application model)


12
Đồ họa máy tính
 Phần mềm ứng dụng (application program)

 Hệ thống đồ họa (phần mềm hệ thống)

o Thƣ viện đồ họa (phần mềm đồ họa hệ thống)

o Phần cứng đồ họa

 Thành phần xử lý tƣơng tác ngƣời dùng (Interaction Handling)

 Các chuẩn của hệ đồ họa

1) Mô hình ứng dụng và xây dựng mô hình ứng dụng (Application Model)

Mô hình ứng dụng phải lƣu trữ tất cả các dữ liệu, các đối tƣợng và mối liên kết
giữa các đối tƣợng này để có thể hiển thị hoặc biểu diễn chung.

Một đối tƣợng có thể đƣợc biểu diễn bằng sự kết hợp giữa dữ liệu và một số thủ
tục mô tả các đối tƣợng này (sử dụng ngôn ngữ lập trình hƣớng đối tƣợng). Nhƣ vậy
mô hình ứng dụng có thể đƣợc chia làm 2 thành phần:

- Mô hình dữ liệu (data model): (mảng ghi tọa độ các pixel, danh sách các đối
tƣợng,...) lƣu lại dữ liệu về các đối tƣợng và thông thƣờng ngƣời ta dùng các
cơ sở dữ liệu (database) để lƣu trữ dữ liệu này.
- Thƣ viện mô tả: Các thủ tục mô tả các đối tƣợng đƣợc xây dựng nên từ các
thực thể cơ sở (primitive) để có thể mô tả các thành phần (component) của
các đối tƣợng, các thuộc tính (attribute) của các thành phần này, các phƣơng
thức kết nối (connectivity) giữa các thành phần.

2) Phần mềm ứng dụng (application program)

Phần mềm ứng dụng đƣợc xây dựng để có thể tạo ra, lƣu giữ lại, lấy ra những
dữ liệu và các thủ tục từ mô hình ứng dụng (application model). Phần mềm này đƣợc
xây dựng trên cơ sở mô hình ứng dụng và ở phần mềm ứng dụng các đối tƣợng, dữ
liệu sẽ đƣợc hiển thị trên màn hình theo phƣơng thức ngƣời dùng mong muốn. Ngoài
ra để hệ thống là hệ đồ họa tƣơng tác, phần mềm ứng dụng phải xây dựng đƣợc giao
diện với ngƣời sử dụng một cách thuận tiện, để các thay đổi mà ngƣời sử dụng muốn
có thể tƣơng tác lên ngay lập tức các đối tƣợng và hiển thị lại chúng.

3) Hệ thống đồ họa (graphics system)

Phần mềm đồ họa hệ thống là tập hợp các lệnh đồ họa của hệ thống (graphics
output commands), tập hợp các lệnh này cần phải thực hiện công việc hiển thị cái gì

13
Đồ họa máy tính
(what object) và chúng sẽ đƣợc hiển thị nhƣ thế nào (how). Phần mềm đồ họa hệ thống
là phần mềm xây dựng trên cơ sở một thể loại phần cứng nhất định và phụ thuộc vào
phần cứng.

Phần cứng đồ họa: là tập hợp các thiết bị điện tử (CPU, màn hình, chuột, bàn
phím, ... ) giúp cho việc thực hiện các phần mềm đồ họa.

Phần mềm đồ họa (application program) sẽ vẽ các đối tƣợng nhờ gọi các hàm
và thủ tục có ở thƣ viện đồ họa, sử dụng các tài nguyên của phần cứng đồ họa.

4) Thành phần thƣ viện đồ họa

a) Các thực thể cơ sở (các ảnh gốc)

Thực thể cơ sở là các đối tƣợng cơ bản nhất cho việc xây dựng các đối tƣợng và
hình ảnh, thông thƣờng các thực thể cơ sơ bao gồm:
- Điểm (pixel)
- Đƣờng thẳng (line)
- Đƣờng tròn (circle)
- Đa giác (polygon) ...

b) Các thuộc tính

Thuộc tính của các thực thể cơ sở và thay đổi các thuộc tính này cũng đóng vai
trò quan trọng trong việc xây dựng các đối tƣợng và hình ảnh. Thông thƣờng thuộc
tính có thể liệt kê ra gồm:

- Màu sắc (color)


- Kiểu đƣờng vẽ (line style)
- Kiểu văn bản (text style)
- Mẫu tô (pattern).

Các phép biến đổi và hệ quan sát: một khi đã xây dựng ảnh gốc và thuộc tính,
chúng ta thu đƣợc một hình ảnh xác định trong hệ tọa độ không gian thực, có thể phải
sử dụng một số phép biến đổi nào đó, sau đó cần phải chiếu phần quan sát đƣợc của
các đối tƣợng và ảnh sang một thiết bị xuất cụ thể nào đó.
c) Chiếu sáng
Cùng với việc chiếu phần quan sát đƣợc của ảnh, ngƣời ta còn phải tính toán
đƣợc cƣờng độ sáng của từng điểm ảnh đƣợc chiếu. Đây là một quá trình tính toán
phức tạp dựa trên những công thức toán học và bản chất quang học, sinh học của hấp
thụ và phản chiếu ánh sáng.
14
Đồ họa máy tính
1.6. Phần cứng đồ họa

1.6.1. Các thành phần phần cứng của hệ tọa độ tƣơng tác

Các thành phần phần cứng của hệ đồ hoạ tƣơng tác gồm:

- CPU:thực hiện các chƣơng trình ứng dụng.


- Bộxửlý hiển thị(Display Processor): thực hiện công việc hiển
thịdữliệu đồhoạ.
- Bộnhớhệthống (System Memory): chứa các chƣơng trình và dữliệu
đang thực hiện.
- Gói phần mềm đồhoạ(Graphics Package): cung cấp các hàm
đồhoạcho chƣơng trình ứng dụng
- Phần mềm ứng dụng (Application Program): phần mềm đồhoạ ứng
dụng.
- Bộ đệm (Frame buffer): có nhiệm vụ chứa các hình ảnh hiển thị.
- Bộ điều khiển màn hình(Video Controller): điều khiển màn hình,
chuyển dữliệu dạng số ởframe buffer thành các điểm sáng trên màn
hình.

Hình 1.14 Các thành phần cứng của hệ đồ hoạ tương tác

1.6.2. Các thiết bị hiển thị (thiết bị ra dữ liệu)

1)Màn hình CRT

Màn hình là thiết bị hiển thị thông dụng nhất trong một hệ đồ họa. Các thao tác
của hầu hết màn hình đều dựa trên thiết kế của ống tia âm cực (CRT – cathode ray
tube).
15
Đồ họa máy tính
a) Cấu tạo của CRT

Hình dƣới đây minh họa thao tác cơ sở của một ống tia âm cực. Một chùm các
tia điện tử (tia âm cực) phát ra từ một súng điện tử, vƣợt qua các hệ thống hội tụ
(focusing) và dẫn hƣớng (deflection) sẽ hƣớng tới các vị trí xác định trên màn hình
đƣợc phủmột lớp phosphor. Tại mỗi vị trí tƣơng tác với tia điện tử, hạt phosphor sẽ
phát ra một chấm sáng nhỏ. Vì ánh sáng phát ra bởi các hạt phosphor mờ dần rất
nhanh nên cần phải có một cách nào đó để duy trì ảnh trên màn hình. Một trong các
cách đó là lặp đi lặp lại nhiều lần việc vẽ lại ảnh thật nhanh bằng cách hƣớng các tia
điện tử trở lại vị trí cũ. Kiểu hiển thị này gọi là refresh CRT.

Hình 1.15 Cấu tạo của CRT

Hình 1.16 Công nghệ màn hình CRT

Số lƣợng tối đa các điểm có thể hiển thị trên một CRT đƣợc gọi là độ phân giải
(Resolution). Hay độ phân giải là số lƣợng các điểm trên một cm mà có thể đƣợc vẽ
theo chiều ngang và chiều dọc (đƣợc xem nhƣ tổng số điểm theo mỗi hƣớng).
Kích thƣớc vật lý của màn hình đồ hoạ đƣợc tính từ độ dài của đƣờng chéo màn
hình và thƣờng dao động từ 12-27 inch, hoặc lớn hơn.

16
Đồ họa máy tính
Thuộc tính khác của màn hình là tỷ số phƣơng (aspect ratio). Nó là tỷ lệ của các
điểm dọc và các điểm ngang cần để phát sinh các đoạn thẳng có độ dài đơn vị theo cả
hai hƣớng trên màn hình. Màn hình có tỷ số phƣơng khác một, thì hình vuông hiển thị
trên đó thành hình chữ nhật còn hình tròn thành hình Ellipse.
b) Phƣơng thức hiển thị
Căn cứ vào phƣơng thức hiển thị các dữ liệu hình học trên màn hình, ngƣời ta
có hai loại thiết bị hiển thị:
Các thiết bị hiển thị dạng vector
Quét vector theo tọa độ các điểm đầu và cuối của vector. Ngƣời ta sử dụng các
cuộn lái tia để quét thành các đoạn thẳng và nhƣ thế để vẽ đƣợc một đối tƣợng đồ họa
ngƣời ta phải phân tích đối tƣợng thành các đoạn thẳng cơ sở và lần lƣợt vẽ chúng.
Các thiết bị hiển thị dạng đƣờng rất thích hợp cho việc hiển thị các đối tƣợng
hình học, tịnh tiến, quay dễ dàng nhƣng lại không hiệu quả với việc tô màu các vùng
kín vì để làm đƣợc điều này chúng ta phải vẽ nhiều đƣờng thẳng thật gần nhau để xấp
xỉ thành vùng đƣợc tô và điều này hạn chế tốc độ của ứng dụng. Nhƣ vậy đối với các
ảnh phức tạp cần tới thời gian vẽ lớn, tốc độ làm tƣơi chậm, màn hình sẽ bị nháy.

Hình 1.17. Kiến trúc hiển thị Vector

Kiến trúc hiển thị vector làm việc với tệp hiển thị chứa những vector mà hệ
thống cần phải hiển thị (display commands)

MOVE 10 , 15

LINE 400 , 300

LINE 600 , 800

Refesh Buffer

17
Đồ họa máy tính
Các thiết bị hiển thị dạng điểm
Tia điện tử quét ngang trên màn hình từ trái sang phải, khi quét hết một dòng
ngang, tia điện tử đƣợc dập tắt và lái hồi về đầu dòng tiếp (hồi ngang). Một hàng là
một tập hợp các điểm X khi tia điện tử quét từ trái sang phải thì nó cũng lái theo chiều
dọc từ trên xuống dƣới Y.Mỗi điểm màn hình tại một điểm sáng (tối) đƣợc gọi là
pixel.

Hình 1.18 Kiến trúc hiển thị Bitmap

Bộ đệm (frame buffer) đƣợc tổ chức nằm bên trong bộ nhớ của hệ thống
(8086/8088). Có riêng một bộ xử lý hiển thị. Dữ liệu hiển thị đƣợc dùng chung, bộ nhớ
đƣợc tổ chức thành không gian nhớ ảo, Video RAM đƣợc phân biệt. (80486/80586).

Hình 1.19. Mô hình dữ liệu của thiết bị hiển thị điểm

2) Màn hình tinh thểlỏng (Liquid Crystal Display – LCD)


Dựa vào công nghệ truyền ánh sáng qua điện cực mà đặt giữa là cuộn dây xoắn.
Khi chƣa có từ trƣờng (chƣa có dòng điện) ở cuộn dây thì ánh sáng truyền thẳng, khi
có từ trƣờng thì ánh sáng truyền đổi chiều.

18
Đồ họa máy tính

Hình 1.17 Công nghệ truyền ánh sáng trong màn hình tinh thể lỏng

3) Máy in
Hiện tại có nhiều loại máy in, sử dụng các công nghệ khác nhau nhƣ in kim, in
phun, in laser. Nhƣng dƣới quan điểm của những ngƣời nghiên cứu đồ họa vi tính, ta
sẽ xem xét tới khái niệm chất lƣợng của bản in.
 Dot size: đƣờng kính của một điểm in bé nhất mà máy in có thể in đƣợc
 Addressability: khả năng địa chỉ hoá các điểm in có thể có trên một đơn vị độ
dài (dot per inch)
 Số lƣợng màu có thể vẽ trên một điểm

Dot size Point per inch

InkJet 8-20/100 inch 200÷ 600

Laser 5/1000 inch 1500

Máy vẽ 6÷ 15/1000 inch 1000÷ 2000

1.6.3. Các thiết bị vào dữ liệu


Bàn phím: Bàn phím xuất hiện trong hầu hết các máy tính, nó là thiết bị để
nhập dữ liệu dạng văn bản và dữ liệu số. Đây là loại thiết bị quen thuộc nhất đối với
ngƣời dùng tuy có nhƣợc điểm là tƣơng tác chậm.
Chuột: Cùng với sự xuất hiện của các ứng dụng của các hệ đồ họa có tốc độ
tƣơng tác cao, chuột là thiết bị ngày càng quen thuộc với ngƣời sử dụng. Ngƣời ta
dùng chuột để chỉ và chọn các chức năng phù hợp với yêu cầu của mình. Với cách
giao tiếp này giữa ngƣời dùng và máy tính ngày càng trở nên thân thiện và dễ dàng
hơn.

19
Đồ họa máy tính
CÂU HỎI CHƢƠNG 1
Chọn một phƣơng án đúng cho mỗi câu hỏi sau:

1. Để tạo ra các điểm ảnh (pixel) thì các phƣơng pháp nào không đúng:
[a]--Tô trát (rendering)
[b]--Rời rác hoá (số hoá) hình ảnh thực của đối tƣợng
[c]--Dựa vào các lý thuyết mô phỏng (Fract..)
[d]--Dùng phần mềm vẽ trực tiếp từng điểm ảnh một
2. Chọn phƣơng án sai cho kỹ thuật đồ hoạ điểm:
[a]--Dễ dàng thay đổi thuộc tính của đối tƣợng (màu sắc, độ sáng)
[b]--Quan sát đối tƣợng ở nhiều góc nhìn khác nhau bằng cách thay đổi góc
nhìn
[c]--Xoá đi dễ dàng từng pixel của đối tƣợng
[d]--Đối tƣợng đƣợc hiển thị thông qua từng mẫu rời rạc
3. Chọn phƣơng án không phải là ứng dụng của kỹ thuật đồ hoạ:
[a]--Tính khối lƣợng vật liệu (sắt, thép…) cho một toà nhà
[b]--Điều khiển các quá trình sản xuất
[c]--Tính thể tích hoặc diện tích các hình trong thiết kế công trình xây dựng
[d]--Giải trí nghệ thuật và mô phỏng
4. Các chuẩn sau thì chuẩn nào không thuộc chuẩn giao diện của hệ đồ hoạ:
[a]--GKS
[b]--OPENGL
[c]--IEEE802.11
[d]—CGI
5. Tỷ số phƣơng (aspect ratio) của màn hình là 1,4 vậy một hình tròn khi hiển thị trên
màn hình đó sẽ cho:
[a]--Hình ellipse nằm ngang (bán kính theo trục x dài hơn bán kính theo trục y)
[b]--Hình tròn
[c]--Hình thoi
[d]--Hình ellipse đứng (bán kính theo trục x ngắn hơn bán kính theo trục y)
6. Giả sử màn hình của bạn đang sử dụng có độ phân giải (Resolution) là 1024x768 thì
số điểm ảnh của màn hình là:
[a]--784641
[b]--785408
[c]--786431
[d]—786432

20
Đồ họa máy tính
7. Giả sử màn hình của bạn đang sử dụng có độ phân giải (Resolution) là 640x480 thì
số điểm ảnh của màn hình là:
[a]--306081
[b]--307200
[c]--306082
[d]—307199
8. Nói rằng : kỹ thuật đồ hoạ điểm giúp cho chúng ta quan sát hình ảnh ở nhiều góc độ
khác nhau bằng cách thay đổi góc nhìn là đúng hay sai?
[a]--Đúng
[b]—Sai
9. Phát biểu: kỹ thuật đồ hoạ vector = mô hình hình học + tô trát, là đúng hay sai?
[a]--Đúng
[b]—Sai
10. Khi biểu diễn tƣờng minh đoạn thẳng có dạng y=kx+m, trong đó k là hệ số góc của
đoạn. Phƣơng trình không thể nhận giá trị k= ∞
[a]--Đúng
[b]—Sai
11. Trong hệ tọa độ thiết bị sử dụng............ để hiển thị các hình ảnh :
[a]--Hệ tọa độ nguyên
[b]--Hệ tọa độ thế giới thực
[c]--Hệ tọa độ thiết bị
[d]--Hệ tọa độ chuẩn
12. Hệ tọa độ thực thƣờng đƣợc dùng để mô tả các đối tƣợng trong thế giới thực là hệ
tọa độ :
[a]--Descartes
[b]--Device coordinates
[c]--Normalized device coordinates
[d]—XYZ
13. Các điểm trong hệ tọa độ thực đƣợc định nghĩa là :
[a]--Xác định
[b]--Liên tục
[c]--Thống nhất
[d]--Rời rạc

21
Đồ họa máy tính

Chƣơng 2

CÁC GIẢI THUẬT XÂY DỰNG CÁC THỰC THỂ CƠ SỞ

2.1 Giới thiệu

Bất kì một ảnh mô tả thế giới thực nào bao giờ cũng đƣợc cấu trúc từ tập các
đối tƣợng đơn giản hơn. Ví dụ một ảnh thể hiện bài trí của một căn phòng sẽ đƣợc cấu
trúc từ các đối tƣợng nhƣ cây cảnh, tủ kính, bàn ghế, tƣờng, ánh sáng đèn, …

Với các ảnh đồ họa phát sinh bằng máy tính, hình dạng và màu sắc của mỗi đối
tƣợng có thể đƣợc mô tả riêng biệt bằng hai cách: hoặc là bằng dãy các pixel tƣơng
ứng hoặc là bằng tập các đối tƣợng hình học cơ sở nhƣ đoạn thẳng hay vùng tô đa
giác, … Sau đó, các ảnh sẽ đƣợc hiển thị bằng cách nạp các pixel vào vùng đệm
khung.

Hình 2.1 Ảnh cánh tay robot được cấu tạotừ các đối tượng đồ họa cơ sở

Với các ảnh đƣợc mô tả bằng các đối tƣợng hình học cơ sở, cần phải có một
quá trình chuyển các đối tƣợng này về dạng ma trận các pixel trƣớc. Quá trình này còn
đƣợc gọi là quá trình chuyển đổi bằng dòng quét (scan-converting). Bất kì công cụ lập
trình đồ họa nào cũng phải cung cấp các hàm để mô tả một ảnh dƣới dạng các đối
tƣợng hình học cơ sở hay còn gọi là các đối tƣợng đồ họa cơ sở (output primitives) và
các hàm cho phép kết hợp tập các đối tƣợng cơ sở để tạo thành đối tƣợng có cấu trúc
phức tạp hơn.

Mỗi đối tƣợng đồ họa cơ sở đƣợc mô tả thông qua dữ liệu về tọa độ và các
thuộc tính của nó, đây chính là thông tin cho biết kiểu cách mà đối tƣợng đƣợc hiển

22
Đồ họa máy tính
thị. Đối tƣợng đồ họa cơ sở đơn giản nhất là điểm và đoạn thẳng, ngoài ra còn có
đƣờng tròn, và các đƣờng conics, mặt bậc hai, các mặt và đƣờng splines, các vùng tô
đa giác, chuỗi kí tự, … cũng đƣợc xem là các đối tƣợng đồ họa cơ sở để giúp xây dựng
các ảnh phức tạp. Chƣơng này sẽ khảo sát các thuật toán hiển thị các đối tƣợng đồ họa
cơ sở cho các thiết bị hiển thị dạng điểm.

Xét về mặt bản chất, các thuật toán này thực hiện quá trình chuyển đổi các đối
tƣợng đồ họa cơ sở đƣợc mô tả trong hệ tọa độ thực về dãy các pixel có tọa độ nguyên
của thiết bị hiển thị. Có hai yêu cầu đặt ra cho các thuật toán này đó là:Đối tƣợng đƣợc
mô tả trong hệ tọa độ thực là đối tƣợng liên tục, còn đối tƣợng trong hệ tọa độ thiết bị
là đối tƣợng rời rạc, do đó bản chất của quá trình chuyển đổi này chính là sự rời rạc
hóa và nguyên hóa các đối tƣợng sao cho có thể xác định các điểm nguyên xấp xỉ đối
tƣợng một cách tốt nhất, thực nhất. Nghĩa là đối tƣợng hiển thị bằng lƣới nguyên trên
thiết bị hiển thị phải có hình dạng tƣơng tự nhƣ đối tƣợng trong lƣới tọa độ thực và ―có
vẻ‖ liên tục, liền nét. Sự liên tục trên lƣới nguyên của thiết bị hiển thị có đƣợc do mắt
ngƣời không thể phân biệt đƣợc hai điểm quá gần nhau.

Do các đối tƣợng đồ họa cơ sở là thành phần chính cấu trúc các đối tƣợng phức
tạp nên các thuật toán hiển thị chúng cần phải đƣợc tối ƣu hóa về mặt tốc độ, đây
chính là điểm mấu chốt cho việc ra đời các thuật toán khác

Hình 2.2 Quá trình chuyển đổi một đoạn thẳng về dãy các pixel
nhau.
tương ứng
2.2. Các đối tƣợng đồ họa cơ sở

2.2.1 Đ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
độ hai chiều mỗi điểm đƣợc xác định bởi cặp tọa độ (x, y).

Ngoài thông tin về tọa độ, điểm còn có thuộc tính là màu sắc.

23
Đồ họa máy tính
2.2.2. Đƣờng thẳng, đƣờng gấp khúc

a. Đường thẳng

Một đƣờng thẳng có thể xác định nếu biết hai điểm thuộc nó. Phƣơng trình
đƣờng thẳng đi qua hai điểm (x1, y1) và (x2,y2) có dạng sau:
x - x1 x2 - x1
=
y - y1 y2 - y1

Hay ở dạng tƣơng đƣơng (x -x1 )(y2 - y1 )=(x2 - x1 )(y - y1 )

Khai triển có dạng y = mx+k

y2 -y1
với m= = Dy
Dx
, k = y1 – mx1.
x2 -x1

Đây đƣợc gọi là phƣơng trình đoạn chắn của đƣờng thẳng.

Nếu khai triển dƣới dạng (y2 –y1)x –(x2 – x1)y –x1y2 + x2y1 = 0 và đặt A = y2 –
y1, B = -(x2 – x1), C = x2y1 – x1y2 thì phƣơng trình đƣờng thẳng có dạng Ax + By + C
= 0. Dạng này gọi là phƣơng trình tổng quát của đƣờng thẳng.

Phƣơng trình tham số của đƣờng thẳng có dạng các tọa độ x, y đƣợc mô
tả qua một thành phần thứ ba là t. Dạng này rất thuận tiện khi khảo sát các đoạn thẳng.

x= 1-t x1 +tx2
y= 1-t y1 +ty2

Nếu t  [0,1], các điểm (x,y) thuộc về đoạn thẳng giới hạn bởi 2 điểm (x1, y1),
(x2, y2), nếu t  [-,+] ta có toàn bộ đƣờng thẳng.

Một đoạn thẳng là một đƣờng thẳng bị giới hạn bởi hai điểm đầu, cuối

Hình 2.3 Dạng tham số của phương trình đường thẳng

b. Đường gấp khúc

Đƣờ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
thẳng này không nhất thiết phải tạo thành một hình khép kín và các đoạn có thể cắt lẫn

24
Đồ họa máy tính
nhau. Điểm giao của hai đoạn thẳng đƣợc gọi là đỉnh. Các đƣờng gấp khúc đƣợc xác
định qua danh sách các đỉnh, mỗi đỉnh đƣợc cho bởi các cặp tọa độ (xi, yi).

Một đa giác là một đƣờng gấp khúc có điểm đầu và điểm cuối trùng nhau.

Hình 2.4: Đường gấp khúc (a) và đa giác (b)

Các thuộc tính của đoạn thẳng bao gồm:

- Màu sắc
- Độ rộng của nét vẽ.
- Kiểu nét vẽ của đoạn thẳng có thể là một trong các dạng nhƣ hình 2.5.

Hầu hết các công cụ đồ họa đều định nghĩa tập các kiểu nét vẽ đoạn thẳng có
thể dùng và cho phép ngƣời dùng định nghĩa kiểu đoạn thẳng của mình thông qua một
mẫu (pattern) gồm các số 0, 1.

Đối với đƣờng gấp khúc, các đoạn thẳng trong cùng một đƣờng gấp khúc thì có
cùng một thuộc tính.

Hình 2.5 Kiểu nét vẽ của đoạn thẳng

2.2.3 Vùng tô

Một vùng tô bao gồm đƣờng biên và vùng bên trong. Đƣờng biên là một đƣờng
khép kín ví dụ nhƣ đa giác.Các thuộc tính của vùng tô bao gồm:

Thuộc tính của đƣờng biên: chính là các thuộc tính nhƣ thuộc tính của đoạn
thẳng.
Thuộc tính của vùng bên trong: bao gồm màu tô và mẫu tô.

25
Đồ họa máy tính

Hình 2.6 Vùng tô với các mẫu đường biên và


mẫu tô
2.2.4 Kí tự, chuỗi kí tự

Các chuỗi kí tự giúp hiển thị nội dung các thông điệp theo một ngôn ngữ nào
đó.Các thuộc tính của kí tự bao gồm :

Màu sắc của các kí tự.


Font chữ: bộ kí tự dùng hiển thị; font chữ định nghĩa kiểu, kích thƣớc của kí
tự hiển thị. Hình dạng của mỗi kí tự có thể đƣợc xác định bởi một tập các đƣờng gấp
khúc (đối với font vector) hay là mẫu các pixel (font bitmap). Có nhiều loại font khác
nhau nhƣ font bitmap, font truetype, font CHR, ...
Kích thƣớc: chiều cao và chiều rộng của kí tự. Các kí tự định nghĩa bằng
đƣờng gấp khúc có thể dễ dàng thay đổi kích thƣớc hơn là các kí tự định nghĩa bằng
mẫu các pixel.
Khoảng cách giữa các kí tự.
Sự canh chỉnh (gióng lề): canh trái (left text), canh phải (right text), canh giữa
(center text), canh đều nhau (justify text).
Cách hiển thị tuần tự của các kí tự: có thể là phải sang trái, từ trên xuống
dƣới, từ trái sang phải, từ dƣới lên trên.
Hƣớng của kí tự.

Hình 2.7 Dạng Bitmap và vector của font ký tự B

26
Đồ họa máy tính
2.3. Giải thuật sinh đƣờng thẳng

2.3.1 Nguyên lý chung

Trên mặt phẳng bất kỳ, một điểm đƣợc xác định bởi cặp hai giá trị tọa độ x và
y mô tả khoảng cách từ điểm đó đến các trục. Điểm nằm trên đƣờng thẳng khi giá trị
tọa độ điểm thỏa mãn phƣơng trình biểu diễn đƣờng thẳng đó.

Xét bài toán: Vẽ đoạn thẳng đi qua 2 điểm A(x1,y1) và B(x2,y2)

Phƣơng trình đƣờng thẳng đi qua hai điểm A(x1,y1) và B(x2,y2) có thể biểu diễn
dƣới dạng y = mx + k với m = (y2 – y1)/(x2 – x1), k = y1 – mx1. Từ phƣơng trình này
có thể xây dựng quá trình vẽ đƣờng thẳng bằng cách cho một thành phần toạ độ x hay
y biến đổi theo từng đơn vị và tính giá trị nguyên của thành phần tọa độ còn lại. Do
các đƣờng thẳng đƣợc mô tả trong hệ tọa độ thực nhƣng khi hiển thị trong máy tính, hệ
tọa độ là lƣới nguyên nên bản chất của quá trình vẽ đƣờng thẳng chính là sự nguyên
hóa các tọa độ các điểm thuộc đƣờng thẳng và vẽ các điểm ảnh tƣơng ứng.

Nguyên lý chung là cho một thành phần tọa độ biến đổi theo từng đơn vị và tính
tọa độ nguyên còn lại sao cho gần với tọa độ thực nhất. Việc quyết định chọn x hay y
biến đổi phụ thuộc vào độ rộng của đƣờng thẳng.

Xét trƣờng hợp hệ số góc 0< m< 1và Dx  0 , khi đó độ biến thiên trên trục x sẽ
lớn hơn độ biến thiên theo trục y.Cho x biến thiên mỗi lần một điểm ảnh (Δx=1)từ x1
tiến tới x2, độ biến thiên của y tính theo x nhiều nhất là một điểm ảnh.

b)
a)
Hình 2.8 Nguyên hóa của các tọa độ khi sinh đường thẳng
độ biến thiên của x lớn hơn độ biến thiên của y (a) và độ biến thiên của y lớn hơn
độ biến thiên của x (b)

27
Đồ họa máy tính
Để đơn giản hóa quá trình xây dựng giải thuật, ta xét các đƣờng thẳng có hệ số
góc dƣơng và nhỏ hơn 1 để đảm bảo bộ biến thiên theo trục x lớn hơn độ biến thiên
theo trục y. Khi đó cho x biến thiên mỗi lần một pixel và độ biến thiên của y đƣợc tính
theo x.

Giả sử xi , yi  là điểm đã xác định đƣợc ở bƣớc thứ i (điểm màu đen) thì điểm

cần chọn xi 1 , yi 1  ở bƣớc thứ (i+1) sẽ là một trong hai trƣờng hợp (điểm màu trắng)
nhƣ hình vẽ sau:

(xi+1, yi+1)
2

yi (xi+1, yi)
1

xi
Hình 2.9 Các điểm xi 1 , yi 1  chọn ở bước (i+1) cho trường hợp
đoạn thẳng có hệ số góc 0<m<1

 xi 1  xi  1
Nhƣ vậy :   yi
 y i 1  y
  i 1

Vấn đề còn lại là cách chọn một trong hai điểm trên nhƣ thế nào để có thể tối
ƣu về mặt tốc độ.

2.3.2 Thuật toán DDA (Digital Differential Analyzer)

Với thuật toán DDA, việc quyết định chọn y i 1 là y i hay y i  1 , dựa vào
phƣơng trình của đoạn thẳng y = mx +b. Nghĩa là, ta sẽ tính tọa độ của điểm xi  1, y 
thuộc về đoạn thẳng thực. Tiếp đó, yi+1sẽ là giá trị sau khi làm tròn giá trị tung độ y.

 y  mxi  1  b
Nhƣ vậy: 
 yi 1  Round  y 

Nếu tính trực tiếp giá trị thực y ở mỗi bƣớc từ phƣơng trìnhy = mx + b thì phải cần
một phép toán nhân và một phép toán cộng số thực. Để cải thiện tốc độ, ngƣời ta tính
giá trị thực của y ở mỗi bƣớc theo cách sau để khử phép tính nhân trên số thực:

Nhận xét yi1  mx i1  b  mx i  1  b = mxi + b + m mà yi = mxi + b

28
Đồ họa máy tính
Do đó: yi+1 = yi + m

Hình 2.10 Minh họa thuật toán DDA


Thuật toán này do cách làm tròn tọa độ thực ở những bƣớc tính toán cuối cùng
nên độ chính xác của giải thuật cao, đƣờng thẳng vẽ đƣợc thể hiện gần với đƣờng
thẳng thực tế. Tuy nhiên cũng vì vậy mà tốc độ tính toán chậm do phải làm việc
thƣờng xuyên trên số thực và các phép toán phức tạp nên thuật toán ít đƣợc sử dụng.
Lưu đồ thuật toán và chương trình cài đặt thuật toán DDA vẽ đường thẳng
procedure LineDDA (x1, y1, x2, y2, color :integer)
begin
var x,i:integer;
y, m: real;
x := x1;
y := y1;
m := (y2-y1)/(x2-x1);
putpixel(x, Round(y), Color);
for i:=x1 to x2 -1 do
begin
x := x +1;
y :=y + m;
putpixel(x, Round(y), Color);
end;
end;

29
Đồ họa máy tính

Begin

m=Dy/Dx;
x=x1;
y=y1;
putpixel(x, Round(y), c);

x<x2 No

Yes

x=x+1;
y=y+m;
putpixel(x, Round(y),c);

End

Ví dụ 2.1. Áp dụng giải thuật DDA, tính các điểm đƣợc vẽ trên đoạn thẳng giới hạn
bởi 2 điểm A(12, 20) và B(22, 27)

Ta có Dx = 22-12=10; Dy = 27-20=7; m = 0.7

Bƣớc xi yi y

0 12 20 20

1 13 21 20.7

2 14 21 21.4

3 15 22 22.1

4 16 23 22.8

5 17 24 23.5

30
Đồ họa máy tính

6 18 24 24.2

7 19 25 24.9

8 20 26 25.6

9 21 26 26.3

10 22 27 27

Nhận xét

Việc sử dụng công thức yi+1 = yi + m để tính giá trị y tại mỗi bƣớc đã giúp cho
thuật toán DDA nhanh hơn hẳn so với cách tính y từ phƣơng trình y= mx +b do khử
đƣợc phép nhân trên số thực. Tuy nhiên, việc cộng dồn giá trị thực m vào y có thể sẽ
tích lũy sai số làm cho hàm làm tròn có kết quả sai dẫn tới việc xác định vị trí của
điểm vẽ ra bị chệch hƣớng so với đƣờng thẳng thực. Điều này chỉ xảy ra khi vẽ đoạn
thẳng khá dài.

Tuy đã khử đƣợc phép nhân số thực nhƣng thuật toán DDA vẫn còn bị hạn chế
về mặt tốc độ do vẫn còn phép toán cộng số thực và làm tròn. Có thể khắc phục thao
Dy
tác cộng số thực m và làm tròn trong thuật toán bằng cách nhận xét m  với Dy, Dx
Dx
là các số nguyên.

2.3.3 Giảithuật Bresenham

Thuật toán Bresenham đƣa ra cách chọn yi+1 là yi hay yi +1theo một hƣớng khác
sao cho có thể tối ƣu hóa về mặt tốc độ so với thuật toán DDA. Vấn đề mấu chốt ở đây
là làm thế nào để hạn chế tối đa các phép toán trên số thực trong thuật toán. Ý tƣởng
của thuật toán Bresenham đƣợc trình bày nhƣ sau :

Hình 2.11 Minh họa thuật toán Bresenham


31
Đồ họa máy tính
Gọi x i  1, y  là điểm thuộc đoạn thẳng. Ta có: y  mx i  1  b .

d1  y  yi
Đặt 
d 2  yi  1  y

Xét tất cả các vị trí tƣơng đối của y so với y i và y i  1 , việc chọn điểm

x i1 , y i1  là S hay P phụ thuộc vào việc so sánh d1 và d2 hay dấu của d1  d 2
Nếu d1  d 2  0 , chọn điểm S, tức là y i 1  y i .

Ngƣợc lại, nếu d1  d 2  0 , chọn điểm P, tức là y i 1  y i  1.

Xét pi  Dxd1  d 2   Dx2y  2yi  1

 pi  Dx2mx i  1  b  2yi  1

Dy
Thay m  vào phƣơng trình trên ta đƣợc: pi  2Dyxi  2Dxy i  c , với
Dx
c  2Dy  2b  1Dx .

Nhận xét: do Dx  0 nên dấu của biểu thức d1  d 2 cũng chính là dấu của pi.

Hay nói một cách khác, nếu tại bƣớc thứ i đã xác định đƣợc dấu của p i thì xem nhƣ
xác định đƣợc điểm cần chọn ở bƣớc (i+1).

Tính đƣợc p i tại mỗi bƣớc:

Ta có: pi1  pi  2Dyxi1  2Dxy i1  c  2Dyxi  2Dxy i  c

 pi1  pi  2Dyx i1  x i   2Dxyi1  yi 

 pi1  pi  2Dy  2Dx yi1  yi , do x i1  x i  1

Từ đây có thể suy ra cách tính p i 1 từ p i nhƣ sau:

- Nếu p i  0 thì pi1  pi  2Dy do chọn y i 1  y i .

- Ngƣợc lại, nếu p i  0 , thì pi1  pi  2Dy  2Dx , do chọn y i 1  y i  1.

Giá trị p 0 đƣợc tính từ điểm vẽ đầu tiên x 0 , y0  theo công thức:

32
Đồ họa máy tính
p0  2Dyx0  2Dxy 0  c  2Dyx0  2Dxy 0  2Dy  2b  1Dx

Do x 0 , y0  là điểm nguyên thuộc về đoạn thẳng nên ta có:

Dy
y0  mx 0  b  x0  b .
Dx

Thế vào phƣơng trình trên ta tính đƣợc: p0  2Dy  Dx .

Lƣu đồ thuật toán và chƣơng trình cài đặt thuật toán Bresenham vẽ đƣờng
thẳng

33
Đồ họa máy tính
procedure LineBres (x1, y1, x2, y2, color:integer)
begin
var Dx, Dy, p, Const1, Const2, i : integer;
x, y:integer;
Dx := x2 - x1;
Dy := y2 - y1;
p := 2*Dy - Dx;
Const1 := 2*Dy;
Const2 := 2*(Dy-Dx);
x := x1;
y := y1;
putpixel(x, y, Color);
for i:=x1 to x2 do
begin
if (p<0) then
p := p + Const1
else
begin
p := p + Const2;
y := y + 1;
end;
x:= x +1;
putpixel(x, y, Color);
end;
end;
Ví dụ 2.2.Tính các điểm đƣợc vẽ trên đoạn thẳng giới hạn bởi 2 điểm

A(12, 20), B(22, 27).

Ta có: Dx = 22 -12 =10, Dy = 27 – 20 = 7

Const1 = 2Dy = 14, Const2 = 2(Dy - Dx) = -6

P0 = 2Dy – Dx = 14 – 10 = 4

Ta có bảng xác định các điểm vẽ nguyên của đoạn thẳng AB nhƣ sau:

Bƣớc xi yi p
0 12 20 4
1 13 21 -2

34
Đồ họa máy tính

2 14 21 12
3 15 22 6
4 16 23 0
5 17 24 -6
6 18 24 8
7 19 25 2
8 20 26 -4
9 21 26 10
10 22 27 4
Nhận xét

Thuật toán Bresenham chỉ làm việc trên số nguyên và các thao tác trên số
nguyên chỉ là phép cộng và phép dịch bit (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ằm ở chỗ
xét dấu pi để quyết định điểm kế tiếp, và sử dụng công thức truy hồi p i+1 - pi để tính pi
bằng các phép toán đơn giản trên số nguyên. Thuật toán này cho kết quả tƣơng tự nhƣ
thuật toán DDA.

2.3.4 Thuật toán MidPoint

Thuật toán MidPoint đƣa ra cách chọn yi+1 là yi hay yi +1 bằng cách so sánh
điểm thực Q(xi + 1, y) với điểm MidPoint là trung điểm của S và P (hình 2.11). Ta có:

Nếu điểm Q nằm dƣới điểm MidPoint, ta chọn S.

Ngƣợc lại nếu điểm Q nằm trên điểm MidPoint ta chọn P.

Hình 2.12 Minh họa thuật toán MidPoint


35
Đồ họa máy tính
Ta có dạng tổng quát của phƣơng trình đƣờng thẳng: Ax  By  C  0

với A  y 2  y1 , B  x 2  x 1 , C  x 2 y1  x 1 y 2

Đặt Fx, y   Ax  By  C , ta có nhận xét :

<0 Nếu (x, y) nằm phía trên đƣờng thẳng


F x,y =0 Nếu x, y thuộc đƣờng thẳng
>0 Nếu x, y nằm phía dƣới đƣờng thẳng

Lúc này việc chọn các điểm S, P ở trên đƣợc đƣa về việc xét dấu của
 1
p i  2FMidPoint  2F x i  1, y i   .
 2

Nếu p i  0 , điểm MidPoint nằm phía trên đoạn thẳng. Lúc này điểm thực Q

nằm dƣới điểm MidPoint nên ta chọn S, tức là y i1  yi .


Ngƣợc lại, nếu pi  0 , điểm MidPoint nằm phía dƣới đoạn thẳng. Lúc này điểm
thực Q nằm trên điểm MidPoint nên ta chọn P, tức là yi1  yi  1 .

Mặt khác:

 1  1
p i 1  p i  2F x i 1  1, y i 1    2F x i  1, y i  
 2  2

  1    1 
 p i 1  p i  2Ax i 1  1  B y i 1    C  2Ax i  1  B y i    C
  2    2 
 p i 1  p i  2A  2By i 1  y i   2Dy  2Dx y i 1  y i 

Vậy:

p i 1  p i  2Dy , nếu p i  0 do ta chọn y i 1  y i .

p i 1  p i  2Dy  2Dx , nếu p i  0 do ta chọn y i 1  y i  1 .

Ta tính giá trị p 0 ứng với điểm ban đầu x 0 , y 0 : vì x 0 , y 0  là điểm thuộc đoạn

thẳng nên Ax 0  By 0  C  0

 1   1 
p 0  2F x 0  1, y 0    2Ax 0  1  B y 0    C
 2   2 

 p0  2Ax0  By0  C  2A  B  2A  B  2Dy  Dx


36
Đồ họa máy tính
Nhận xét: Thuật toán MidPoint cho kết quả tƣơng tự nhƣ thuật toán Bresenham.

2.4. Giải thuật sinh đƣờng tròn

2.4.1 Nguyên lý chung

Phƣơng trình đƣờng tròn có tâm là gốc tọa độ, bán kính R là: x  y  R . Từ
2 2 2

phƣơng trình này ta có thể đƣa về dạng y   R 2  x 2 . Để vẽ các đƣờng tròn có tâm
x C , y C  bất kì, đơn giản chỉ cần tịnh tiến các điểm sau khi vẽ xong đƣờng tròn có tâm
là gốc tọa độ theo vector tịnh tiến x C , y C  .

Do tính đối xứng nên để vẽ toàn bộ đƣờng tròn, ta chỉ cần vẽ cung ¼ đƣờng
tròn sau đó lấy đối xứng để xác định các điểm còn lại.

Một trong những cách đơn giản nhất là cho x chạy từ 0 đến R, sau đó tính y từ
công thức trên (chỉ lấy giá trị dƣơng) rồi làm tròn để xác định giá trị nguyên tƣơng
ứng. Cách làm này không hiệu quả do gặp phải các phép toán nhân và lấy căn làm hạn
37
Đồ họa máy tính
chế tốc độ, ngoài ra đƣờng tròn vẽ ra theo cách này có thể không liền nét (trừ trƣờng
hợp R lớn) khi x gần R (do chỉ có một giá trị y duy nhất cho một giá trị x). Chúng ta có
thể khắc phục điều này bằng cách điều chỉnh đối tƣợng thay đổi là x (rồi tính y theo x)
hay y (rồi tính x theo y) tùy vào giá trị tuyệt đối của hệ số góc đƣờng tròn là lớn hơn
hay nhỏ hơn 1, nhƣng cách làm này đòi hỏi thêm các phép tính toán và kiểm tra nên
làm cho thuật toán phức tạp thêm (hình 2.12)

Một cách tiếp cận khác là vẽ các điểm Rcosθ, Rsinθ, với θ chạy từ 00 đến
900. Cách này sẽ khắc phục hạn chế đƣờng không liền nét của thuật toán trên, tuy
nhiên điểm hạn chế chính của thuật toán này đó là chọn bƣớc nhảy cho θ nhƣ thế nào
cho phù hợp khi bán kính thay đổi.

(0,17)

(17,0)
Hình 2.13Đường tròn vẽ ra không liền nét

2.4.2 Thuật toán MidPoint

Do tính đối xứng của đƣờng tròn (C) nên ta chỉ cần vẽ cung (C1/8) là cung 1/8
đƣờng tròn, sau đó lấy đối xứng. Cung (C1/8) đƣợc mô tả nhƣ sau (cung của phần tô
xám trong hình vẽ):
(-x,y) (x,y)
 2
0  x  R (-y,x) (y,x)
2

R 2  y  R R
 2 (-y,-x) 2 (y,-x)

(-x,-y) (x,-y)

Hình 2.14 Các vị trí đối xứng trên đường tròn (C) tương ứng với (x,y)

Nhƣ vậy nếu có (x, y)  (C1/8) thì các điểm (y, x), (y,-x), (x,-y), (-x,-y), (-y,-x),
(-y,x), (-x,y) sẽ thuộc (C).

38
Đồ họa máy tính
Chọn điểm bắt đầu để vẽ là điểm (0, R). Dựa vào hình vẽ, nếu x i , y i  là điểm
nguyên đã tìm đƣợc ở bƣớc thứ i, thì điểm x i1 , yi1  ở bƣớc thứ (i+1) là sự lựa chọn
giữa S và P.

Hình 2.15 Thuật toán MidPoint vẽ đường tròn

x i1  x i  1

Nhƣ vậy:  y   y i
 i1  y  1
  i

Tƣơng tự nhƣ thuật toán MidPoint vẽ đoạn thẳng, việc quyết định chọn một
trong hai điểm S và P sẽ đƣợc thực hiện thông qua việc xét dấu của một hàm nào đó tại
điểm MidPoint là điểm nằm giữa chúng.

Đặt Fx, y   x  y  R , ta có :
2 2 2

<0 Nếu (x, y) nằm trong đƣờng tròn


F x,y =0 Nếu x, y nằm trên đƣờng tròn
>0 Nếu x, y nằm ngoài đƣờng tròn

 1
Xét p i  FMidPoint  F x i  1, y i   . Ta có:
 2
Nếu p i  0 , điểm MidPoint nằm trong đƣờng tròn. Lúc này điểm thực Q gần S

hơn nên ta chọn S, tức là y i 1  y i .

Ngƣợc lại, nếu p i  0 , điểm MidPoint nằm ngoài đƣờng tròn. Lúc này điểm

thực Q gần P hơn nên ta chọn P, tức là y i 1  y i  1 .

Mặt khác:

39
Đồ họa máy tính
 1  1
p i 1  p i  F x i 1  1, y i 1    F x i  1, y i  
 2  2

  1
2
   1
2

 p i 1  p i  x i 1  1   y i 1    R   x i  1   y i    R 2 
2 2 2

  2    2 

  1
2
   1
2

 p i 1  p i  x i  2   y i 1    R 2   x i  1   yi    R 2 
2 2

  2    2 

 p i 1  p i  2x i  3  y i21  y i2   y i 1  y i 

Vậy:

p i 1  p i  2x i  3 , nếu p i  0 do ta chọn y i 1  y i .

p i 1  p i  2x i  2y i  5 , nếu p i  0 do ta chọn y i 1  y i  1 .

Ta tính giá trị p0ứng với điểm ban đầu x0 , y0  là (0, R) và trung điểm tiếp theo
đƣợc suy ra là (1, R – 1/2). Theo công thức:

 1
p 0  F x 0  1, y 0  
 2
 1
 F1, R  
 2

= 1 + (R2 – R + 1/4) –R2

5
=
R
4

Lƣu đồ thuật toán và chƣơng trình cài đặt thuật toán MidPoint vẽ đƣờng tròn

40
Đồ họa máy tính

// Giải thuật vẽ 8 điểm đối xứng


procedureput8Pixel(x, y, Color: integer)
{
putpixel(x, y, Color);putpixel(y, x, Color);
putpixel(y,-x, Color);putpixel(x,-y, Color);
putpixel(-x,-y, Color);putpixel(-y,-x, Color);
putpixel(-y, x, Color); putpixel(-x, y,
F Color);
} alse
//Giải thuật Midpoint
T
procedure CircleMidPoint (R, color:
rue integer)
41
Đồ họa máy tính
begin
var x, y, p:integer;
x := 0;
y := R;
put8Pixel(x, y, color);
p:= 1 - R; // 5/4-R
while (x < y) do
begin
if (p < 0) then p := 2*x + 3
else
begin
p :=p+ 2*(x -y) + 5;
y := y -1;
end;
x++;
put8Pixel(x, y, color);
end;
end;
Ví dụ 2.3. Tính các điểm đƣợc vẽ trên đƣờng tròn có bán kính bằng 15 và tâm
tại gốc tọa độ.

Ta có: x = 0, y = 15, p = 1- R = -14

Bƣớc xi yi p
0 0 15 -14
1 1 15 -11
2 2 15 -6
3 3 15 1
4 4 14 -18
5 5 14 -7
6 6 14 6
7 7 13 -5
8 8 13 12
9 9 12 7
10 10 11 6

42
Đồ họa máy tính

11 11 10 9
2.4.3 Giải thuật Bresenham

Giả sử (xi,yi) đã vẽ đƣợc. Cần chọn điểm kế tiếp là (xi +1,yi) hoặc (xi +1,yi -1)

Từ phƣơng trình: x2 + y2 = R2 ta tính đƣợc giá trị y thực ứng với xi +1 là:

y2 = R2 - (xi +1)2 (3.1)

Hình 2.14 Thuật toán Bresenham sinh đường tròn

Đặt: d1 = yi2 - y2 = yi2 - R2 + (xi + 1)2

d2 = y2 - (yi - 1)2 = R2 - (xi + 1)2 - (yi - 1)2

Suy ra:

pi = d1 - d2 = 2.(xi + 1)2 + yi2 + (yi - 1)2 - 2R2 (3.2)

 pi+1 = 2.(xi+1 + 1)2 + y2i+1 + (yi+1 - 1)2 - 2R2 (3.3)

Từ (3.2) và (3.3) ta có:

pi+1 - pi = 4xi + 6 + 2.(y2i+1 - yi2) - 2.(yi+1 - yi)

pi+1 = pi + 4xi + 6 + 2.(y2i+1 - yi2) - 2.(yi+1 - yi) (3.4)

* Nhận xét:

Nếu pi< 0: ta chọn yi+1 = yi thay vào (3.4)  pi+1 = pi + 4xi + 6

Nếu pi 0: chọn yi+1 = yi– 1 thay vào (3.4) pi+1 = pi + 4.(xi - yi) + 10

Ta chọn điểm đầu tiên cần vẽ (0, R), theo (3.2) ta có: p1 = 3 - 2R

Lƣu đồ thuật toán và chƣơng trình cài đặt thuật toán Bresenham vẽ đƣờng
tròn

43
Đồ họa máy tính

procedure Circle(r, color: integer)


begin
var: x, y, p
x :=0, y :=r;
p :=3 - 2*r;
while (x<=y) do
begin
put8pixel(x, y, color);
if (p<0)then p:=p + 4*x + 6
else
begin
p:=p + 4*(x-y) + 10;
y:=y-1;
end;
x:=x+1;
end;
44
Đồ họa máy tính
end;
Ví dụ 2.4. Tính các điểm đƣợc vẽ trên đƣờng tròn có bán kính bằng 15

Ta có: x = 0, y = 15, p = 3 - 2R = -27

Bƣớc xi yi p
0 0 15 -27
1 1 15 -21
2 2 15 -11
3 3 15 3
4 4 14 -35
5 5 14 -13
6 6 14 13
7 7 13 -9
8 8 13 25
9 9 12 15
10 10 11 13
2.5. Giải thuật sinh Elippse

2.5.1. Giải thuật Midpoint

Tƣơng tự thuật toán vẽ đƣờng tròn, sử dụng thuật toán Midpoint để vẽ, 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. Sự
khác biệt so với thuật toán vẽ đƣờng tròn là ta phải vẽ 2 phần (chia cung từ (0,b) đến
(a,0) tại Q, có độ dốc -1) (Hình 2.16)

Trên phần 1: x thay đổi thì y thay đổi theo

Trên phần 2: y thay đổi thì x thay đổi theo

(
0, b) Q, độ
dốc = -1
(
a, 0)

Hình 2.16Mô tả giải thuật sinh đường Ellipse

45
Đồ họa máy tính
Xét Ellipse có tâm O, các bán kính là a và b, phƣơng trình là:

x2 y2
+ =1
a2 b 2
+ Xét trên phần 1:

Bắt đầu từ điểm (0, b), giả sử bƣớc thứ i điểm (xi,yi) đã vẽ, bƣớc thứ i + 1 ta
chọn điểm A(xi+1, yi) hoặc điểm B(xi+1,yi-1).

Ta có:

pi = f(xi+1,yi-1/2) = b2 (xi+1)2 + a2(yi-1/2)2 -a2b2

pi+1 = f(xi+1+1,yi+1-1/2) = b2(xi+1+1)2 + a2(yi+1-1/2)2 -a2b2

pi+1 - pi = b2((xi+1+1)2 - (xi+1)2 )+ a2((yi+1-1/2)2 - (yi-1/2)2) ( do xi+1 = xi+1)

pi+1 = pi + b2(2xi+ 3) + a2((yi+1-1/2)2 - (yi-1/2)2 )

- Nếu pi< 0 chọn A với xi+1 = xi+1 và yi+1 = yi do đó: pi+1 = pi + b2(2xi +3)

- Nếu pi ≥ 0 chọn B với xi+1 = xi+1 và yi+1=yi -1 do đó:

pi+1 = pi + b2(2xi +3) + a2((yi-1 -1/2)2 - (yi-1/2)2 )

= pi + b2(2xi +3) + a2(-3yi +9/4 +yi -1/4)

= pi + b2(2xi +3) + a2(-2yi +2)

Hay pi+1 = pi + b2(2xi +3) + a2(-2yi +2)

- Tính p1 tại (0,b)

p1 = f(x1+1, y1-1/2) = b2 + a2(b-1/2)2 -a2b2

p1 = b2 - a2b +a2/4

+ Xét trên phần 2:

Ta lấy tọa độ của điểm vẽ sau cùng trong phần 1 của đƣờng cong để tính giá trị
ban đầu cho phần 2.

Giả sử điểm (xk,yk) vừa chuyển quét cuối cùng của phần 1 nhập vào bƣớc j cho
phần 2 (xj,yj). Điểm vẽ kế tiếp có thể là: C(xj,yj-1) hoặc D(xj+1, yj-1)

Ta có:

qj = f(xj+1/2,yj-1) = b2(xj+1/2)2 + a2(yj-1)2 -a2b2


46
Đồ họa máy tính
2 2 2 2 2 2
qj+1 = f(xj+1+1/2,yj+1-1) = b (xj+1+1/2) + a (yj+1-1) -a b

qj+1 - qj = b2((xj+1+1/2)2 - (xj+1/2)2 )+ a2((yj+1-1)2 - (yj-1)2 ) (do yi+1 = yi - 1)

qj+1 = qj + b2((xj+1+1/2)2 - (xj+1/2)2 )+ a2(3 – 2yi)

- Nếu qj< 0 chọn D với yj+1=yj-1 và xj+1=xj +1

qj+1 = qj + b2((xj+3/2)2 - (xj+1/2)2 ) +a2 (-2yj +3)

qj+1 = qj + b2(3xj +9/4- xj -1/4) +a2 (-2yj +3)

Hay qj+1 = qj + b2(2xj +2) +a2 (-2yj +3)

- Nếu qj ≥ 0 chọn C với yj+1=yj -1 và xj+1= xj

Hay qj+1 = qj + a2(3 - 2yj )

- Tính q1:

q1 = f(xk+1/2,yk -1) = b2(xk+1/2)2 + a2(yk-1)2 -a2b2

Thủ tục sinh Ellipse:


procedure Ellipse(xc, yc, a, b, color: integer)
begin
var x, y, fx, fy, a2, b2, p: integer;
x := 0; y := b;
a2 := a * a;
b2 := b * b;
fx := 0;
fy := 2 * a2 * y;
plot(xc, yc, x,y, color);
p := ROUND(b2-(a2*b)+(0.25*a));
while (fx < fy) do
begin
x:= x +1;
fx := 2*b2;
if (p<0) then p := p +b2*(2*x +3)
else begin
y := y -1;
p := p + b2*(2*x +3) + a2*(-2*y +2);

47
Đồ họa máy tính
fy := fy - 2*a2;
end;
plot(xc, yc, x, y, color);
end;
p := ROUND(b2*(x+0.5)*(x+0.5) + a2*(y-1)*(y-1) -
a2*b2);
{b2(x+1/2)2+a2(y-1)2 - a2b2}
while (y>0) do
begin
y := y -1;
fy :=fy - 2*a2;
if (p>=0) then p := p + a2*(3 - 2*y)
else
begin
x := x +1;
fx := fx + 2*b2;
p := b2*(2*x+2) + a2*(-2*y +3);
end;
plot(xc, yc, x, y, color);
end;
end;
2.5.2. Giải thuật Bresenham
Giả sử điểm (xi,yi) đã đƣợc vẽ. Điểm tiếp theo cần chọn sẽ là (xi+1,yi) hoặc
(xi+1,yi-1)
b2
Thay (xi +1) vào phƣơng trình Elippse ta đƣợc: y2 = - 2
.(xi +1)2 + b2
a
Đặt:
b2
d1= yi2 - y2 = yi2 + 2
.(xi +1)2 -b2
a

b2
d2= y2 - (yi -1)2 = - 2
.(xi +1)2 + b2 - (yi -1)2
a

b2
 pi = d1 - d2 = 2.[ 2
.(xi +1)2 - b2] + 2.(yi2 + yi) -1
a

b2
pi+1 = 2[ 2
.(xi+1 +1)2 - b2] + 2.(yi+12 + yi+1) -1
a

48
Đồ họa máy tính
Suy ra:
b2
pi+1 - pi = 2 2
[(xi+1 +1)2 - (xi +1)2] + 2.( yi+12 - yi2 + yi+1 - yi) (**)
a
*Nhận xét:
 pi< 0: Chọn yi+1 = yi
b2
(**)  pi+1 = pi + 2. .(2x + 3)
a2

 pi 0: Chọn yi+1 = yi -1


b2
(**)  pi+1 = pi + 2. .(2x + 3) - 4yi
a2
Với điểm đầu tiên (0,b), ta có:
b2
p1 = 2 - 2b + 1
a2
Từ đó, ta có thủ tục vẽ Ellipse nhƣ sau:
Procedure Ellipse(xc,yc,a,b:Integer;Color:Byte);
Var p,a2,b2:real;
x,y:integer;
(*-------------------*)
Procedure VeDiem;
Begin
PutPixel(xc+x,yc+y,Color);
PutPixel(xc-x,yc+y,Color);
PutPixel(xc-x,yc-y,Color);
PutPixel(xc+x,yc-y,Color);
End;
(*-------------------*)
Begin
a2:=a*a;
b2:=b*b;
{Nhanh 1}
x:=0; y:=b;
p:=2*b2/a2 - 2*b + 1;
While (b2/a2)*(x/y)<1 do
Begin
VeDiem;
If p<0 then p:=p + 2*(b2/a2)*(2*x+3)
else Begin
p:=p - 4*y + 2*(b2/a2)*(2*x+3);
y:=y-1;
End;

49
Đồ họa máy tính
x:=x+1;
End;
{Nhanh 2}
y:=0; x:=a;
p:=2*(a2/b2) - 2*a + 1;
While (a2/b2)*(y/x)<=1 do
Begin
VeDiem;
If p<0 then p:=p + 2*(a2/b2)*(2*y+3)
else Begin
p:=p - 4*x + 2*(a2/b2)*(2*y+3);
x:=x-1;
End;
y:=y+1;
End;
End;
2.6. Giải thuật sinh đa giác

Việc biểu diễn đa giác thông qua:

- Tập các đoạn thẳng

- Tập các điểm thuộc đa giác

Các loại đa giác:

Hình 2.17 Các loại đa giác

Đa giác lồi: Là đa giác có đƣờng thẳng nối bất kỳ 2 điểm bên trong nào của đa
giác đều nằm trọn trong đa giác.

Đa giác không lồi là đa giác lõm.

Các đƣờng thẳng bao đa giác - cạnh của đa giác. Các điểm giao của cạnh - đỉnh
của đa giác. Thông tin cần thiết để xác định đa giác:

- Số cạnh

- Tọa độ các đỉnh của đa giác

Giải thuật sinh đa giác:


50
Đồ họa máy tính
procedure Polygon (arrayx, arrayy,n)
begin
//n là số đỉnh của đa giác
//arrayx là mảng hoành độ các đỉnh của đa giác
//arrayy là mảng tung độ các đỉnh của đa giác
if (n<3) then exit;
for i: = 1 to n – 1 do
line(arrayx[i],arrayy[i], arrayx[i+1], arrayy[i+1]);
line(arrayx[i+1],arrayy[i+1], arrayx[1], arrayy[1]);
end;

2.7. Giải thuật sinh ký tự

Trong màn hình text, truy xuất các ký tự trên màn hình đƣợc hỗ trợ bởi phần
cứng. Các ký tự đƣợc lƣu trữ trong bộ nhớ ROM, dƣới dạng bitmap hay các ma trận
ảnh. Phần cứng sẽ đƣa ký tự lên màn hình tại ví trí xác định, tính toán cuốn trang và
xuống dòng.

Trong đồ hoạ:

+ Vector: Định nghĩa các ký tự theo những đƣờng cong mềm bao ngoài của
chúng, tốn kém về mặt tính toán. Biểu diễn ký tự vector có một số đặc điểm sau:

Phức tạp (tính toán phƣơng trình)

Lƣu trữ gọn nhẹ

Các phép biến đổi dựa vào các công thức biến đổi

Kích thƣớc phụ thuộc vào môi trƣờng ( không có kích thƣớc cố định)

Hình 2.18 Ký tự vector

51
Đồ họa máy tính
Xây dựng theo phƣơng pháp định nghĩa các ký tự bởi đƣờng cong mềm bao
ngoài của chúng dễ dàng thay đổi kích thƣớc của ký tự cũng nhƣ nội suy ra các dạng
của ký tự. Hoàn toàn độc lập với thiết bị.

+ Bitmap: Định nghĩa mỗi ký tự với 1 font chữ cho trƣớc là 1 ảnh bitmap hình
chữ nhật nhỏ. Biểu diễn ký tự bitmap có một số đặc điểm sau:

Đơn giản trong việc sinh ký tự ( copypixel)

Lƣu trữ lớn

Các phép biến đổi (I,B, scale) đòi hỏi lƣu trữ thêm kích thƣớc không đổi

Hình 2.19 Ký tự bitmap

Bitmap: Sử dụng hàm copypixel (copy điểm ảnh) đƣợc lƣu trữ trong bộ nhớ cố
định - Fontcache, đƣa vào bộ nhớ đệm hiển thị. Mỗi 1 ký tự nhƣ 1 ma trận 2 chiều của
các điểm ảnh - mặt nạ.

procedure Hàm_sinh_ki_tu (mask)


{
xmax, ymax, xmin, ymin //các giới hạn của mặt nạ
xo, yo//điểm gốc trên bộ đệm hiển thị
for i:= y min to ymax – 1 do
for j:= xmin to xmax -1 do
if (mask(i,j) <> 0) then copypixel ((mask(i,j),
pixel(xo+j, yo+i));
}
Ký tự fontcache bitmap đơn giản của SRG lƣu trữ các ký tự theo chuỗi liên tiếp
nhau trong bộ nhớ. Nhƣng độ rộng các ký tự khác nhau, truy nhập các fontcache thông
qua bản ghi về cấu trúc cho từng kí tự.

Cấu trúc font chữ


Charlocation =record
leftx: integer;
52
Đồ họa máy tính
width: integer;;
end;
fontcache =record
CacheId: integer;
Height: integer; // Độ rộng chữ
CharSpace: integer; // Khoảng cách giữa các ký tự
Table: array [0..127] of Charlocation;
end;
Bài tập áp dụng:
Bài toán: Vẽ đồ thị của hàm số y = f(x) trên đoạn [Min,Max].

Ý tưởng: Cho x chạy từ đầu đến cuối để lấy các tọa độ (x,f(x)) sau đó làm tròn thành
số nguyên rồi nối các điểm đó lại với nhau.

Giải thuật:
 Bƣớc 1: Xác định đoạn cần vẽ [Min,Max].
 Bƣớc 2: - Đặt gốc tọa độ lên màn hình (x0,y0).
- Chia tỷ lệ vẽ trên màn hình theo hệ số k.
- Chọn bƣớc tăng dx của mỗi điểm trên đoạn cần vẽ.
 Bƣớc 3: Chọn điểm đầu cần vẽ: x = Min, tính f(x)
Đổi qua tọa độ màn hình và làm tròn:
x1:=x0 + Round(x.k);
y1:=y0 - Round(y.k);
Di chuyển đến (x1,y1): MOVETO(x1,y1);
 Bƣớc 4:
Tăng x lên với số gia dx: x:=x + dx;
Đổi qua tọa độ màn hình và làm tròn:
x2:=x0 + Round(x.k);
y2:=y0 - Round(y.k);
Vẽ đến (x2,y2): LINETO(x2,y2);
 Bƣớc 5: Lặp lại bƣớc 4 cho đến khi x > Max thì dừng.
Ví dụ: Vẽ đồ thị hàm số f(x) = Sin(x)
Uses crt,Graph;
53
Đồ họa máy tính
Var dau,cuoi:real;
Gd,Gm:Integer;
Function F(x:real):real;
Begin
F:=Sin(x);
End;
Procedure VeHinhSin(ChukyDau,ChuKyCuoi:real);
var x1,y1,x2,y2:integer;
a,x,k:real;
x0,y0:word;
Begin
x0:=GetMaxX div 2; y0:=GetMaxY div 2;
K:=GetMaxX/30;
a:=Pi/180; x:=ChuKyDau;
x1:=x0 + Round(x*k); y1:=y0 - Round(F(x)*k);
Moveto(x1,y1);
While x<ChuKyCuoi do
Begin
x:=x+a;
x2:=x0 + Round(x*k);
y2:=y0 - Round(F(x)*k);
LineTo(x2,y2);
End;
End;
BEGIN
Gd:=0;
InitGraph(Gd,Gm,’C:\BP\BGI’);
Dau:=-4*Pi; cuoi:=4*Pi;
VeHinhSin(Dau,cuoi);
repeat until KeyPressed;
CloseGraph;
END.

54
Đồ họa máy tính
CÂU HỎI VÀ BÀI TẬP CHƢƠNG 2

Chọn một phƣơng án đúng cho mỗi câu hỏi sau:


1. Xây dựng giải thuật tổng quát để vẽ đoạn thẳng ta có xét hệ số k (hệ số góc của
đoạn thẳng) có tất cả các trƣờng hợp của k:

[a]--2

[b]--4

[c]--6

[d]--8

2. Để biểu diễn đoạn thẳng thông qua phƣơng trình tham số nhƣ sau:

[a]--f(x,y)=0 hay ax + by +c =0

[b]--x(v)=x1 +v(x2 -x1 ) và y(v) = y1 +v(y2 -y1 ) có v Є [0,1]

[c]--P(u) = P1 + u(P2 -P1 ) có u Є [0,1]

[d]--y=f(x) hay y=kx+b

3. Trong giải thuật Bresenham (vẽ đoạn thẳng) dùng biểu diễn đoạn thẳng là:

[a]--Phƣơng trình không tƣờng minh

[b]--Phƣơng trình tƣờng minh

[c]--Phƣơng trình các điểm gần với đoạn thẳng

[d]--Phƣơng trình tham số

4. Trong giải thuật Midpoint (vẽ đoạn thẳng) dùng biểu diễn đoạn thẳng là:

[a]--Phƣơng trình không tƣờng minh

[b]--Phƣơng trình tƣờng minh

[c]--Phƣơng trình điểm giữa

[d]--Phƣơng trình tham số

5. Giải thuật sau là giải thuật nào đã học?


procedure Function(xt,yt,r,c:integer){
var x, y, d:integer;
x := 0;
y := r;
d := 3 - 2 * r;
55
Đồ họa máy tính
while (x <= y) do begin
putpixel(xt + x, yt + y, c);
putpixel(xt - x, yt + y, c);
putpixel(xt + x, yt - y, c);
putpixel(xt - x, yt - y, c);
putpixel(xt + y, yt + x, c);
putpixel(xt - y, yt + x, c);
putpixel(xt + y, yt - x, c);
putpixel(xt - y, yt - x, c);
if (d < 0) then
d := d+ 4 * x + 6;
else begin
d := d+4 * (x-y) + 10;
y := y -1; end;
x:= x +1;
end; end;
[a]--Giải thuật Bresenham xây dựng đƣờng tròn
[b]--Giải thuật Midpoint xây dựng đƣờng tròn
[c]--Giải thuật Bresenham xây dựng đƣờng Ellipse
[d]--Giải thuật Midpoint xây dựng đƣờng Ellipse
6. Giải thuật sau là giải thuật nào đã học?
procedure Function(xt, yt, r, c:integer){
var x, y, d:integer;
x := 0;
y := r;
d := 1 - r;
while (x <= y) do begin
putpixel(xt + x, yt + y, c);
putpixel(xt - x, yt + y, c);
putpixel(xt + x, yt - y, c);
putpixel(xt - x, yt - y, c);
putpixel(xt + y, yt + x, c);
putpixel(xt - y, yt + x, c);
putpixel(xt + y, yt - x, c);
putpixel(xt - y, yt - x, c);
if (d < 0) then
d :=d+ 2 * x + 3;

56
Đồ họa máy tính
else begin
d :=d+ 2* (x-y) + 5;
y:=y-1;
end;
x:=x+1;
end;
end;
[a]--Giải thuật Bresenham xây dựng đƣờng tròn
[b]--Giải thuật Midpoint xây dựng đƣờng Ellipse
[c]--Giải thuật Midpoint xây dựng đƣờng tròn
[d]--Giải thuật Bresenham xây dựng đƣờng Ellipse
7. Điểm đầu nút của đoạn thẳng (-2,6) và (6,18), tính giá trị của k:
[a]--k= 3
[b]--k= -6
[c]--k= 1.5
[d]--k= -3
8. Đoạn mã sau là thuộc giải thuật Bresenham vẽ đoạn thẳng:
dx:=x2-x1;
dy:=y2-y1;
for x:=x1 to x2 do begin
putpixel(x,y,c);
if(p<0) then
p :=p+ 2*dy;
else begin
p :=p+ 2*dy - 2*dx;
y:=y+1;
end;
end;
[a]--Đúng
[b]—Sai
9. Điểm đầu nút của đoạn thẳng (-2,-6) và (3,-2), tính giá trị của k :
[a]--k= -0.8
[b]--k= 3
[c]--k= 0.8
[d]--k= 1.5
10. Giải thuật sau là giải thuật nào?
procedure ThuTuc(X[],Y[]) begin

57
Đồ họa máy tính
for i:=0 to 6 do
line(X[i],Y[i],X[i+1],Y[i+1]);
line(X[i+1],Y[i+1],X[0],Y[0]);
end;
[a]--Giải thuật vẽ đƣờng bao đa giác với số đỉnh là 8
[b]--Giải thuật tô đa giác với số đỉnh là 7
[c]--Giải thuật vẽ đƣờng bao đa giác với số đỉnh là 7
[d]--Giải thuật vẽ đƣờng bao đa giác với số đỉnh là 6
11. Giải thuật sau là giải thuật nào?
procedure ThuTuc( X[], Y[]) begin
for i:=0 to 5 do
line(X[i],Y[i],X[i+1],Y[i+1]);
line(X[i+1],Y[i+1],X[0], Y[0]);
end;
[a]--Giải thuật vẽ đƣờng bao đa giác với số đỉnh là 7
[b]--Giải thuật vẽ đƣờng bao đa giác với số đỉnh là 5
[c]--Giải thuật tô đa giác với số đỉnh là 6
[d]--Giải thuật vẽ đƣờng bao đa giác với số đỉnh là 6
12. Phƣơng trình không tƣờng minh cho đƣờng tròn là: (r là bán kính của đƣờng tròn)
[a]--f(x,y)=x2 +y2 -r2 =0
[b]--f(x +1,y -1/2)=0
[c]--(x-1)2 + (y-1)2 = (r-1)2
[d]--f(x,y)=b2x2 + a2y2 - a2b2 =0
13. Phƣơng trình không tƣờng minh cho đƣờng Ellipse là: (ra là bán kính theo trục ox,
rb là bán kính theo trục oy và (xc,yc) là tọa độ tâm):
[a]--f(x,y) = rb2(xc+x)2 + ra2(yc+y)2 - ra2rb2 = 0
[b]--f(x,y)=(xc+x)2/ra2 + (yc+y)2/rb2 - ra2rb2 =0
[c]--f(x i +1,y i -1/2) = 0
[d]--ra2(xc+x)2 + rb2(yc+y)2 - ra2rb22=0
14. Theo giải thuật Midpoint vẽ đoạn thẳng thì d i = f(x i +1,y i +1/2) - trung điểm, với
giá trị nào của d để trung điểm nằm dƣới đoạn thẳng:
[a]--di = 0
[b]--di = di+1
[c]--di > 0
[d]--di < 0
15. Đoạn thẳng có 2 điểm cuối là (1,1) và (8,5). Dùng thuật toán Bresenham vẽ đoạn
thẳng tính các giá trị tại x=3.

58
Đồ họa máy tính
[a]--p=5 và y=3
[b]--p=2 và y=4
[c]--p=-3 và y= 2
[d]--p=-3 và y= 3
16. Đoạn thẳng có 2 điểm cuối là (1,1) và (8,5). Dùng thuật toán Midpoint vẽ đoạn
thẳng tính các giá trị tại x=3.
[a]--d=4 và y=3
[b]--d=-3 va y=3
[c]--d=-2 và y=2
[d]--d=2 và y=2
Bài tập
1. Tính các điểm đƣợc vẽ trên các đoạn thẳng giới hạn bởi các cặp điểm sau:

a. A(10, 20), B(18, 27) theo thuật toán DDA


b. C(16,19), D(24, 25) theo thuật toán Bresenham
C. E(15, 17), F(23, 22) theo thuật toán Midpoint

2. Tính các điểm đƣợc vẽ trên các đƣờng tròn sau:

a. Đƣờng tròn có phƣơng trình (x – 6)2 + (y-3)2 = 121 theo thuật toán Midpoint
b. Đƣờng tròn có bán kính bằng 10 và tâm tại điểm (5, 5) theo thuật toán
Bresenham
3. Trình bày giải thuật DDA sinh đƣờng thẳng với hệ số góc m > 1, Dx >0. Áp dụng
giải thuật, tính các điểm đƣợc vẽ trên đoạn thẳng giới hạn bởi 2 điểm với các tọa độ
A(15, 27), B(22, 35).
4. Trình bày giải thuật Midpoint sinh đƣờng thẳng với hệ số góc m > 1, Dx >0. Áp
dụng giải thuật, tính các điểm đƣợc vẽ trên đoạn thẳng giới hạn bởi 2 điểm A(12, 19);
B(18, 27).
5. Trình bày giải thuật Bresenham sinh đƣờng thẳng với hệ số góc m > 1, Dx >0. Áp
dụng giải thuật, tính các điểm đƣợc vẽ trên đoạn thẳng giới hạn bởi 2 điểm A(20, 22);
B(25, 30).
6. Áp dụng giải thuật Bresenham viết hàm sinh đoạn thẳng (xét tất cả các trƣờng hợp
của hệ số góc).
7. Áp dụng giải thuật Midpoint viết hàm sinh đoạn thẳng (xét tất cả các trƣờng hợp của
hệ số góc).
8. Áp dụng giải thuật DDA viết hàm sinh đoạn thẳng (xét tất cả các trƣờng hợp của hệ
số góc).
59
Đồ họa máy tính
9. Dùng giải thuật Midpoint viết hàm sinh đƣờng tròn có toạ độ tâm (xc, yc) và bán
kính r.
10. Áp dụng các giải thuật DDA, Bresenham, Midpoint tính các điểm đƣợc vẽ trên các
đoạn thẳng giới hạn bởi các cặp điểm sau:
a. A(9, 22), B(19, 28)
b. C(10,10), D(15, 21)
c. E(9, 19), F(1, 29)

11. Tính các điểm đƣợc vẽ trên các đƣờng tròn sau:

a. Đƣờng tròn có phƣơng trình (x – 2)2 + (y-7)2 = 121 theo thuật toán
Midpoint
b. Đƣờng tròn có bán kính bằng 13 và tâm tại điểm (1, -5) theo thuật toán
Bresenham

12. Cài đặt thủ tục vẽ đoạn thẳng theo thuật toán Bresenham và MidPoint cho các
trƣờng hợp hệ số góc m>1, m<-1, -1<m<0.
13. Viết thủ tục LineTo(x,y:Integer); để vẽ đoạn thẳng từ vị trí hiện thời đến điểm có
tọa độ (x,y).
14. Viết thủ tục LineRel(dx,dy:Integer); để vẽ đoạn thẳng từ vị trí hiện thời đến điểm
mới cách điểm hiện thời một khoảng theo trục x là dx và theo trục y là dy.
15. Cài đặt thủ tục vẽ đƣờng tròn theo thuật toán MidPoint.
16. Viết thủ tục Arc(x0,y0,g1,g2:Integer; R:Word); để vẽ cung tròn có tâm (x0,y0)
bán kính R với góc bắt đầu là g1 và góc kết thúc là g2.
17. Viết thủ tục Sector(x0,y0,g1,g2:Integer; Rx,Ry:Word); để vẽ cung Ellipse có
tâm (x0,y0) bán kính theo trục X là Rx, bán kính theo trục Y là Ry với góc bắt đầu là
g1 và góc kết thúc là g2.
18. Viết thủ tục DrawPoly(P:Array; n:Byte; xc,yc,R:Word); để vẽ một đa giác đều
có n đỉnh lƣu trong mảng P nội tiếp trong đƣờng tròn tâm (xc,yc) bán kính R.
19. Viết thủ tục Circle3P(A,B,C:ToaDo2D); để vẽ đƣờng tròn đi qua 3 điểm A,B,C.
20. Viết thủ tục Arc3P(A,B,C:ToaDo2D); để vẽ cung tròn đi qua 3 điểm A,B,C.
21. Vẽ đồ thị các hàm số sau:
y = ax2 + bx + c, y = ax3 + bx2 + cx + d, y = ax4 + bx3 + cx2 + dx + e
ax  b ax 2  bx  c
y= , y= .
cx  d dx  e

60
Đồ họa máy tính
22. Vẽ các đƣờng cong sau:
x2 y2 x2 y2
y2 = 2px + =1 - = 1
a2 b2 a2 b2

Hƣớng dẫn giải bài tập


1.
a.
Stt 1 2 3 4 5 6 7 8 9
x 10 11 12 13 14 15 16 17 18
y 20 21 22 23 24 24 25 26 27
b.
Stt 1 2 3 4 5 6 7 8 9
x 16 17 18 19 20 21 22 23 24
y 19 20 21 21 22 23 24 24 25
P 4 0 -4 8 4 0 -4 8 4
c.
Stt 1 2 3 4 5 6 7 8 9
x 15 16 17 18 19 20 21 22 23
y 17 18 18 19 19 20 21 21 22
P 2 -4 6 0 10 4 -2 8 2
2.
a.
Stt 1 2 3 4 5 6 7 8 9
x 6 7 8 9 10 11 12 13 14
y 14 14 14 14 13 13 12 11 11
P -10 -7 -2 5 -6 5 0 -1 16
b.
Stt 1 2 3 4 5 6 7 8 9
x 5 6 7 8 9 10 11 12 13
y 15 15 15 15 14 14 13 12 11
P -17 -11 -1 13 -5 17 11 13 23

3.
- Giải thuật DDA sinh đƣờng thẳng với hệ số góc m > 1, Dx >0.
void ddaline (int x1,int y1,int x2,int y2,int c)
{ int x=x1;
float y=y1;
float k=(float)(x2-x1)/(y2-y1);
61
Đồ họa máy tính
putpixel(x,round(y),c);
for(int i=y1;i<=y2;i++)
{
y++;
x=x+k;
putpixel(round(x),y, c);
}
}
- Áp dụng giải thuật, tính các điểm đƣợc vẽ trên đoạn thẳng giới hạn bởi 2 điểm
A(15, 27), B(22, 35).
Stt 1 2 3 4 5 6 7 8 9
x 15 16 17 18 18 19 20 21 22
y 27 28 29 30 31 32 33 34 35
4.
- Giải thuật DDA sinh đƣờng thẳng với hệ số góc m > 1, Dx >0.
void Mid_line(int x1, int y1, int x2, int y2, int c)
{ int x, y, dx, dy,d;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
d= 2dx - dy;
for (y=y1; y<=y2; y++)
{
putpixel(x, y, c);
if (d < 0)
d = d + 2dx;
else {
x ++;
d = d + 2dx - 2dy;
}
}
}

62
Đồ họa máy tính
- Áp dụng giải thuật, tính các điểm đƣợc vẽ trên đoạn thẳng giới hạn bởi 2 điểm
A(12, 19); B(18, 27).

Stt 1 2 3 4 5 6 7 8 9
x 12 13 14 14 15 16 17 17 18
y 19 20 21 22 23 24 25 26 27
P 4 0 -4 8 4 0 -4 8 4

5.
Giải thuật Bresenham sinh đƣờng thẳng với hệ số góc m > 1, Dx >0.
void Bre_line(int x1, int y1, int x2, int y2, int c)
{int x, y, dx, dy,p,const1,const2;
y = y1;
dx = x2 - x1;
dy = y2 - y1;
p = 2*dx - dy;
const1 = 2*dx;
const2 = 2*(dx-dy);
for (y=y1; y<=y2; y++)
{
putpixel(x, y, c);
if (p < 0)
p += const1; // p=p + 2dx
else {
p +=const2; //p=p+2dx-2dy
x++;
}
}
}
- Áp dụng giải thuật, tính các điểm đƣợc vẽ trên đoạn thẳng giới hạn bởi 2 điểm
A(12, 19); B(18, 27).
Stt 1 2 3 4 5 6 7 8 9
x 20 21 21 22 23 23 24 24 25
y 22 23 24 25 26 27 28 29 30
P 2 -4 6 0 -6 4 -2 8 2

63
Đồ họa máy tính

Chƣơng 3

CÁC GIẢI THUẬT ĐỒ HOẠ CƠ SỞ


3.1. Hệ toạ độ và mô hình chuyển đổi

3.1.1. Các hệ thống tọa độ trong đồ họa

1) Hệ toạ độ thực (WCS – World Coordinate System)

Hệ toạ độ của đối tƣợng đƣợc các chƣơng trình ứng dụng sử dụng để mô tả toạ
độ các đối tƣợng trong thế giới thực. Đơn vị trong hệ thống toạ độ phụ thuộc vào
không gian và kích thƣớc của đối tƣợng đƣợc mô tả: mm, m, km…

Hình 3.1 Hệ toạ độ thực

2) Hệ toạ độ thiết bị (DCS – Device Coordinate System)

Là hệ thống toạ độ của thiết bị nơi hiển thị hình ảnh và không gian của đối
tƣợng mà ứng dụng mô tả. Không gian của hệ thống của toạ độ này chính là kích
thƣớc của thiết bị hiển thị đƣợc sử dụng.

Ví dụ: màn hình VGA 640x480, SVGA 600x800…

Hình 3.2 DCS – Device Coordinate System

3) Hệ toạ độ thiết bị chuẩn (NDCS – Normalized Device Coordinate System)

64
Đồ họa máy tính
Chuyển đổi đối tƣợng từ không gian thực vào toạ độ thiết bị hiển thị. Phần mềm
đồ hoạ đƣợc viết sẽ thực hiện sự chuyển đổi mà chƣa thể xác định rõ kích thƣớc của
thiết bị cũng nhƣ độ phân giải. Ta có công cụ độc lập với thiết bị nhằm mô tả vùng
hiển thị ra hệ toạ độ thiết bị chuẩn hoá. Coi NDCS nhƣ hệ toạ độ thiết bị có kích thƣớc
màn hình hiển thị là một hình vuông có cạnh là một đơn vị (1x1).

Hình 3.3 NDCS – Normalized Device Coordinate System

- Qui trình để chuyển đổi các đối tƣợng trong WCS sang NDCS đƣợc gọi là
phép ánh xạ cửa sổ sang cổng xem hay phép biến đổi chuẩn hoá (Window to Viewport
mapping or Normalization Transformation)

- Qui trình có thể áp các toạ độ thiết bị hiển thị chuẩn hoá sang các thiết bị rời
rạc đƣợc gọi là phép biến đổi trạm làm việc (Workstation Transformation)

3.1.2. Phép chuyển đổi

- Một cửa sổ (window) đƣợc chỉ định bởi bốn toạ độ thực (WCS): Xwmin, Xwmax,
Ywmin, Ywmax

- Một cổng xem (viewport) đƣợc mô tả bởi bốn toạ độ thiết bị chuẩn hoá
(NDCS): Xvmin, Xvmax, Yvmin, Yvmax

a) b)

Hình 3.4 a)Đối tượng cổng xem; b)Đối tượng trong cửa sổ

65
Đồ họa máy tính
Mục đích của phép ánh xạ này là chuyển đổi các toạ độ thực (Xw,Yw) của một
điểm tuỳ ý sang thiết bị chuẩn hoá tƣơng ứng (Xv,Yv). Để giữ lại khoảng cách của
điểm trong cổng xem bằng với khoảng cách của điểm trong cửa sổ, với yêu cầu:
𝑥𝑣 − 𝑥𝑣𝑚𝑖𝑛 𝑥𝑤 − 𝑥𝑤𝑚𝑖𝑛
=
𝑥𝑣𝑚𝑎𝑥 − 𝑥𝑣𝑚𝑖𝑛 𝑥𝑤𝑚𝑎𝑥 − 𝑥𝑤𝑚𝑖𝑛
𝑦𝑣 − 𝑦𝑣𝑚𝑖𝑛 𝑦𝑤 − 𝑦𝑤𝑚𝑖𝑛
=
𝑦𝑣𝑚𝑎𝑥 − 𝑦𝑣𝑚𝑖𝑛 𝑦𝑤𝑚𝑎𝑥 − 𝑦𝑤𝑚𝑖𝑛
𝑥𝑣 = 𝑥𝑣𝑚𝑖𝑛 + (𝑥𝑤 − 𝑥𝑤𝑚𝑖𝑛 )𝑠𝑥
𝑦𝑣 = 𝑦𝑣𝑚𝑖𝑛 + (𝑦𝑤 − 𝑦𝑤𝑚𝑖𝑛 )𝑠𝑦
𝑥𝑣𝑚𝑎𝑥 − 𝑥𝑣𝑚𝑖𝑛
𝑠𝑥 =
𝑥𝑤𝑚𝑎𝑥 − 𝑥𝑤𝑚𝑖𝑛
𝑦𝑣𝑚𝑎𝑥 − 𝑦𝑣𝑚𝑖𝑛
𝑠𝑦 =
𝑦𝑤𝑚𝑎𝑥 − 𝑦𝑤𝑚𝑖𝑛

3.2. Các giải thuật xén tỉa

3.2.1. Khái niệm

Xén tỉa là tiến trình xác định các điểm của một đối tƣợng nằm trong hay ngoài
cửa sổ hiển thị. Nằm trong đƣợc hiển thị, nằm ngoài loại bỏ. Việc loại từng điểm ảnh
của đối tƣợng thƣờng chậm nhất là khi đối tƣợng mà phần lớn nằm ngoài cửa sổ hiển
thị.

3.2.2. Các giải thuật xén tỉa đoạn thẳng

1) Bài toán: Cho cửa sổ với các đƣờng biên có tọa độ góc dƣới trái và góc trên
phải lần lƣợt là (xwmin, ywmin), (xwmax, ywmax) và đoạn thẳng cho bởi 2 điểm P1(x1, y1),
P2(x2, y2). Hãy xác định phần hiển thị của đoạn thẳng trong cửa sổ trên.

2) Ý tưởng:

Hình 3.5. Điểm và đoạn thẳng bị cắt khỏi cửa sổ


66
Đồ họa máy tính
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

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 3.5, điểm P1 đƣợc giữ lại, trong khi điểm P2 bị cắt bỏ.

Hình 3.5 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ữ 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 clipping đƣờng (line-clipping) 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.

3) Giải thuật Cohen Sutherland Outcode

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 (region code) nhƣ ở hình 3.6, 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ổ. 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 (left), phải (right), trên đỉnh (top), dƣới đáy
(bottom). 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:

67
Đồ họa máy tính

4 3 2 1

Trên Dƣới Phả Trái


i
Hình 3.6 Vị trí các bit trong mã vùng nhị phân

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 (xem hình 3.7)

1001 1000 1010

Cửa sổ
0001 0010
0000

0101 0100 0110

Hình 3.7 Các mã vùng nhị phân cho các điểm đầu mút đoạn thẳng
được dùng để định nghĩa các vùng tọa độ liên hệ với một cửa sổ.

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 bằng 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ự.

Bít 4 = sign(y-yw )
max

Bít 3 = sign(yw -y)


min

Bít 2 = sign(x-xw ) (3.1)


max

Bít 1 = sign(xw -x)


min

Trong đó ta có quy ƣớc: sign a = 1 nếu a ≥ 0


0 nếu a < 0
Khi 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

68
Đồ họa máy tính
của hai đầu mút có một số 1 ở cùng vị trí bit thì đoạn thẳng 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ụ, ta 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 logic 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ổ (hình 3.8).

Hình 3.8 Các đoạn từ một điểm này đến một điểm khác có thể cắt
cửa sổ hoặc giao điểm với các biên nằm 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 ở hình 3.8, 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 này bằng cách so sánh một điểm đầu mút (điểm
đ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.

Để minh họa các bƣớc xác định trong việc cắt các đoạn khỏi biên cửa sổ dùng
thuật toán của Cohen-Sutherland, chúng ta xem các đoạn trong hình 3.8 đƣợ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, ta bỏ đoạn từ P1 đến P‘1. Tƣơng tự, vì P2
bên ngoài cửa sổ, ta kiểm tra và thấy rằng điểm này nằm phía trên cửa sổ. Giao điểm
P‘2 đƣợc tính, và đoạn từ P‘1 đến P‘2 đƣợc giữ lại. 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

69
Đồ họa máy tính
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ị 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, y1) và (x2, y2),
tung độ y của giao điểm với một biên dọc cửa sổ có thể tính đƣợc theo công thức:

y = y1 + m (x - x1) (3.2)

Ở đây giá trị x đƣợc đặt là xwmin hoặc xwmax, và hệ số góc m đƣợc tính bằng m
= (y2 - y1)/ (x2 - x1)

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 = x1 + (y - y1)/m (3.3)

Với y là ywmin hoặc ywmax.

Nhƣ vậy việc thực hiện giải thuật Cohen-Sutherland chia làm hai bƣớc:

Bƣớc 1: Gán mã vùng 4-bit cho mỗi điểm đầu, cuối của đoạn thẳng theo
nguyên tắc (3.1).

Bƣớc 2: Quá trình kiểm tra vị trí của đoạn thẳng so với cửa sổ. Giả sử 2 điểm
đầu cuối của đoạn thẳng là P1 và P2 đã đƣợc cấp mã.

Trƣờng hợp1: Mã của P1 hoặc P2 đều = 0000 thì đoạn thẳng thuộc phần hiển
thị.

If (P1.Mã || P2.Mã == 0000) then―đoạn thẳng thuộc cửa sổ‖

Trƣờng hợp 2:Mã của P1 và P2 có cùng một vị trí mà ở đó ≠ 0 thì P1 và P2 phải


nằm cùng một phía của cửa sổ.

If (P1.Mã & P2.Mã != 0000) then ― 2 điểm nằm về 1 phía của cửa sổ‖

Trƣờng hợp 3:Tìm giao điểm của đƣờng thẳng với cửa sổ, chính xác hơn là với
phần mở rộng của đƣờng biên theo (3.2) hoặc (3.3) sau đó quay trở lại bƣớc 1.

Sơ đồ giải thuật Cohen-Sutherland

70
Đồ họa máy tính

Ví dụ 3.1. Cho cửa sổ với các đƣờng biên:

xmin = 25, ymin = 24, xmax = 149, ymax = 84 và các đoạn thẳng:

+ Đoạn thẳng AB với điểm A(-99, 124); điểm B(273, 4)

+ Đoạn thẳng CD với điểm C(86, 168); điểm D(275, 42)

+ Đoạn thẳng EF với điểm E(48, 42); điểm F(137, 64)

Áp dụng giải thuật Cohen-Sutherland xác định chính xác phần nào trong các
đoạn thẳng trên đƣợc hiển thị.

Giải:

+ Đoạn thẳng AB với điểm A có mã 1001, điểm B có mã 0110, do đó thực hiện


xén tỉa đoạn thẳng AB.

Xén tỉa AB với biên trái ta đƣợc điểm A‘ với tọa độ đƣợc tính nhƣ sau:

M = (y2 - y1)/(x2 – x1) = (4 - 124)/ (273 + 99) = -120 / 372

xA‘ = 25
120
yA‘ = yA + m (xA‘ – xA) = 124 - 25 + 99 = 84
372

đoạn thẳng AB trở thành A‘B với điểm A‘(25, 84), và điểm A‘ có mã 0000.

71
Đồ họa máy tính
- Xén tỉa A‘B với biên phải, đoạn thẳng A‘B trở thành A‘B‘ với điểm B‘(149,
44) với điểm B‘ có mã 0000.

- Do A‘ và B‘ đều có mã bằng 0000 nên đoạn thẳng A‘B‘ đã nằm trong cửa sổ
do đó kết thúc đoạn thẳng AB đƣợc xén tỉa thành A‘B‘

+ Đoạn thẳng CD vơi điểm C có mã (1000) điểm D có mã 0010, thực hiện xén
tỉa CD với biên phải đoạn thẳng CD thành đoạn thẳng CD‘ với D‘(149, 126) và điểm
D‘ có mã (1000), ta thấy mã điểm C và D‘ có bít thứ 4 giống nhau do đó đoạn thẳng
CD‘ nằm phía trên cửa sổ, vậy đoạn thẳng CD nằm ngoài cửa sổ.

+ Đoạn thẳng EF với điểm E có mã 0000 và điểm F có mã 0000 vậy đoạn thẳng
EF nằm trong cửa sổ.

4) Giải thuật chia trung điểm

Ý tƣởng của thuật toán tƣơng tự nhƣ thuật toán tìm nghiệm bằng phƣơng
pháp chia nhị phân. Với M là trung điểm của đoạn thẳng AB ta có nhận xét: Nếu
mã(A) ≠ 0000, mã(B) ≠ 0000, mã(M) ≠ 0000 thì ta có: [mã(A) AND mã(M)] ≠ 0000
hoặc [mã(M) AND mã(B)] ≠ 0000. Hay nói cách khác ‗Nếu cả ba điểm A, B, M đều
nằm ngoài cửa sổ thì có ít nhất một đoạn thẳng nằm ngoài hoàn toàn cửa sổ‘. Dựa trên
ý tƣởng trên, giải thuật chia trung điểm xén tỉa đoạn thẳng P1P2bao gồm các bƣớc sau:

Bƣớc 1: Xác định mã của điểm đầu P1, điểm cuối P2 của đoạn thẳng P1P2

Bƣớc 2: Nếu mã của hai điểm P1, P2 đều bằng 0000 thì toàn bộ đoạn thẳng đƣợc
hiển thị. Kết thúc

Bƣớc 3: Nếu mã của hai điểm P1, P2 khác 0000 và mã(P1) and mã(P2) khác
0000 thì toàn bộ đoạn thẳng không đƣợc hiển thị. Kết thúc

Bƣớc 4: Đoạn thẳng đƣợc xén tỉa theo cách sau: chia đoạn thẳng thành 2 phần
bằng nhau, và lặp lại bƣớc 1 cho hai đoạn vừa chia cho đến khi toàn bộ các đoạn hoặc
nằm trong hoàn toàn hoặc nằm ngoài hoàn toàn (loại bỏ đi những phần đoạn thẳng
nằm ngoài hoàn toàn so với cửa sổ).

Ví dụ 3.2.Cho cửa sổ với các đƣờng biên:

xmin = 25, ymin = 24, xmax = 149, ymax = 84 và các đoạn thẳng:

+ Đoạn thẳng AB với điểm A(36, 36); điểm B(84, 228)

+ Đoạn thẳng CD với điểm C(49, 149); điểm D(98, 103)

72
Đồ họa máy tính
+ Đoạn thẳng EF với điểm E(53, 64); điểm F(94, 37)

Áp dụng giải thuật Chia trung điểm xác định chính xác phần nào trong các đoạn
thẳng trên đƣợc hiển thị.

Giải:

+ Đoạn thẳng AB: với điểm A có mã 0000 và điểm B có mã 1000, ta thực hiện
chia đoạn thẳng thành 2 đoạn thẳng AM, MB với M(60, 132) có mã 1000.Đoạn thẳng
MB với M có mã 1000 và điểm B có mã 1000 với mã(M) and mã(B) ≠ 0000, nên đoạn
thẳng nằm ngoài cửa sổ, loại bỏ đoạn thẳng MB. Thực hiện xén tỉa đoạn thẳng AM có
điểm A nằm trong, M nằm ngoài, ta gọi M1 là trung điểm của đoạn AM với M1(48,
84) có mã 0000 do đó đoạn thẳng AB đƣợc xén tỉa thành đoạn thẳng AM1.

+ Đoạn thẳng CD với C có mã 1000 và điểm D có mã 1000 với mã(C) and


mã(D) ≠ 0000, nên đoạn thẳng nằm ngoài cửa sổ.

+ Đoạn thẳng EF có mã 2 điểm E, F đều bằng 0000 nên đoạn thẳng EF nằm
trong cửa sổ.

5. Giải thuật Liang-Barsky

Thuật toán Liang-Barsky đƣợc phát triển dựa vào việc phân tích dạng tham số
của phƣơng trình đoạn thẳng. Chúng ta có thể viết phƣơng trình đƣờng thẳng qua 2
điểm (x1, y1) và (x2, y2) theo hình thức tham số:

x = x1 + (x2 – x1)u = x1 + Δx u (3.4)

y = y1 + (y2 – y1)u = y1 + Δy u

Với Δx = x2 – x1 và Δy = y2 – y1. Tham số u đƣợc gán các giá trị từ 0 đến 1, và


các tọa độ (x,y) là tọa độ các điểm trên đƣờng ứng với các giá trị cụ thể của u trong
đoạn [0,1]. Khi u = 0, (x, y) = (x1, y1). Ở đầu kia của đoạn, u = 1 và (x, y) = (x2,
y2).Nếu một điểm (x, y) dọc theo đƣờng mà nằm trong cửa sổ đƣợc định nghĩa bởi các
tọa độ (xwmin, ywmin) và (xwmax, ywmax), thì các điều kiện sau đây phải đƣợc thỏa mãn:

xwmin ≤ x1 + Δx u ≤ xwmax (3.5)

ywmin ≤ y1 + Δy u ≤ ywmax

Bốn bất phƣơng trình trên có thể đƣợc viết lại theo hình thức sau:

pk u ≤ qk, k = 1, 2, 3, 4 (3.6)

ở đây p và q đƣợc định nghĩa nhƣ sau:

73
Đồ họa máy tính
p1 = -Δx, q1 = x1 - xwmin (3.7)

p2 = Δx, q2 = xwmax – x1

p3 = -Δy, q3 = y1 - ywmin

p4 = Δy, q4 = ywmax – y1

Bất kỳ đoạn thẳng nào song với một trong các biên cửa sổ sẽ có pk = 0, giá trị k
phụ thuộc vào biên cửa sổ (k = 1, 2, 3, và 4 tƣơng ứng với biên trái, phải, dƣới, trên).
Nếu với các giá trị đó của k, chúng ta có thể gặp qk< 0, khi đó đoạn thẳng sẽ hoàn toàn
nằm ngoài biên và có thể bị loại bỏ khi xét sau này. Nếu q k ≥ 0, đƣờng thẳng tƣơng
ứng nằm trong biên.

Khi pk< 0, sự kéo dài không giới hạn của đoạn thẳng từ bên ngoài vào bên trong
của biên cửa sổ kéo dài. Nếu pk> 0, đoạn thẳng tiến từ bên trong ra bên ngoài. Với pk
khác 0, chúng ta có thể tính giá trị của u tƣơng ứng với điểm mà tại đó đoạn thẳng kéo
dài cắt biên k kéo dài của cửa sổ:

u = qk/pk (3.8)

Đối với mỗi đoạn thẳng, chúng ta có thể tính các giá trị cho các tham số u1 và u2
để xác định phần nào của đoạn nằm bên trong cửa sổ. Giá trị của u1 đƣợc xác định
bằng cách nhìn ở các cạnh của cửa sổ xem đoạn kéo dài nào từ ngoài vào trong (p<0).
Đối với các cạnh cửa sổ, chúng ta tính rk = qk/ pk. Giá trị của u1 là lớn nhất trong tập
chứa 0 và các giá trị khác của r. Ngƣợc lại, giá trị của u2 đƣợc xác định bằng các kiểm
tra các biên xem đoạn nào kéo dài nào từ bên trong ra bên ngoài (p>0). Một giá trị của
rk đƣợc tính cho mỗi biên cửa sổ, và giá trị của u2 là nhỏ nhất trong tập chứa và các giá
trị đã đƣợc tính của r. Nếu u1> u2, đoạn hoàn toàn nằm ngoài cửa sổ và có thể bị vứt
bỏ. Ngƣợc lại, các điểm đầu mút của đoạn bị cắt đƣợc tính từ hai giá trị của tham số u.

Nhƣ vậy việc thực hiện giải thuật Liang-Barsky chia thành các bƣớc sau:

Bƣớc 1: Tính pk, qk theo (3.7)

Bƣớc1: Nếuk:pk=0

qk< 0 ứng với bất kỳ giá trị nào của k. Loại bỏ đoạn thẳng =>Kết thúc

qk ≥ 0 thực hiện bƣớc tiếp theo

Bƣớc 2: Tính u1, u2

74
Đồ họa máy tính

  
u1  max  0 uk : uk  k , Pk  0 
q
  Pk 
  
u2  min 1 uk : uk  k , Pk  0 
q
  Pk 

Tính tọa độ giao điểm

Q1(x1 + u1dx, y1 + u1 dy); Q2(x2 + u2dx, y2 + u2 dy)

Ví dụ 3.3.Cho cửa sổ hình chữ nhật có góc trái dƣới xwmin = 1, ywmin = 2, góc
phải trên xwmax = 9, ywmax = 8 và các đoạn thẳng AB có toạ độ A(11,10) và B(11,6),
đoạn thẳng CD có toạ độ C(3,2), D(8,4), đoạn thẳng IJ có toạ độ I(-1,7) và J(11,1).
Xác định phần hiển thị của các đoạn thẳng trong cửa sổ.

Giải:

+ Xét đoạn thẳng AB

P1 = 0; q1 = 10

P2 = 0; q2 = -2

P3 = 4; q3 = 8

P4 = -4; q4 = -2

Có P2 = 0 mà q2 = -2 < 0 nên AB nằm hoàn toàn ngoài cửa sổ

+ Xét đoạn thẳng CD

P1 = -5; q1=2 u1=-2/5 (uk=qk/pk)

P2 = 5 ; q2=6 u2=6/5

P3 = -2; q3=0 u3=0

P4 = 2 ; q4=6 u4=3

Vậy: u1 = max(0, -2/5, 0) = 0 (với Pk<0)

u2 = min(1, 6/5, 3) = 1(với Pk>0)

Với [u1, u2] = [0, 1] => CD nằm hoàn toàn trong cửa sổ

+ Xét đoạn thẳng IJ

P1 = -12; q1= -2; u1=1/6

75
Đồ họa máy tính
P2 = 12; q2 = 10; u2=5/6

P3 = 6; q3 = 5; u3=5/6

P4 = -6; q4 = 1; u4=-1/6

Vậy: u1 = max(0, 1/6, -1/6) = 1/6 (với Pk<0)

u2 = min(1, 5/6, 5/6) = 5/6 (với Pk>0)

Giao điểm của đoạn thẳng IJ với cửa sổ là Q1, Q2 với:

Q1(-1 + (1/6). 12 , 7 + (1/6). (-6)) ;

Q2(11 + (5/6).12, 1 + (5/6).(-6))

Phần hiển thị của đoạn IJ là từ Q1(1, 6) đến Q2(9,2)

3.2.3. Giải thuật Hodgman

Một kỹ thuật cho việc clipping đa giác, đƣợc phát triển bởi Hodgman, thực hiện
việc clipping bằng cách so sánh một đa giác với lần lƣợt mỗi biên cửa sổ. Kết quả trả
về của thuật toán là một tập các đỉnh định nghĩa vùng bị cắt (vùng này đƣợc tô với một
màu hay một mẫu tô nào đó).

Các vùng đa giác đƣợc định nghĩa bằng việc xác định một dãy có thứ tự các
đỉnh. Để cắt một đa giác, chúng ta so sánh lần lƣợt mỗi đỉnh với biên một cửa sổ. Các
đỉnh nằm bên trong cạnh cửa sổ này đƣợc giữ lại cho việc clipping với biên kế tiếp của
cửa sổ (hình 3.9). Thuật toán đƣợc trình bày nhƣ sau:

Giả sử v1, v2, …, vn là các đỉnh của đa giác. Quá trình xén tỉa đƣợc thực hiện
trên các cảnh của đa giác tạo bởi 2 đỉnh liên tiếp vi và vi+1 có 4 trƣờng hợp có thể xảy
ra:

(i) Nếu vi nằm ngoài, vi+1 nằm trong, ta lƣu giao điểm I của cạnh vivi+1với biên
của cửa sổ và vi+1.

(ii) Nếu cả vi, vi+1 đều nằm trong, ta sẽ lƣu vi+1.

(iii) Nếu vi nằm trong, vi+1 nằm ngoài, ta sẽ lƣu giao điểm I.

(iv) Nếu cả vi, vi+1 đều nằm ngoài, ta không lƣu gì cả.

76
Đồ họa máy tính

Vi I Vi+1 Vi Vi+1

Vi
Vi+1 I
Vi+1 Vi
(i) (ii) (iii) (iv)

Hình 3.9 Các trường hợp xén tỉa một cạnh của cửa sổ với biên cửa sổ

Ví dụ 3.4:Xén tỉa đa giác v1v2v3v4v5 trên cửa sổ đƣợc giới hạn bởi các biên we1,
we2, we3, we4.

Giải:

Hình 3.10 Các bước xén tỉa đa giác v1v2v3v4v5

3.3. Các giải thuật tô miền kín


3.3.1. Giải thuật đƣờng biên

Bài toán: 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

77
Đồ họa máy tính
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 (hình 3.11).

Hình 3.11 Tô màu theo đường biên

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) (hình 3.12).

(a) (b)
Hình 3.12 (a) 4 điểm lân cận, (b) 8 điểm lân cận

Thuật toán đƣờng biên :

procedure Boundary_fill ( x,y, mauto, maubien :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 ;
3.3.2. Giải thuật dòng quét cho việc tô màu vùng

Giải thuật dựa trên ý tƣởng sử dụng một đƣờng quét trên trục y của màn hình đi
từ ymax đến ymin của vùng cần đƣợc tô màu. Với mỗi giá trị y = yi đƣờng thẳng quét cắt
các đƣờng biên của vùng cần tô tạo ra đoạn thẳng y = yi với x [xmin, xmax]. Trên đoạn
78
Đồ họa máy tính
thẳng đó chúng ta tô màu các điểm tƣơng ứng đi từ xmin đến xmax có các điểm tô (xi, yi)
y = yi.

Đơn giản nhất ví dụ tô màu hình chữ nhật:

procedure scanline_rectg(x1,y1,x2,y2,c :integer)


{(x1,y1) là tọa độ điểm dưới cùng bên trái}
{(x2, y2) là tọa độ điểm trên cùng bên phải}
begin
var i,j :integer;
for i := y1 to y2 do
for j :=x1 to x2 do
putpixel(i,j,c);
end ;
Phép tô màu 1 đa giác bất kỳ sẽ phức tập hơn rất nhiều so với hình chữ nhật

Giả sử vùng tô đƣợc cho bởi 1 đa giác n đỉnh: pi (xi, yi), i=0,1,....,n-1. Đa giác
này có thể là đa giác lồi, đa giác lõm hay đa giác tự cắt....

Các bƣớc tóm tắt chính của thuật toán:

- Tìm ytop, ybottom lần lƣợt là giá trị lớn nhất, nhỏ nhất của tập các tung độ của
các đỉnh của đa giác đã cho.

ytop = max{yi,(xi,yi) P},

ybottom = min{yi,(xi,yi) P}.

- Ứng với mỗi dòng quét y = k, với k thay đổi từ ybottom đến ytop lặp:

+ Tìm tất cả các hoành độ giao điểm của dòng quét y = k với các cạnh của đa
giác

+ Sắp xếp các hoành độ giao điểm theo thứ tự tăng dần: x0, x1,....

+ Tô màu các đoạn thẳng trên đƣờng thẳng y = k lần lƣợt đƣợc giới hạn bởi các
cặp (x0, x1), (x2,x3), ......, (x2k,x2k+1).

Ta sẽ gặp 1 số vấn đề sau:

- Ứng với mỗi dòng quét không phải lúc nào tất cả các cạnh của đa giác cũng
tham gia cắt dòng quét. Do đó để cải thiện tốc độ cần phải có một cách nào đó để hạn
chế đƣợc số cạnh cần tìm giao điểm ứng với mỗi dòng quét.

79
Đồ họa máy tính
- Nếu số giao điểm tìm đƣợc giữa các cạnh đa giác và dòng quét là lẻ (điều này
chỉ xảy ra khi dòng quét sẽ đi qua các đỉnh của đa giác) khi đó ta sẽ tính số điểm là 2
thì có thể tô không chính xác. Ngoài ra, việc tìm giao điểm của dòng quét với các
cạnh nằm ngang là trƣờng hợp đặc biệt...

Hình 3.13 Giải thuật scanline cho một đa giác bất kỳ

Để giải quyết các vấn đề trên ta có các phƣơng pháp sau:

+ Danh sách các cạnh kích hoạt (AET - Active Edge Table)

Mỗi cạnh của đa giác đƣợc xây dựng từ 2 đỉnh kề nhau Pi(xi,yi) và Pi+1(xi+1,yi+1)
gồm các thông tin sau:
ymin: giá trị nhỏ nhất trong 2 đỉnh của cạnh
xIntersect: hoành độ giao điểm của cạnh với dòng quét hiện đang xét
DxPerScan: giá trị 1/m (m là hệ số góc của cạnh)
DeltaY: khoảng cách từ dòng quét hiện hành tới đỉnh ymax

Hình 3.14 Thông tin của một cạnh

Danh sách các cạnh kích hoạt AET: danh sách này dùng để lƣu các tập cạnh của
đa giác có thể cắt ứng với dòng quét hiện hành và tập các điểm giao tƣơng ứng. Nó có
một số đặc điểm:

Các cạnh trong danh sách đƣợc sắp xếp theo thứ tự tăng dần của các hoành độ
giao điểm để có thể tô màu các đoạn giao một cách dễ dàng.

80
Đồ họa máy tính
Thay đổi ứng với mỗi dòng quét đang xét, do đó danh sách này sẽ đƣợc cập
nhật liên tục trong quá trình thực hiện thuật toán. Đầu tiên ta có danh sách chứa toàn
bộ các cạnh của đa giác gọi là ET (Edge Table) đƣợc sắp xếp theo thứ tự tăng dần của
ymin, rồi sau mỗi lần dòng quét thay đổi sẽ di chuyển các cạnh trong ET thoả điều
kiện sang AET.

Một dòng quét y = k chỉ cắt 1 cạnh của đa giác khi và chỉ khi k ≥ ymin và DeltaY
>0. Chính vì vậy mà với các tổ chức của ET (sắp theo thứ tự tăng dần của ymin) điều
kiện để chuyển các cạnh từ ET sang AET sẽ là k ≥ ymin; và điều kiện để loại một cạnh
ra khỏi AET là DeltaY ≤0

+ Công thức tìm giao điểm nhanh

Nếu gọi xk, xk+1 lần lƣợt là các hoành độ giao điểm của một cạnh nào đó với các
dòng quét y = k và y = k+1 ta có:

xk+1 - xk = 1/m ((k+1) - k) = 1/m hay xk+1 = xk + 1/m

Hình 3.15 Công thức tìm giao điểm nhanh

Nhƣ vậy nếu lƣu hoành độ giao điểm ứng với dòng quét trƣớc lại, cùng với hệ số góc
của cạnh, ta xác định đƣợc hoành độ giao điểm ứng với dòng quét kế tiếp theo công
thức trên. Nên thông tin của cạnh có 2 biến: DxPerScan, xIntersect.

+ Trƣờng hợp dòng quét đi ngang qua một đỉnh:

Tính 1 giao điểm nếu chiều của 2 cạnh kề của đỉnh đó có xu hƣớng tăng hay
giảm

Tính 2 giao điểm nếu chiều của 2 cạnh kề của đỉnh đó có xu hƣớng thay đổi,
nghĩa là tăng-giảm hay giảm-tăng.

Hình 3.16 Qui tắc tính một giao điểm (A) và hai giao điểm (B)

81
Đồ họa máy tính

CÂU HỎI VÀ BÀI TẬP CHƢƠNG 3

Chọn một phƣơng án đúng cho mỗi câu hỏi sau :


1. Giải thuật sau là giải thuật gì?
Procedure Ham (x, y, c1, c2:integer)
begin
if (getpixel(x, y) == c1)then
begin
putpixel(x, y, c2); Ham (x-1, y, c1, c2);
Ham (x+1, y, c1, c2); Ham (x+1, y+1, c1, c2);
Ham (x-1, y-1, c1, c2); Ham (x, y-1, c1, c2);
Ham (x, y+1, c1, c2);
end;
end;
[a]--Giải thuật tô màu dòng quét dùng 6 điểm lân cận
[b]--Giải thuật tô màu dùng đệ qui để tô vùng kín dùng mẫu tô
[c]--Giải thuật tô màu loang dùng 6 điểm lân cận
[d]--Giải thuật tô màu loang dùng 4 điểm lân cận
2. Giải thuật sau là giải thuật gì?
procedure Ham (x, y, c1, c2:integer)begin
if (getpixel(x, y) == c1) then
begin
putpixel(x, y, c2);
Ham (x-1, y, c1, c2); Ham (x+1, y, c1, c2);
Ham (x, y+1, c1, c2); Ham (x, y-1, c1, c2);
end;
end;
[a]--Giải thuật tô màu dùng đệ qui để tô vùng kín dùng mẫu tô
[b]--Giải thuật tô màu loang dùng 4 điểm lân cận
[c]--Giải thuật tô màu dòng quét dùng 4 điểm lân cận
[d]--Giải thuật tô màu loang dùng 6 điểm lân cận
3. Hệ toạ độ thiết bị chuẩn (NDCS) có kích thƣớc màn hình hiển thị là hình chữ nhật
ngang có chiều dài gấp đôi chiều rộng. Vậy nếu một hình chữ nhật đứng (có chiều dài
gấp đôi chiều rộng khi hiển thị trên màn hình sẽ cho:
[a]--Hình chữ nhật có chiều dài gấp 1.5 chiều rộng
82
Đồ họa máy tính
[b]--Hình vuông
[c]--Vẫn là hình chữ nhật đứng
[d]--Hình chữ nhật nằm ngang (chiều dài gấp đôi chiều rộng)
4. Cho cửa sổ xén tỉa có góc trái dƣới (1,-2) và góc phải trên (6,8), mã vùng 4-bit của
điểm A(7,9) là:
[a]--1010
[b]--1000
[c]--0110
[d]—0010
5. Cho cửa sổ xén tỉa có góc trái dƣới (1,-2) và góc phải trên (6,8), mã vùng 4-bit của
điểm B(-1,-4) là:
[a]--0000
[b]--0110
[c]--0100
[d]—0101
6. Mã vùng 4-bit của điểm A là (1001), theo giải thuật Cohen Sutherland thì điểm này
sẽ cắt các cạnh của cửa sổ cắt tỉa là:
[a]--x = xmax và y = ymax
[b]--x = xmax và y = ymin
[c]--x = xmin và y = ymin
[d]--x = xmax và y = ymax
7. Mã vùng 4-bit của điểm G là (0100), theo giải thuật Cohen Sutherland thì điểm này
sẽ cắt các cạnh của cửa sổ cắt tỉa là:
[a]--x=xmax
[b]--x=x min
[c]--y=ymax
[d]--y=ymin
8. Cho mã vùng 4-bit của hai điểm cuối đoạn AB lần lƣợt là A(0000) và B(0000), theo
giải thuật Cohen Sutherland thì hạng mục xén tỉa của đoạn AB là:
[a]--Không thuộc hạng mục nào cả
[b]--Hoàn toàn nằm ngoài
[c]--Bị xén tỉa
[d]--Hoàn toàn nằm trong

83
Đồ họa máy tính
9. Giả sử cạnh AB là một cạnh của cửa sổ xén tỉa, P0 P1..... PN-1 là danh sách các đỉnh
của đa giác cần xén tỉa (đa giác lồi hƣớng dƣơng). Theo giải thuật Hogman thì Pi-1 và
Pi đều nằm bên phải của cạnh AB thì đỉnh đƣợc đƣa vào danh sách của đa giác sau khi
xén tỉa(VertexOutput) là:
[a]--Pi-1
[b]--Pi
[c]--Cả Pi-1 và Pi
[d]--Không có đỉnh nào
10. Giả sử cạnh AB là một cạnh của cửa sổ xén tỉa, P0 P1..... PN-1 là danh sách các đỉnh
của đa giác cần xén tỉa (đa giác lồi hƣớng dƣơng). Theo giải thuật Hogman thì Pi-1 nằm
bên phải và Pi nằm bên trái của cạnh AB thì đỉnh đƣợc đƣa vào danh sách của đa giác
sau khi xén tỉa (VertexOutput) là:
[a]--Giao điểm I của Pi-1 Pi với cạnh AB và Pi
[b]--Giao điểm I và Pi-1
[c]--Chỉ có giao điểm I
[d]--Cả Pi-1 và Pi
11. Giả sử cạnh AB là một cạnh của cửa sổ xén tỉa, P0 P1..... PN-1 là danh sách các đỉnh
của đa giác cần xén tỉa (đa giác lồi hƣớng dƣơng). Theo giải thuật Hogman thì Pi-1 nằm
bên trái và Pi nằm bên phải của cạnh AB thì đỉnh đƣợc đƣa vào danh sách của đa giác
sau khi xén tỉa (VertexOutput) là:
[a]--Cả Pi-1 và Pi
[b]--Giao điểm I của Pi-1 Pi với cạnh AB và Pi
[c]--Giao điểm I của Pi-1 Pi với cạnh AB
[d]--Không có đỉnh nào
12. Cho cửa sổ cắt tỉa hình chữ nhật có góc trái dƣới L(3,1), góc phải trên R(7,4). Cho
đoạn IJ có toạ độ là I(8,2) và J(8,3), dùng giải thuật Lyangbarsky tính các giá trị P1 ,
P2 , P3 và P4
[a]--P1 =0, P2 =0, P3 = -1 và P4 =1
[b]--P1 = -1, P2 = 1, P3 = 0 và P4 = 0
[c]--P1 = 1, P2 = - 1, P3 = 0 và P4 = 0
[d]--P1 = 1, P2 = - 1, P3 = 1 và P4 = -1
13. Trong các câu nói sau câu nào sai ? (theo giải thuật Cohen Sutherland)
[a]--Đoạn thẳng nằm hoàn toàn ngoài khi nó phạm bất kỳ một trong bốn bất
đẳng thức sau: X1.X2 > Xmax; X1.X2 ‹ Xmin; Y1.Y2 > Ymax; Y1.Y2 ‹ Ymin;

84
Đồ họa máy tính
[b]--Đoạn thẳng nằm hoàn toàn ngoài khi nó phạm bất kỳ một trong bốn bất
đẳng thức sau: X1.X2 ≥ Xmax; X1.X2 ≤ Xmin; Y1.Y2 ≥ Ymax; Y1.Y2 ≤ Ymin;
[c]--Đoạn thẳng đƣợc hiển thị khi cả hai đầu cuối đều trong cửa sổ hiển thị
[d]--Đoạn thẳng đƣợc hiển thị khi: P1 mã or P2 mã =0000
14. Giải thuật LyangBarsky dựa vào phƣơng trình đƣờng thẳng:
[a]--Không tƣờng minh f(x,y) = 0
[b]--Do ông đƣa ra
[c]--Tƣờng minh y=f(x)
[d]--Tham số x = x(t), y = y(t) có t Є [0,1]
15. Cho cửa sổ cắt tỉa hình chữ nhật có góc trái dƣới L(-2,-2), góc phải trên R(9,4).
Cho đoạn CD có toạ độ là C(1,-3) và D(6,5), dùng giải thuật Lyangbarsky tính các giá
trị P1 , P2 , P3và P4
[a]--P1 = -1, P2 = 1, P3 = 7 và P4 = -7
[b]--P1 = -6, P2 = 6, P3 = 8 và P4 = -8
[c]--P1 = -2, P2 = 2, P3 = 5 và P4 = -5
[d]--P1 = -5, P2 = - 5, P3 = 8 và P4 = -8
16. Dựa vào giải thuật LyangBarsky thì muốn tính giá trị mới u0 và u1 nhƣ sau :
[a]--

[b]--

[c]--

[d]--

17. Trong giải thuật LyangBarsky thì để tính các giá trị trung gian q1 , q2 , q3 và q4 nhƣ
sau:
[a]--q1=xmin - x1, q2=x1-xmax , q3=ymin - y1, q4=y1-ymax.
[b]--q1=xmin - x1, q2=xmax-x1 , q3=ymin - y1, q4=ymax-y1.

85
Đồ họa máy tính
[c]--q1=xmin - x1, q2=xmax-x1 , q3=y1 - ymin, q4=y1-ymax.
[d]--Tất cả đều sai
18. Cho cửa sổ cắt tỉa hình chữ nhật có góc trái dƣới L(-3,1), góc phải trên R(2,6).
Dùng giải thuật Cohen Sutherland tìm hạng mục cắt tỉa của MN có M(-4,2) và N(-1,3).
[a]--(-4,2) và (-1,2)
[b]--(2, 3) và (-1,3)
[c]--(-3, 7/3) và (-1,3)
[d]--(-3,5) và (-1,3)
19. Cho cửa sổ cắt tỉa hình chữ nhật có góc trái dƣới L(1,1), góc phải trên R(6,5).
Dùng giải thuật Cohen Sutherland tìm hạng mục cắt tỉa của EF có E(2,2) và F(7,4).
[a]--(1,2) và (7,4)
[b]--(2, 2) và (6, 18/5)
[c]--(2, 3) và (-1,3)
[d]--(2, 2 ) và (1,18/5)
20. Hệ tọa độ thiết bị chuẩn (Normalized Devices coordinates) :
[a]--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 thiết bị khác
[b]--Một hình ảnh hiển thị đƣợc trên thiết bị này là chính xác thì chắc chắn sẽ
hiển thị chính xác trên thiết bị khác
[c]--Một hình ảnh hiển thị đƣợc trên thiết bị này sẽ tạo ra hình ảnh tƣơng tự trên
thiết bị khác
[d]--Tất cả đều sai

Bài tập
1. Cho cửa sổ với các đƣờng biên: xmin = 10, ymin = 47, xmax = 76, ymax = 165 và các
đoạn thẳng:
+ Đoạn thẳng AB với điểm A(33, 210); điểm B(121, 187)

+ Đoạn thẳng CD với điểm C(-56, 173); điểm D(142, 2)

+ Đoạn thẳng EF với điểm E(76, 68); điểm F(19, 156)

Áp dụng giải thuật Liang-Barsky xác định chính xác phần nào trong các đoạn
thẳng trên đƣợc hiển thị.

2. Cho cửa sổ với các đƣờng biên: xmin = 10, ymin = 47, xmax = 76, ymax = 165 và tứ giác
ABCD với điểm A(-33, 141); B(53, 145); C(45, 76); D(-25, 82). Áp dụng giải thuật
Hodgman xác định chính xác phần nào của tứ giác ABCD đƣợc hiển thị.
86
Đồ họa máy tính
3. Tìm ảnh của tam giác ABC với các toạ độ A(20,60), B(10,5), C(60,5) trong phép
ánh xạ từ cửa sổ có các đƣờng biên xwmin=ywmin= 20, xwmax=80, yvmax=60 vào khung
nhìn có các đƣờng biên xvmin = yvmin = 0, xvmax=yvmax =120
4. Cho cửa sổ với các đƣờng biên: xmin = 40, ymin = 40, xmax = 180, ymax = 100 và các
điểm A(93, 147); điểm B(121, 187); điểm C(77, 82); điểm D(136, 60); điểm E(93, -
20); điểm F(168, 160)
a. Áp dụng giải thuật Liang-Barsky xác định chính xác phần nào trong các đoạn
thẳng AB, CD, EF đƣợc hiển thị.
b. Tìm ảnh của tam giác AEF trong phép ánh xạ từ cửa sổ vào khung nhìn với
các đƣờng biên xvmin = 10, yvmin = 20, xvmax= 290, yvmax =200.
5. Cho cửa sổ với các đƣờng biên: xmin = 10, ymin = 20, xmax = 50, ymax = 80 và
các điểm A(-30, 116); điểm B(90, 8); điểm C(0, 0); điểm D(5, 75); điểm E(50, 40);
điểm F(82, 64)
a. Áp dụng giải thuật Cohen- Sutherland xác định chính xác phần nào trong các
đoạn thẳng AB, CD, EF đƣợc hiển thị.
b. Tìm ảnh của tam giác ABC trong phép ánh xạ từ cửa sổ vào khung nhìn với
các đƣờng biên xvmin = 20, yvmin = 10, xvmax= 140, yvmax =130.
6. Cho cửa sổ với các đƣờng biên: xmin = 20, ymin = 20, xmax = 80, ymax = 50 và các điểm
A(-28, 92); điểm B(36, 92); điểm C(35, 16); điểm D(155, 4); điểm E(36, 36); điểm
F(66, 41).
a. Áp dụng giải thuật Chia trung điểm xác định chính xác phần nào trong các
đoạn thẳng AB, CD, EF đƣợc hiển thị.
b. Tìm ảnh của tam giác ABE trong phép ánh xạ từ cửa sổ vào khung nhìn với
các đƣờng biên xvmin = 20, yvmin = 10, xvmax= 140, yvmax =130.
7. Cho cửa sổ với các đƣờng biên xmin= 55, xmax= 105, ymin = 35, ymax =85, và tam giác
ABC với điểm A(27, 31); B(111, 112); C(200, 0).
a. Áp dụng giải thuật Hodgman xác định chính xác phần hiển thị của tam giác
ABC?
b. Tìm ảnh của tam giác ABC trong phép ánh xạ từ cửa sổ vào khung nhìn với
các đƣờng biên xvmin = 0, yvmin = 10, xvmax= 100, yvmax = 110.
8. Cho cửa sổ với các đƣờng biên xmin= 30, xmax=90, ymin = 70, ymax =130, và tứ giác
ABCD với điểm A(30, 194); B(130, 34); C(90, 70); D(0, 0).
a. Áp dụng giải thuật Hodgman xác định chính xác phần hiển thị của tam giác
ABCD?

87
Đồ họa máy tính
b. Tìm ảnh của tứ giác ABCD trong phép ánh xạ từ cửa sổ vào khung nhìn với
các đƣờng biên xvmin = 30, yvmin = 70, xvmax= 90, yvmax = 130.
9. Cho cửa sổ với các đƣờng biên xmin= 18, xmax=81, ymin = 115, ymax =147 và các đoạn
thẳng:
+ Đoạn thẳng AB với điểm A(112, 190); điểm B(42, 39)
+ Đoạn thẳng CD với điểm C(48, 123); điểm D(169, 117)
+ Đoạn thẳng EF với điểm E(87, 67); điểm F(198, 48)

Áp dụng giải thuật Liang-Barsky xác định chính xác phần nào trong các đoạn
thẳng trên đƣợc hiển thị.

10. Cho cửa sổ với các đƣờng biên xmin= 18, xmax=100, ymin = 81, ymax =120 và các
đoạn thẳng:
+ Đoạn thẳng AB với điểm A(6, 86); điểm B(72, 146)
+ Đoạn thẳng CD với điểm C(86, 101); điểm D(181, 107)
+ Đoạn thẳng EF với điểm E(35, 101); điểm F(72, 108)

Áp dụng giải thuật Cohen - Sutherland xác định chính xác phần nào trong các
đoạn thẳng trên đƣợc hiển thị.

11. Cho cửa sổ với các đƣờng biên xmin= 48, xmax=133, ymin = 64, ymax =149, và tứ giác
ABCD với điểm A(15, 107); B(103, 125); C(170, 82); D(0, 0).
a. Áp dụng giải thuật Hodgman xác định chính xác phần hiển thị của tam giác
ABCD?
b. Tìm ảnh của tứ giác ABCD trong phép ánh xạ từ cửa sổ vào khung nhìn với
các đƣờng biên xvmin = 30, yvmin = 70, xvmax= 90, yvmax = 130.
Hƣớng dẫn giải bài tập
1.
+ Xén tỉa đoạn thẳng AB: ta có:
p1 = -88, q1 = 23, p2 = 88, q2 = 43,p3 = 23, q3 = 163, p4 = -23, q4 = -45

u1 = 1.956522, u2 = 0.4886364

u1>u2 do đó kết luận đoạn thẳng AB nằm ngoài cửa sổ


+ Xén tỉa đoạn thẳng CD: ta có

p1 = -198, q1 = -66, p2 = 198, q2 = 132, p3 = 171, q3 = 126, p4 = -171,


q4 = -8

u1 = -66/-198, u2 = 132/198

88
Đồ họa máy tính
Đoạn thẳng sau CD xén tỉa thành C‘D‘ với C‘(10, 116); D‘(76, 59)

+ Xén tỉa đoạn thẳng EF: ta có

p1 = 57, q1 = 66, p2 = -57, q2 = 0, p3 = -88, q3 = 21, p4 = 88, q4 = 97

u1 = 0, u2 = 1

Đoạn thẳng nằm trong cửa sổ

2. Xén tỉa đoạn thẳng AB với biến trái cửa sổ có giao điểm A‘(10, 143), điểm A
nằm ngoài, B nằm trong lƣu lại điểm A‘ và B. Xén tỉa đoạn thẳng BC có hai điểm B, C
đều nằm trong cửa sổ lƣu lại điểm C. Xén tỉa đoạn thẳng CD với biên trái có giao điểm
D‘ (10, 79) có điểm C ở trong, điểm D ở ngoài, lƣu điểm D. Xén tỉa đoạn thẳng DA
với hai điểm A, D đều nằm ngoài do đó không lƣu giữ điểm nào.Tứ giác ABCD đƣợc
xén tỉa thành A‘BCD‘.
3. Xén tỉa đoạn thẳng AB với biên trái cửa sổ có giao điểm(20, 60) trùng điểm
A với điểm A nằm trong cửa sổ, điểm B nằm ngoài, giữ lại điểm A. Xén tỉa đoạn thẳng
BC với biên trái có giao điểm B‘(20, 50) với điểm B nằm ngoài, C nằm trong giữ lại
điểm B‘ và C. Xén tỉa CD với cửa sổ có A, C đều nằm trong nên giữ lại điểm C, tam
giác ABC đƣợc xén tỉa thành AB‘C.
Tính sx = 2

Tính sy = 3

Ánh xạ cửa sổ vào khung nhìn, áp dụng công thức ta có A(20, 6) trở thành
A‘(0, 120). B‘(20, 50) trở thành B‘‘(0, 90). C(60, 50) trở thành C‘(89, 90).

4.
a.
+ Xén tỉa đoạn thẳng AB:

p1 = -28, q1 = 53, p2 = 28, q2 = 87, p3 = -40, q3 = 107, p4 = 40, q4 = -47

u1 = 0= 0/0, u2 = -1.175= -47/40

Do u1> u2 đoạn thẳng nằm ngoài cửa sổ

+ Xén tỉa đoạn thẳng CD

p1 = -59, q1 = 37, p2 = 59, q2 = 103, p3 = 22, q3 = 42, p4 = -22, q4 = 18

u1 = 0= 0/0

u2 = 1= 1/1

89
Đồ họa máy tính
Đoạn thẳng nằm trong cửa sổ

+ Xén tỉa đoạn thẳng EF

p1 = -75, q1 = 53, p2 = 75, q2 = 87, p3 = -180, q3 = -60, p4 = 180, q4 = 120

u1 = -60/-180, u2 = 120/180

Đoạn thẳng sau khi xén tỉa:

E‘ (118, 40)

F‘ (143, 100)

b.
Xén tỉa đoạn thẳng AE với cửa sổ, AE trở thành A‘(93, 100) E‘(93, 40)
Xén tỉa đoạn thẳng AF với cửa sổ ta có AF nằm ngoài cửa sổ. Tam giác AEF
trở thành A‘HE‘F‘

Ánh xạ điểm A‘; H sang khung nhìn thành A‘‘(116, 200) H‘(116, 20)

Ánh xạ điểm E‘; F‘ sang khung nhìn thành E‘‘(166, 20) F‘‘(216, 200)

5.
a. Đoạn thẳng AB với điểm A có mã 1001 điểm B có mã 0110, thực hiện xén
tỉa AB với biên trái đoạn thẳng AB thành đoạn thẳng A‘B với A‘(10, 80) có mã 0000.
Tiếp tục xén tỉa đoạn thẳng A‘B với biên phải ta đƣợc giao điểm B‘(50, 44) có mã
0000, kết thúc xén tỉa đoạn thẳng AB thành đoạn thẳng A‘B‘. Xén tỉa đoạn thẳng CD
với điểm C có mã 0101 điểm D có mã 0001, hai điểm này có mã thứ nhất đều bằng 1
do đó đều nằm về phía trái của cửa số, kết thúc xén tỉa. Xén tỉa đoạn thẳng EF với
điểm E có mã 0000, điểm F có mã 0010, thực hiện xén tỉa với biên phỉa ta đƣợc điểm
F‘ (50, 40) có mã 0000 trùng điểm E, kết thúc
b. Xén tỉa tam giác ABC với biên trái ta đƣợc đa giác A‘BC‘ với điểm A‘(10,
80), điểm C nằm phía dƣới cửa sổ. Xén tỉa A‘BC‘ với biên trên đa giác đƣợc giữ
nguyên. Xén tỉa đa giác A‘BC‘ với biên phải ta đƣợc đa giác A‘B‘ D‘C‘ với điểm
B‘(50, 44), D‘ nằm dƣới cửa sổ. Xén tỉa A‘B‘D‘C‘ với biên dƣới đƣợc đa giác
A‘B‘D‘‘C‖, với D‘‘(50, 20) C‘‘(10, 20). Ánh xạ điểm A‘ qua khung nhìn thành
A‘‘(20, 130).Ánh xạ điểm B‘ qua khung nhìn thành B‘‘(140, 58). Ánh xạ điểm D‘‘
qua khung nhìn thành D‘‘‘(140, 10).Ánh xạ điểm B‘ qua khung nhìn thành B‘‘(20, 10)
6.

90
Đồ họa máy tính
a. Đoạn thẳng AE có điểm A với mã 1001, điểm E có mã 0000, gọi A1 trung
điểm đoạn thẳng AE với A1(4, 64) có mã 1001, đoạn thẳng AE đƣợc rút ngắn thành
A1E. Gọi A2 là trung điểm A1E với A2(4, 50) có mã 0000 đoạn thẳng A1E đƣợc xén
tỉa thành A2E. Kết thúc. Đoạn thẳng CD có điểm C với mã 0100, điểm D với mã 0110,
mã(C) and mã(D) ≠ 0000 nên đoạn thẳng CD nằm ngoài cửa sổ. Đoạn thẳng EF với
điểm E có mã 0000, điểm F có mã 0000, do đó đoạn thẳng EF nằm hoàn toàn trong
cửa sổ
b. Xén tỉa tam giác ABE với biên trái ta đƣợc tứ giác A‘B‘BE với điểm A‘(20,
50) B‘(20, 92). Xén tỉa ABE với biên bên trên ta đƣợc tam giác A‘CE với C(36, 50).
Ánh xạ điểm A‘ qua khung nhìn thành A‘‘(20, 130). Ánh xạ điểm C qua khung nhìn
thành C‘(53, 130). Ánh xạ điểm E qua khung nhìn thành E‘(52, 74)
7.
a. Xén tỉa tam giác ABC với biên trái, tam giác trở thành tứ giác A‘BCD với
A(55, 58) D là điểm nằm dƣới cửa sổ. Xén tỉa tứ giác A‘BCD với biên trên, đa giác
A‘B‘ECD với điểm B‘(83, 85) điểm E nằm phía bên phải cửa sổ. Xén tỉa đa giác
A‘B‘ECD với biên phải, đa giác A‘B‘ECD thành đa giác A‘B‘E‘C‘D với E‘(105, 85)
C‘ nằm dƣới cửa sổ. Xén tỉa đa giác A‘B‘E‘C‘D với biên dƣới, đa giác trở thành
A‘B‘E‘C‘D‘với điểm D‘(55, 35), C‘‘(105, 35). Kết thúc
b. Ánh xạ điểm A‘ qua khung nhìn thành A‘‘(0, 56), Ánh xạ điểm B‘ qua
khung nhìn thành B‘‘(56, 110), Ánh xạ điểm E‘ qua khung nhìn thành E‘‘(100, 110),
Ánh xạ điểm D‘ qua khung nhìn thành D‘‘(0, 10), Ánh xạ điểm C‘‘ qua khung nhìn
thành C‘‘‘(100, 10)
8.
a. Xén tỉa tứ giác ABCD với biên trái thành tứ giác ABCD‘; với điểm D‘ nằm
dƣới cửa sổ. Xén tỉa đa giác với biên trên đa giác trở thành ngũ giác A‘BCD‘E với
điểm A‘(70, 130), E (30, 130). Xén tỉa đa giác với biên bên phải đa giác trở thành
A‘B‘CD‘E với B‘(90, 98). Xén tỉa đa giác với biên bên dƣới đa giác trở thành
A‘B‘CD‘‘E với D‘‘(30, 70)
b. Ánh xạ điểm A‘ thành A‘‘(0, 56), Ánh xạ điểm B‘ thành B‘‘(56, 110), Ánh
xạ điểm C thành C‘(100, 110), Ánh xạ điểm D‘ thành D‘‘(100, 10), Ánh xạ điểm E
thành E‘(0, 10)

91
Đồ họa máy tính
Chƣơng 4

CÁC PHÉP BIẾN ĐỔI HÌNH HỌC 2 CHIỀU


Một trong những ƣu điểm quan trọng của đồ họa là cho phép dễ dàng thao tác
lên các đối tƣợng đã đƣợc tạo ra. Một nhà quản lí có nhu cầu thu nhỏ các biểu đồ trong
một báo cáo, một kiến trúc sƣ muốn nhìn tòa nhà ở những góc nhìn khác nhau, một
nhà thiết kế muốn quan sát và chỉnh sửa các mẫu đối tƣợng trong quá trình thiết kế,…
Tất cả các thao tác này có thể đƣợc hỗ trợ một cách dễ dàng nhờ vào các phép biến đổi
hình học. Các phép biến đổi hình học sẽ làm thay đổi mô tả về tọa độ của các đối
tƣợng, từ đó làm cho đối tƣợng bị thay đổi về hƣớng, kích thƣớc và hình dạng.
Các phép biến đổi hình học cơ sở bao gồm: tịnh tiến (translation), quay
(rotation) và biến đổi tỉ lệ (scaling). Ngoài ra một số phép biến đổi khác cũng thƣờng
đƣợc áp dụng đó là phép đối xứng (reflection) và biến dạng (shearing).
Có hai quan điểm về phép biến đổi hình học đó là: biến đổi đối tƣợng (object
transformation) và biến đổi hệ tọa độ (coordinate transformation). Biến đổi đối tƣợng
là thay đổi tọa độ của các điểm mô tả nó theo một quy tắc nào đó, còn biến đổi hệ tọa
độ là tạo ra một hệ tọa độ mới và tất cả các điểm mô tả đối tƣợng sẽ đƣợc chuyển về
hệ tọa độ mới. Hai cách này có những mối liên hệ chặt chẽ với nhau và mỗi cách đều
có những lợi thế riêng.
4.1.Phƣơng pháp biểu diễn đối tƣợng trong không gian hai chiều
Các đối tƣợng phẳng trong đồ hoạ hai chiều đƣợc mô tả nhƣ một tập các điểm
phẳng. Các điểm trong đồ hoạ hai chiều đƣợc biểu diễn thông qua toạđộ, viết dƣới
dạng ma trận gọi là các vectơ vị trí.
Có 2 phƣơng pháp biểu diễn tọa độ :
+ Ma trận hàng( một hàng và 2 cột) :  x, y 
x 
+ Ma trận cột( hai hàng và 1 cột) :  y
 
Tập các điểm đƣợc lƣu trữ trong máy tính dƣới dạng các ma trận hay chuỗi
điểm mà vị trí của chúng quyết định hình dạng của đƣờng thẳng, đƣờng cong hay ảnh
sẽ dễ dàng kiểm soát thông qua các phép biến đổi. Các phép biến đổi đồ họa đƣợc mô
tả dƣới dạng các ma trận tƣơng ứng cho phép thể hiện các sự biến đổi tọa độ của các
điểm qua các phép nhân ma trận. Điều đó tạo thuận lợi cho ngƣời sử dụng hình dung
cũng nhƣ thao tác với các đối tƣợng hình học một cách dễ dàng, đó cũng là một trong
những tính năng mạnh của đồ họa máy tính.

92
Đồ họa máy tính
4.2. Phép biến đổi Afine 2D

Một phép biến đổi hai chiều sẽ biến đổi điểm P trong mặt phẳng thành điểm có
tọa độ mới Q theo một quy luật nào đó. Về mặt bản chất, một phép biến đổi điểm là
một ánh xạ T đƣợc định nghĩa :

T : R2  R2
P ( x, y )  Q ( x, y )

Nói cách khác, T là hàm số T(x,y) theo hai biến(x,y) :

x ′ = f(x, y)
y ′ = g(x, y)
Phép biến đổi Affine 2D sẽ biến điểm P(x,y) thành điểm Q(x‘,y‘) theo hệ
phƣơng trình:
x ′ = ax + cy + trx
a, b, c, d, trx, try ∈ R, ad − bc ≠ 0
y ′ = bx + dy + try
Dƣới dạng ma trận hệ này có dạng:
a b
(x’ y’)=( x y)∗ + (𝑡𝑟𝑥 𝑡𝑟𝑦)
c d
Hay viết gọn hơn: X‘ = X.M + tr
với X‘ = (x‘ y‘); X = (x y); tr = (trx try) - vector tịnh tiến;
a b
M= – ma trận biến đổi
c d
Một số tính chất của phép biến đổi Affine:
Phép biến đổi affine bảo toàn đƣờng thẳng
Tính song của các đƣờng thẳng đƣợc bảo toàn
- Tính tỉ lệ về khoảng cách đƣợc bảo toàn

4.3. Các phép biến đổi hình học cơ sở

4.3.1. Phép tịnh tiến

Để tịnh tiến một điểm P(x,y) từ vị trí này sang vị trí khác trong mặt phẳng, ta
cộng thêm các giá trị mô tả độ dời vào các tọa độ của P. Nếu gọi trx và try lần lƣợt là
độ dời theo trục hoành và trục tung thì tọa độ của điểm mới sẽ là:
x ′ = x + trx
y ′ = y + try

93
Đồ họa máy tính
(trx ,try) còn đƣợc gọi là vector tịnh tiến hay vector độ dời.
Biểu diễn dƣới dạng ma trận
1 0
(x‘ y‘) = (x y)∗ + (trx try )
0 1
Hay X‘= X*P + tr
Có thể dịch chuyển toàn bộ một đối tƣợng bằng cách áp dụng quy tắc trên cho
mọi điểm thuộc đối tƣợng. Để tịnh tiến một đoạn thẳng, đơn giản chỉ cần tịnh tiến hai
điểm đầu và cuối của nó rồi sau đó vẽ lại đoạn thẳng nối hai điểm mới. Với đa giác, ta
tịnh tiến các đỉnh của nó sau đó vẽ lại đa giác với các đỉnh mới. Một cách tƣơng tự, để
tịnh tiến các đối tƣợng nhƣ đƣờng tròn, Ellipse, ta tịnh tiến tâm của chúng tới vị trí
mới rồi vẽ lại.
4.3.2. Phép biến đổi tỉ lệ

Hình 4.1 (a) Phép tịnh tiến một điểm và(b) đối tượng với vector tịnh tiến (-4,2)

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 theo tỉ lệ Sx và Sy ta nhân Sx và Sy lần
lƣợt với các tọa độ của P.
x ′ = Sx . x
Sx và Sy được gọi là hệ số tỉ lệ
y ′ = Sy . y

Biểu diễn dƣới dạng ma trận:


Sx 0
(x‘ y‘) = ( x y)∗ 0 Sy
Sx 0
Hay X‘=X*S với ma trận biến đổi S = 0 Sy

Khi các giá trị Sx, Sy nhỏ hơn 1 phép biến đổi thu nhỏ đối tƣợng
Khi Sx, Sy lớn hơn 1 phép biến đổi phóng lớn đối tƣợng
94
Đồ họa máy tính
Khi Sx = Sy ta gọi đó là phép đồng dạng (uniform scaling), phép đồng dạng là
phép biến đổi bảo toàn tính cân xứng của đối tƣợng.
Tâm tỉ lệ là điểm không bị thay đổi qua phép biến đổi tỉ lệ. Phép biến đổi tỉ lệ
mô tả nhƣ trên còn gọi là phép biến đổi tỉ lệ quanh gốc tọa độ vì có tâm tỉ lệ là gốc tọa
độ. Nhận xét rằng khi phép biến đổi tỉ lệ thu nhỏ đối tƣợng, đối tƣợng sẽ đƣợc dời về
gần gốc tọa độ hơn, tƣơng tự khi phóng lớn đối tƣợng, đối tƣợng sẽ đƣợc dịch chuyển
xa gốc tọa độ hơn.

Hình 4.2 Phép biến đổi tỉ lệ


Một số trƣờng hợp đặc biệt

Đối xứng qua Oy Đối xứng qua Ox Đối xứng qua gốc tọa độ

Hình 4.3. Một số trường hợp đặc biệt


4.3.2. 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 quy ƣớc là chiều ngƣợc chiều kim
đồng hồ. Công thức biến đổi của phép quay điểm P(x, y) quanh gốc tọa độ một góc α

x ′ = x ∗ cosα − y ∗ sin α
y ′ = x ∗ sin α + y ∗ cos α

Biểu diễn dƣới dạng ma trận


cos α sin α
x ′ y′ = x y ∗
− sin α cos α

95
Đồ họa máy tính
cos α sin α
Hay X‘ = X. R với ma trận biến đổi R =
− sin α cos α





y
Hình 4.4.Quay một điểm và một đối tượng quanh gốc tọa độ

4.3.3. Phép đối xứng

Phép đối xứng trục có thể xem là phép quay quanh trục đối xứng một góc 1800.

Đối xứng qua Đối xứng qua Đối xứngqua


trục x trục y gốc tọa độ

Hình 4.5. Đối xứng qua các trục và gốc tọa độ


Công thức biến đổi
x′ = x x′ = x x′ = − x
y ′ = −y y ′ = −y y′ = − y
Ma trận biến đổi tƣơng ứng
1 0 −1 0 −1 0
0 −1 0 1 0 −1
4.3.4. Phép biến dạng

Phép biến dạng là phép biến đổi làm thay đổi, méo mó hình dạng của các đối
tƣợng. Hai dạng phép biến dạng thƣờng gặp đó là biến dạng theo phƣơng trục x và

96
Đồ họa máy tính
biến dạng theo phƣơng trục y bằng cách thay đổi tọa độ (x,y) của điểm ban đầu theo
các hệ số biến dạng shx, shy.
Biến dạng theo phƣơng trục x sẽ làm thay đổi hoành độ còn tung độ vẫn giữ
nguyên:
x ′ = x + y ∗ shx
y′ = y
1 0
Ma trận biến đổi:
shx 1
Biến dạng theo phƣơng trục y sẽ làm thay đổi tung độ còn hoành độ vẫn giữ
nguyên :
x′ = x
y ′ = x ∗ shy + y
1 shy
Ma trận biến đổi:
0 1

Hình 4.6. Phép biến dạng theo phương trục x với hệ số biến dạng shx=3
4.4. Hệ tọa độ thuần nhất và các phép biến đổi

Với cách biểu diễn ma trận biến đổi dƣới dạng ma trận 2x2, ta sẽ gặp khó khăn
khi muốn kết hợp các phép biến đổi lại với nhau vì biểu diễn của phép tịnh tiến khác
với dạng của các phép biến đổi khác. Vì vậy mà cần phải có một cách nào đó để biểu
diễn các phép biến đổi này về một dạng duy nhất để có thể dễ dàng xử lí.

4.4.1. Hệ tọa độ thuần nhất

Tọa độ thuần nhất của một điểm trên mặt phẳng đƣợc biểu diễn bằng bộ ba số tỉ
lệ (xh,yh,h) không đồng thời bằng 0 và liên hệ với các tọa độ (x,y) của điểm đó bởi
công thức :
xh yh
x= , y=
h h

97
Đồ họa máy tính
Về mặt toán học, việc đƣa tọa độ thuần nhất vào là do sự cần thiết phải bổ sung
cho mặt phẳng Euclid các điểm xa vô tận (x, y, 0) (điểm phi chính) có tọa độ thứ ba
bằng 0, điều này dẫn đến khái niệm mặt phẳng xạ ảnh trong hình học xạ ảnh.
Trong hệ tọa độ thuần nhất, các điểm xa vô tận không đóng một vai trò gì đặc
biệt so với các điểm khác của mặt phẳng. Với các phép biến đổi hình học đang khảo
sát, nếu một điểm đƣợc biểu diễn dƣới dạng tọa độ thuần nhất, các phép biến đổi trên
đều đƣợc biểu diễn dƣới dạng tích các ma trận. Điều này giúp cho việc khảo sát các
tính chất và sự kết hợp của các phép biến đổi này đƣợc thuận tiện do mỗi phép biến
đổi đƣợc đại diện bởi một ma trận duy nhất.
Bộ ba các tọa độ thƣờng biểu diễn các điểm trong không gian ba chiều, nhƣng ở
đây ta sử dụng chúng để biểu diễn các điểm trong không gian hai chiều. Mối liên hệ ở
đây là nếu ta xét tất cả các bộ ba tọa độ thuần nhất biểu diễn cho cùng một điểm, nghĩa
là bộ ba số có dạng (h.x, h.y, h.) với h≠0, ta sẽ nhận đƣợc một đƣờng thẳng trong
không gian ba chiều. Để đơn giản hóa có thể chọn h=1, lúc này mỗi điểm P(x, y) sẽ
đƣợc biểu diễn dƣới dạng tọa độ thuần nhất (x, y, 1). Khi đó các phép biến đổi đồ họa
2 chiều đƣợc viết dƣới dạng
X‘ = X *M
Trong đó X‘ = x ′ y ′ 1 ; X = x y 1 ; M là ma trận 3x3 (ma trận
biến đổi)
4.4.2. Biểu diễn các phép biến đổi dƣới dạng tọa độ thuần nhất

1. Phép tịnh tiến:


1 0 0
′ ′
x y 1 = x y 1 . 0 1 0
trx try 1
1 0 0
Hay M trx , try = 0 1 0
trx try 1

2. Phép biến đổi tỉ lệ:


sx 0 0
′ ′
xy 1 = x y 1 . 0 sy 0
0 0 1
sx 0 0
Hay M sx , sy = 0 sy 0
0 0 1
3. Phép quay quanh gốc tọa độ:

98
Đồ họa máy tính
cos α sin α 0
′ ′
x y 1 = x y 1 . − sin α cos α 0
0 0 1
cos α sin α 0
Hay M α = − sin α cos α 0
0 0 1
4. Phép đối xứng:
Đối xứng qua Đối xứng qua Đối xứngqua
trục x trục y gốc tọa độ
1 0 0   1 0 0   1 0 0
0  1 0   0 1 0  0  1 0
     
0 0 1  0 0 1  0 0 1

5. Phép biến dạng


1 0 0 1 Shy 0
MShx = Shx 1 0 MShy = 0 1 0
0 0 1 0 0 1
Biến dạng theo phƣơng Biến dạng theo phƣơng
trục x trục y
4.4.3. Phép biến đổi ngƣợc

Phép biến đổi ngƣợc là phép biến đổi để có thể khôi phục đƣợc các điểm trƣớc
khi thực hiện biến đổi.

Các phép biến đổi ngƣợc:

Biến đổi ngược của phép tịnh tiến

Biến đổi ngược của phép tỉ lệ

Biến đổi ngược của phép quay

Nếu Q là ảnh của điểm P qua phép biến đổi với ma trận M thì Q = P*M

=> P = M-1*Q trong đó M-1 là ma trận của phép biến đổi ngƣợc

Ma trận phép biến đổi ngƣợc của phép tịnh tiến (Tx,Ty)

 1 0 0

M T1   0 1 0  M T (Tx,Ty)
 Tx  Ty 1

Ma trận phép biến đổi ngƣợc của phép co giãn (Sx,Sy)

99
Đồ họa máy tính
 1 
 Sx 0 0
Sx 0 0
 
1 
0
1 1 1
M S1  0 Sy  0 0  MS ( , )
Sx .Sy   Sy  Sx Sy
 0 0 1  0 0 1
 

Ma trận phép biến đổi ngƣợc của phép Quay góc 

cos   sin  0
M R1   sin  cos  0  M R ( )
 0 0 1

4.5. Kết hợp các phép biến đổi

Quá trình áp dụng các phép biến đổi liên tiếp để tạo nên một phép biến đổi tổng
thể đƣợc gọi là sự kết hợp các phép biến đổi (composing transformation).

Giả sử điểm P(x,y) bị biến đổi qua n phép biến đổi T 1, T2,…, Tn với các ma
trận biến đổi tƣơng ứng M1, M2, ..., Mn(n>0) thành điểm P‘(x‘,y‘). Khi đó công thức
biến đổi tổng hợp là: P‘= P*M

Trong đó M = M1*M2*…*Mn gọi là ma trận biến đổi tổng hợp.

Nghĩa là thực hiện từ n phép biến đổi trở lên là thực hiện phép nhân ma trận có
n ma trận. Chú ý: Vì phép nhân ma trận không có tính chất giao hoán nên thứ tự các
phép biến đổi thƣờng không thể đảo.

4.5.1. Kết hợp các phép tịnh tiến

Thực hiện tịnh tiến điểm X(x,y) theo vector (Tx1,Ty1) đƣợc X‘(x‘,y‘), tiếp tục
tịnh tiến điểm P‘(x‘,y‘) theo vector (Tx2,Ty2) đƣợc X‖(x‖,y‖)

Hai ma trận biến đổi tƣơng ứng:


 1 0 0  1 0 0
   
T1   0 1 0 T2   0 1 0
 Tx Ty 1   Tx Ty 1 
 1 1   2 2

Công thức biến đổi:

X‘ = X*T1 ; X‖ = X‘*T2

X‖ = X*T1*T2
Hay ma trận biến đổi tổng hợp M = T1*T2
100
Đồ họa máy tính
1 0 0 1 0 0
M= 0 1 0 ∗ 0 1 0
𝑇𝑥1 𝑇𝑦1 1 𝑇𝑥2 𝑇𝑥2 1
1 0 0
= 0 1 0
𝑇𝑥1 + 𝑇𝑥2 𝑇𝑦1 + 𝑇𝑦2 1
Nhận xét: Kết hợp 2 phép tịnh tiến đƣợc một phép tịnh tiến => Kết hợp nhiều
phép tịnh tiến đƣợc 1 phép tịnh tiến.
1 0 0
M = T1*T2*...+ Tn = 0 1 0
𝑇𝑥1 + 𝑇𝑥2 + ⋯ + 𝑇𝑥𝑛 𝑇𝑦1 + 𝑇𝑦2 + ⋯ + 𝑇𝑦𝑛 1
Ví dụ: Cho tứ giác ABCD với: A(3,3), B(5,2), C(6,5), D(2,5). Xác định tọa độ
mới của tứ giác sau khi tính tiến tứ giác sao cho trọng tâm trùng với điểm Q(8,8) rồi
tịnh tiến tiếp theo vector tịnh tiến (2, 2).
Tứ giác ABCD với: A(3,3), B(5,2), C(6,5), D(2,5) có trọng tâm G(4,4)
Dịch chuyển tứ giác sao cho trọng tâm trùng với điểm Q(8,8) :

8  4  dx dx  4
  ( dx, dy là khoảng dịch chuyển theo trục x;y)
8  4  dy dy  4

1 0 0 
 T 1   0 1 0 
 4 4 1 

1 0 0 
- Tịnh tiến tứ giác theo vector tịnh tiến (2, 2): T 2  0 1 0
 2 2 1 

- Công thức biến đổi tổng hợp:


1 0 0 1 0 0
 X '   X  * T1 * T 2   x y 1 * 0 1 0  * 0 1 0 
 4 4 1   2 2 1 

1 0 0 
= x y 1 * 0 1 0    ( x  6) ( y  6) 1
6 6 1 

x '  x  6

y'  y  6

101
Đồ họa máy tính
Áp dụng : A(3,3)  A‘(9,9)
B(5,2)  B‘(11,8)
C(6,5)  C‘(12,11)
D(2,5)  D‘(8,11)

Hình 4.7. Ví dụ phép tịnh tiến


4.5.2. Kết hợp các phép tỉ lệ

Thực hiện co giãn điểm X(x,y) theo vector (Sx1 ,Sy1) đƣợc X‘(x‘,y‘), tiếp tục co
giãn điểm P‘(x‘,y‘) theo vector (Sx2,Sy2) đƣợc X‖(x‖,y‖)

Hai ma trận biến đổi tƣơng ứng:

 Sx1 0 0  Sx2 0 0
   
S1   0 Sy1 0 S2   0 Sy2 0
 0 1   0 1 
 0  0
Công thức biến đổi:

X‘ = X*S1 ; X‖ = X‘*S2

X‖ = X*S1*S2
Hay ma trận biến đổi tổng hợp M = S1*S2
𝑆𝑥1 0 0 𝑆𝑥2 0 0 𝑆𝑥1 ∗ 𝑆𝑥2 0 0
M= 0 𝑆𝑦1 0 ∗ 0 𝑆𝑦2 0 = 0 𝑆𝑦1 ∗ 𝑆𝑦2 0
0 0 1 0 0 1 0 0 1
Nhận xét: Kết hợp hai phép co giãn là một phép co giãn => Kết hợp nhiều phép
co giãn cũng là một phép co giãn

102
Đồ họa máy tính
𝑆𝑥1 ∗ 𝑆𝑥2 ∗ … ∗ 𝑆𝑥1 0 0
M = S1*S2*...+ Sn = 0 𝑆𝑥𝑦1 ∗ 𝑆𝑥𝑦2 ∗ … ∗ 𝑆𝑦𝑛 0
0 0 1
Ví dụ: Cho  ABC với: A(3,4), B(5,4) C(2,3). Xác định tọa độ mới của  sau
khi thực hiện phóng to tam giác lên gấp 2 lần, sau đó tiếp tục thực hiện phép tỉ lệ với
hệ số Sx=Sy=-1;
Bƣớc 1: Phóng to tam giác lên gấp 2 lần  thực hiện phép tỉ lệ với hệ số
Sx= Sy = 2

2 0 0
Ma trận biến đổi: T1  0 2 0
 0 0 1 

Bƣớc 2: phép tỉ lệ với hệ số Sx=Sy=-1

 1 0 0 
Ma trận biến đổi: T 2   0 1 0 
 0 0 1 

+ Công thức biến đổi tổng hợp:

 2 0 0   1 0 0 
[X‘]=[X]*[T1]*[T2] =  x y 1 * 0 2 0  *  0 1 0 
 0 0 1   0 0 1 

 2 0 0 
= x y 1 *  0 2 0 
 0 0 1 

 x '  2 x

 y '  2 y

+ Áp dụng:

Hình 4.8. Ví dụ về phép tỉ lệ

103
Đồ họa máy tính
A (3,4)  A‘(-6,-8)

B(5,4)  B‘(-10,-8)

C(2,3)  C‘(-4,-6)

4.5.3. Kết hợp các phép quay

Thực hiện quay điểm X(x,y) theo góc 1 đƣợc X‘(x‘,y‘), tiếp tục quay điểm
X‘(x‘,y‘) theo góc 2 đƣợc X‖(x‖,y‖)

Hai ma trận biến đổi tƣơng ứng:

cos α1 sin α1 0 cos α 2 sin α2 0


R1 = − sin α 1 cos α 1 0 R2 = − sin α2 cos α2 0
0 0 1 0 0 1
Công thức biến đổi:

X‘ = X*R1 ; X‖ = X‘*R2

X‖ = X*R1*R2

Hay ma trận biến đổi tổng hợp M = R1*R2

cos α1 sin α1 0 cos α 2 sin α2 0


M = − sin α 1 cos α 1 0 − sin α2 cos α2 0
0 0 1 0 0 1
cos α1 + α2 sin α1 + α2 0
= −sin α1 + α2 cos α1 + α2 0
0 0 1
Nhận xét: Kết hợp hai phép quay là một phép quay => Kết hợp nhiều phép quay
cũng là một phép quay

4.5.4. Phép quay có tâm quay là điểm bất kỳ

Giả sử tâm quay có tọa độ (xf , yf), khi đó phép quay đƣợc đƣa về trƣờng hợp
quay quanh gốc tọa độ theo các bƣớc:

- Tịnh tiến đối tƣợng theo vector tịnh tiến (-xf, -yf) để dịch chuyển tâm quay về
gốc tọa độ
- Thực hiện quay theo góc α cho trƣớc
- Tịnh tiến ngƣợc đối tƣợng theo vector tịnh tiến (xf , yf) để dịch chuyển tâm quay
về vị trí ban đầu.

104
Đồ họa máy tính

Hình 4.9. Phép quay quanh tâm là điểm bất kì. (a) Đối tượng trước khi biến
đổi,(b) Sau khi tịnh tiến về gốc tọa độ, (c) Sau khi quay góc α, (d) Sau khi tịnh tiến
về tâm quay ban đầu.

Ma trận phép biến đổi

4.5.5. Phép tỉ lệ giữ nguyên điểm chốt

Thực hiện phép tỉ lệ với hệ số tỉ lệ (Sx, Sy) sao cho điểm chốt (x0, y0) không đổi

Các bƣớc thực hiện

- Dịch đối tƣợng sao cho điểm chốt trùng gốc tọa độ
- Thực hiện co dãn theo tỷ lệ cho trƣớc
- Dịch ngƣợc đối tƣợng sao cho điểm chốt về vị trí ban đầu

Hình 4.10. Phép tỉ lệ giữ nguyên điểm chốt

Bƣớc 1: Phép tịnh tiến tỉ lệ đến gốc tọa độ có ma trận là:

105
Đồ họa máy tính
1 0 0
T1 = 0 1 0
−𝑥0 −𝑦0 1
Bƣớc 2: Phép tỉ lệ với hệ số tỉ lệ (Sx, Sy)
𝑆𝑥 0 0
T2 = 0 𝑆𝑦 0
0 0 1
Bƣớc 3: Phép tịnh tiến tỉ lệ về vị trí ban đầu có ma trận là
1 0 0
T3 = 0 1 0
𝑥0 𝑦0 1
Bƣớc 4: Ma trận của phép tỉ lệ với hệ số tỉ lệ (Sx,Sy) giữ nguyên điểm chốt (x0,
y0) đƣợc thực hiện bởi tích của 3 phép biến đổi sau:
T=T1*T2*T3
1 0 0 𝑆𝑥 0 0 1 0 0
= 0 1 0 ∗ 0 𝑆𝑦 0 ∗ 0 1 0
−𝑥0 −𝑦0 1 0 0 1 𝑥0 𝑦0 1

𝑆𝑥 0 0
= 0 𝑆𝑦 0
𝑥0 ∗ (1 − 𝑆𝑥 ) 𝑦0 ∗ (1 − 𝑆𝑦 ) 1

4.6. Phép biến đổi giữa các hệ tọa độ

Để thuận tiện cho việc mô tả đối tƣợng, thông thƣờng đối tƣợng sẽ đƣợc mô tả
trong các hệ tọa độ cục bộ gắn với chúng. Tuy nhiên để có thể hiển thị toàn bộ một ảnh
bao gồm nhiều đối tƣợng thành phần, các mô tả này phải đƣợc chuyển về một hệ tọa
độ chung duy nhất. Việc chuyển đổi này thƣờng đƣợc chia làm hai loại : chuyển từ các
hệ tọa độ không phải là hệ tọa độ Descartes nhƣ hệ tọa độ cực, hệ tọa độ cầu, hệ tọa độ
elliptic, … sang hệ tọa độ Descartes, và chuyển đổi giữa hai hệ tọa độ Descartes.
Trong phần này chúng ta sẽ khảo sát phép biến đổi giữa hai hệ tọa độ Descartes với
nhau.

106
Đồ họa máy tính

Hình 4.11. Phép biến đổi giữa hai hệ tọa độ


Giả sử ta có hệ tọa độ (I) có gốc tọa độ O và các vector đơn vị lần lƣợt 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 độ là O‘ và
các vector đơn vị lần lƣợt là u,v. Lúc này một điểm P(x,y) bất kì trong hệ tọa độ (I) sẽ
đƣợc biến đổi thành điểm Q(a,b) trong hệ tọa độ (II). Vấn đề đặt ra ở đây là mối liên
hệ giữa a,b với x, y, M nhƣ thế nào

Hình 4.12. Tọa độ của một điểm qua phépbiến đổi hệ tọa độ
Ngƣời ta chứng minh đƣợc rằng Q=PM-1

107
Đồ họa máy tính

CÂU HỎI VÀ BÀI TẬP CHƢƠNG 4

Chọn một phƣơng án đúng cho mỗi câu hỏi sau:


𝑎 𝑏 0
Giả sử ma trận biến đổi một điểm trong mặt phẳng là 𝑐 𝑑 0
0 0 1
1 . Trong mặt phẳng phép đối xứng qua trục oy là:

[a]--b=c=0, d=1 và a=-1

[b]--b=c=d=1 và a=-1

[c]--b=c=a=1 và d=-1

[d]--b=c=0, a=1 và d=-1

2. Trong mặt phẳng phép đối xứng qua trục ox là:

[a]--b=c=d=1 và a=-1

[b]--b=c=0, d=1 và a=-1

[c]--b=c=a=1 và d=-1

[d]--b=c=0, a=1 và d=-1

3. Trong mặt phẳng phép đối xứng qua tâm O là:

[a]--b=c=1 và a=d=0

[b]--b=c=0 và a=d=1

[c]--b=c=0 và a=d=-1

[d]--b=c=-1 và a=d=0

4. Trong mặt phẳng, phép biến đổi tỉ lệ phóng to một đối tƣợng gấp 2 lần ban đầu là:

[a]--b=c=0, a=2 và d=1

[b]--b=c=1 và a=d=2

[c]--b=c=2 và a=d=0

[d]--b=c=0 và a=d=2

5. Trong mặt phẳng, phép biếnđổi thu nhỏ một đối tƣợng xuống một nửa kích thƣớc
ban đầu là:

[a]--b=c=1/2 và a=d=0

108
Đồ họa máy tính
[b]--b=c=0 và a=d=1/2

[c]--b=c=0, a=1/2 và d=1

[d]--b=c=1 và a=d=1/2

6. Trong mặt phẳng để sửa một đối tƣợng sao cho đối tƣợng to lên gấp rƣỡi mà chiều
cao không đổi thì :

[a]--b=c=0, a=1 và d=1.5

[b]--b=c=0, a=1.5 và d=1

[c]--b=c=1.5 và a=d=0

[d]--b=c=0, a=1.5 và d=1.5

7. Trong mặt phẳng nếu phóng to một đối tƣợng lên gấp rƣỡi sau đó lại phóng lên gấp
2 lần thì ma trận biến đổi là:

[a]--b=c=0 và a=d=3.5

[b]--b=c=0, a=1.5 v à d=2

[c]--b=c=0 và a=d=3

[d]--b=c=0, a=2 và d=1.5

8. Trong mặt phẳng nếu phóng to một đối tƣợng lên gấp đôi sau đó thu nhỏ xuống chỉ
còn 1/4 ban đầu thì ma trận biến đổi là:

[a]--b=c=0 và a=d=2+1/4

[b]--b=c=0, a=1/4 và d=2

[c]--b=c=0 và a=d=1/2

[d]--b=c=0, a=2 v à d=1/4

9. Ta có điểm P(2 , -5) sau khi biến đổi qua phép phóng to lên gấp rƣỡi thì toạ độ P‘ là:

[a]--(3.5, -6.5 )

[b]--(2 ,-7.5)

[c]--(3 , -5)

[d]--(3 ,-7.5)

10. Trong mặt phẳng để sửa một đối tƣợng sao cho chiều cao tăng gấp 3 mà bề rộng
không thay đổi thì :

109
Đồ họa máy tính
[a]--b=c=0, a=1 và d=3

[b]--b=c=1, a=1 và d=3

[c]--b=c=0 và a=d=3

[d]--b=c=0, a=3 và d=1

11. Cho điểm Q (3.2 , - 11.5) sau khi cho nó cao lên gấp 2 lần mà vẫn giữ chiều rộng
không đổi, rồi lại thu nhỏ nó xuống 1/4 thì Q‘ là:

[a]--(1.6 ,- 5.75)

[b]--(6.4 , -23)

[c]--(0.8 ,-5.75)

[d]--(0.8 , - 2.86)

12. Cho đoạn thẳng AB có toạ độ là A(1,-1) và B(-2,6), dãn đoạn thẳng đó theo chiều
trục ox lên gấp 3 lần sau đó phóng to lên gấp rƣỡi thì thu đƣợc A‘ và B‘ là:

[a]--A‘(4.5 , -1.5) và B‘(-9 , 9)

[b]--A‘(1.5 , -4.5) và B‘(-3 , 27)

[c]--A‘(3 , -1.5) và B‘(-6 , 9)

[d]--A‘(1.5 , - 3) và B‘(-3, 9)

13. Trong mặt phẳng cho tam giác ABC có toạ độ các đỉnh là A(-3.6, 4), B(12,-1) và
C(-9,- 5). Thu hẹp tam giác đi 3 lần (theo trục ox), kéo dài tam giác lên gấp 3 lần (theo
trục oy) sau đó đối xứng tam giác qua trục oy. Tam giác A‘B‘C‘ cuối cùng thu đƣợc sẽ
có toạ độ là:

[a]--A‘(1.2, 12), B‘(-4,-3) và C‘(3,-15)

[b]--A‘(-1.2, -12), B‘(4,3) và C‘(-3,15)

[c]--A‘(-10.8, -4/3), B‘(36,1/3) và C‘(-27,5/3)

[d]--A‘(10.8, 4/3), B‘(-36,-1/3) và C‘(27,-5/3)

14. Trong mặt phẳng cho đoạn thẳng AB có các toạ độ là A(1.5,-3) và B(6,2). Phóng
lớn đoạn thẳng lên gấp 1.8 lần sau đó lấy đối xứng qua trục ox. Đoạn thẳng A‘B‘ cuối
cùng thu đƣợc có toạ độ là:

[a]--A‘(-2.7, -5.4) và B‘(-10.8,3.9)

[b]--A‘(-2.7, 5.4) và B‘(-10.8,-3.9)

110
Đồ họa máy tính
[c]--A‘(2.7, 5.4) và B‘(10.8,-3.9)

[d]--A‘(3.3,-1.2) và B‘(7.8,3.8)

15. Trong mặt phẳng có điểm A(-2,6), quay A quanh gốc toạ độ 1 góc -60o ta đƣợc
điểm A‘ là:

[a]--(-1 + √3; √3 + 3)

[b]--(-3 + √3; √3 + 1)

[c]--(-√3 + 1; -√3 + 3)

[d]--(√3 + 1; √3 + 3)

16. Trong mặt phẳng cho đoạn thẳng MN có các toạ độ là M(-12,-4) và N(16,2). Quay
đoạn thẳng này quanh O một góc 60o sau đó lấy đối xứng qua trục ox. Đoạn thẳng
M‘N‘ cuối cùng thu đƣợc có toạ độ là:

[a]--M'( - 6 +2√3; -6√3 + 2) và N'(8 - √3; 8√3 -1 )

[b]--M'( - 6 -2√3; 6√3 + 2) và N'(8 + √3; -8√3 -1 )

[c]--M'( 6 - 2√3; 2√3 + 3) và N'(4 - √3; 4√3 -1 )

[d]--M'( 6 + 2√3; 2√3 - 3) và N'(4 + √3; -4√3 -1 )

17. Trong mặt phẳng có đoạn thẳng CD có toạ độ là C(2,-6) và D(18,8), quay đoạn
thẳng một góc -90o sau đó phóng to lên gấp 2 lần. Toạ độ C‘ và D‘ cuối cùng thu đƣợc
là:

[a]--C‘(12,4) và D‘(-16,36)

[b]--C‘(-12,-4) và D‘(16,-36)

[c]--C‘(4,-12) và D‘(36,16)

[d]--C‘(-4,12) và D‘(36,-16)

Bài tập

1. Xây dựng công thức biến đổi đối tƣợng khi thực hiện các phép biến đổi:

a. Đối xứng qua điểm có tọa độ (x0, y0)

b. Đối xứng qua đƣờng thẳng song song với trục tung, cách trục tung một
khoảng x = x0

c. Đối xứng qua đƣờng thẳng song song với trục hoành, cách trục hoành một
khoảng y = y0

111
Đồ họa máy tính
d. Đối xứng qua đƣờng phân giác góc phần tử thứ nhất (đƣờng thẳng y = x+a)

e. Đối xứng qua đƣờng phân giác góc phần tƣ thứ 2 ( đƣờng thẳng y = -x+a)

2.Xây dựng công thức biến đổi đối tƣợng khi thực hiện các phép biến đổi:

a. Thực hiện phép tỉ lệ với hệ số (Sx, Sy), sau đó quay đối tƣợng một góc α
quanh gốc tọa độ
b. Thực hiện phép tỉ lệ với hệ số (Sx, Sy) giữ nguyên điểm chốt (x0, y0), sau đó
quay một góc α quanh (x0, y0)

3. Xây dựng công thức biến đổi đối tƣợng trong mặt phẳng sau khi thực hiện
phép tỉ lệ với hệ số (Sx, Sy) với điểm chốt (x0, y0) và phép quay một góc α quanh điểm
(x0, y0).

4. Cho tam giác ABC với các tọa độ A(20, 10), B(10, 30), C(30,20). Hãy xác
định tọa độ mới của tam giác sau khi thực hiện thu nhỏ kích thƣớc tam giác bằng ½
kích thƣớc tam giác ban đầu sao cho tọa độ trọng tâm tam giác không đổi, sau đó quay
tam giác 450 quanh điểm trọng tâm

5. Xây dựng công thức biến đổi đối tƣợng trong mặt phẳng sau khi quay đối
tƣợng một góc α ngƣợc chiều kim đồng hồ quanh điểm có tọa độ (x0, y0) rồi thực hiện
phép tỉ lệ với hệ số (Sx, Sy) với điểm chốt (x0, y0).

6. Cho tam giác ABC với các tọa độ A(5,0), B(10,10), C(30,20). Hãy xác định
tọa độ mới của tam giác sau khi thực hiện quay tam giác 300 ngƣợc chiều kim đồng hồ
quanh trọng tâm giác sau đó phóng to kích thƣớc tam giác bằng 2 lần kích thƣớc tam
giác ban đầu sao cho tọa độ trọng tâm không đổi.

7. Xây dựng công thức biến đổi đối tƣợng trong mặt phẳng sau khi thực hiện
phép tỉ lệ với hệ số tỉ lệ (Sx, Sy) với điểm chốt (x0, y0) không đổi sau đó lấy đối xứng
qua điểm (x0, y0).

8. Cho tam giác ABC với các tọa độ A(0,10), B(5, 5), C(10,30). Hãy xác định
tọa độ mới của tam giác sau khi thực hiện phóng to kích thƣớc tam giác bằng 2 kích
thƣớc tam giác ban đầu sao cho tọa độ điểm A không đổi sau đó lấy đối xứng qua
điểm A

9. Xây dựng công thức biến đổi đối tƣợng trong mặt phẳng sau khi thực hiện
lấy đối xứng qua đƣờng thẳng y = x + a sau đó thực hiện phép tỉ lệ với hệ số (Sx, Sy)

112
Đồ họa máy tính
10. Cho tam giác ABC với các tọa độ A(0,0), B(10, 5), C(5, 20). Hãy xác định
tọa độ mới của tam giác sau khi thực hiện lấy đối xứng qua đƣờng thẳng y = x + 5 và
phóng to kích thƣớc tam giác bằng 2 kích thƣớc tam giác ban đầu.

11. Xây dựng công thức biến đổi đối tƣợng trong mặt phẳng sau khi thực hiện
phép quay một góc α quanh gốc điểm (x0, y0) rồi lấy đối xứng qua đƣờng thẳng song
song với trục hoành và đi qua điểm (x0, y0).

12. Cho tam giác ABC với các tọa độ A(0, 0), B(10, 10), C(5, 20). Hãy xác
định tọa độ mới của tam giác sau khi thực hiện quay một góc 600 quanh điểm (5, 5) rồi
lấy đối xứng qua đƣờng thẳng y = 5

13. Xây dựng công thức biến đổi đối tƣợng trong mặt phẳng sau khi thực hiện
lấy đối xứng qua đƣờng thẳng y = -x + a, và thực hiện phép tỉ lệ với hệ số (Sx, Sy)

14. Cho tam giác ABC với các tọa độ A(0,0), B(10, 5), C(5, 20). Hãy xác định
tọa độ mới của tam giác sau khi thực hiện lấy đối xứng qua đƣờng thẳng y = -x + 5 và
phóng to kích thƣớc tam giác bằng 3 lần kích thƣớc tam giác ban đầu

Hƣớng dẫn giải bài tập

1.a. Xây dựng công thức biến đổi khi thực hiện đối xứng qua điểm có tọa độ (x0, y0)
Bƣớc 1: Tịnh tiến điểm (x0, y0) đối xứng về gốc tọa độ:
1 0 0
Ma trận biến đổi: T1= 0 1 0
−𝑥0 −𝑦0 1
Bƣớc 2: Thực hiện phép đối xứng qua gốc tọa độ
−1 0 0
Ma trận biến đổi: T2= 0 −1 0
0 0 1
Bƣớc 3: Tịnh tiến điểm (x0, y0) về vị trí ban đầu
1 0 0
Ma trận biến đổi: T3= 0 1 0
𝑥0 𝑦0 1
Bƣớc 4: Ma trận của phép đối xứng qua điểm (x0, y0) đƣợc thực hiện bởi tích
của 3 phép biến đổi sau:
T=T1*T2*T3
1 0 0 −1 0 0 1 0 0
= 0 1 0 ∗ 0 −1 0 ∗ 0 1 0
−𝑥0 −𝑦0 1 0 0 1 𝑥0 𝑦0 1

113
Đồ họa máy tính
−1 0 0
= 0 −1 0
2 ∗ 𝑥0 2 ∗ 𝑦0 1

b.Xây dựng công thức biến đổi khi thực hiện phép đối xứng qua đƣờng thẳng x = x0

Bƣớc 1: Thực hiện phép tịnh tiến sao cho đƣờng thẳng x = x0 trùng với trục
tung
1 0 0
Ma trận biến đổi: T1= 0 1 0
−𝑥0 0 1
Bƣớc 2: Thực hiện đối xứng qua trục tung
−1 0 0
Ma trận biến đổi: T2= 0 1 0
0 0 1
Bƣớc 3: Tịnh tiến đƣờng thẳng x = x0 về vị trí ban đầu
1 0 0
Ma trận biến đổi: T3= 0 1 0
𝑥0 0 1
Bƣớc 4: Ma trận của phép đối xứng qua điểm (x0, y0) đƣợc thực hiện bởi tích
của 3 phép biến đổi sau:
T=T1*T2*T3
1 0 0 −1 0 0 1 0 0
= 0 1 0 ∗ 0 1 0 ∗ 0 1 0
−𝑥0 0 1 0 0 1 𝑥0 0 1

−1 0 0
= 0 1 0
2 ∗ 𝑥0 0 1
c. Xây dựng công thức biến đổi khi xây dựng phép đối xứng qua đƣờng thẳng y = y0
Bƣớc 1: Thực hiện phép tịnh tiến sao cho đƣờng thẳng y = y0 trùng với trục
hoành
1 0 0
Ma trận biến đổi: T1= 0 1 0
0 −𝑦0 1
Bƣớc 2: Thực hiện đối xứng qua trục hoành
1 0 0
Ma trận biến đổi : T2= 0 −1 0
0 0 1
Bƣớc 3: Tịnh tiến đƣờng thẳng y = y0 về vị trí ban đầu

114
Đồ họa máy tính
1 0 0
Ma trận biến đổi : T3= 0 1 0
0 𝑦0 1
Bƣớc 4: Ma trận của phép đối xứng qua điểm (x0, y0) đƣợc thực hiện bởi tích
của 3 phép biến đổi sau:
T=T1*T2*T3
1 0 0 1 0 0 1 0 0
=0 1 0 ∗ 0 −1 0 ∗ 0 1 0
0 −𝑦0 1 0 0 1 0 𝑦0 1

1 0 0
= 0 −1 0
0 2 ∗ 𝑦0 1
d. Đối xứng qua đƣờng thẳng y = x + a
Bƣớc 1: Tịnh tiến điểm (-a, 0) về gốc tọa độ
1 0 0
Ma trận biến đổi T1= 0 1 0
𝑎 0 1
Bƣớc 2: Thực hiện phép đối xứng qua đƣờng phân giác
0 1 0
Ma trận biến đổi :T2= 1 0 0
0 0 1
Bƣớc 3: Phép tịnh tiến điểm (-a, 0) về vị trí ban đầu có ma trận là
1 0 0
Ma trận biến đổi :T3= 0 1 0
−𝑎 0 1
Bƣớc 4: Ma trận của phép đối xứng qua đƣờng thẳng y = x + a đƣợc thực hiện
bởi tích của 3 phép biến đổi sau:
T=T1*T2*T3
1 0 0 0 1 0 1 0 0
=0 1 0 ∗ 1 0 0 ∗ 0 1 0
𝑎 0 1 0 0 1 −𝑎 0 1

0 1 0
= 1 0 0
−𝑎 𝑎 1

e. Đối xứng qua đƣờng thẳng y = -x + a


Bƣớc 1: Tịnh tiến điểm (0, -a) về gốc tọa độ

115
Đồ họa máy tính
1 0 0
Ma trận biến đổi T1= 0 1 0
0 𝑎 1
Bƣớc 2: Thực hiện đối xứng qua đƣờng phân giác
0 1 0
Ma trận biến đổi T2= 1 0 0
0 0 1
Bƣớc 3: Tịnh tiến về vị trí ban đầu:
1 0 0
Ma trận biến đổi T3= 0 1 0
0 −𝑎 1
Bƣớc 4: Ma trận của phép đối xứng qua đƣờng thẳng y= -x + a đƣợc thực hiện
bởi tích của 3 phép biến đổi sau:
T=T1*T2*T3
1 0 0 0 1 0 1 0 0
=0 1 0 ∗ 1 0 0 ∗ 0 1 0
0 𝑎 1 0 0 1 0 −𝑎 1

0 1 0
= 1 0 0
𝑎 −𝑎 1
2.
a. Xây dựng công thức biến đổi khi kết hợp phép tỉ lệ với hệ số (Sx, Sy) và phép
quay một góc α quanh gốc tọa độ
Bƣớc 1: Phép tỉ lệ với hệ số tỉ lệ (Sx, Sy)
𝑆𝑥 0 0
Ma trận biến đổi T1= 0 𝑆𝑦 0
0 0 1
Bƣớc 2: Phép quay với góc 𝛼 có ma trận là
cos 𝛼 sin 𝛼 0
Ma trận biến đổi T2= − sin 𝛼 cos 𝛼 0
0 0 1
Bƣớc 3: Ma trận của kết hợp phép tỉ lệ với hệ số (Sx, Sy) và phép quay một góc
α quanh gốc tọa độ là
T=T1*T2
𝑆𝑥 0 0 cos 𝛼 sin 𝛼 0
= 0 𝑆𝑦 0 ∗ − sin 𝛼 cos 𝛼 0
0 0 1 0 0 1

116
Đồ họa máy tính
𝑆𝑥 ∗ cos 𝛼 𝑆𝑥 ∗ sin 𝛼 0
= −𝑆𝑦 ∗ sin 𝛼 𝑆𝑦 ∗ cos 𝛼 0
0 0 1
b. Xây dựng công thức biến đổi khi kết hợp phép tỉ lệ với hệ số (Sx, Sy) giữ
nguyên điểm chốt (x0, y0) và phép quay một góc α quanh (x0, y0)
Bƣớc 1: Tịnh tiến điểm chốt (x0, y0) về gốc tọa độ
1 0 0
Ma trận biến đổi :T1= 0 1 0
−𝑥0 −𝑦0 1
Bƣớc 2: Phép tỉ lệ với hệ số tỉ lệ (Sx, Sy)
𝑆𝑥 0 0
Ma trận biến đổi :T2= 0 𝑆𝑦 0
0 0 1
Bƣớc 3: Phép quay với góc 𝛼 quanh gốc tọa độ
cos 𝛼 sin 𝛼 0
Ma trận biến đổi T3= − sin 𝛼 cos 𝛼 0
0 0 1
Bƣớc 4: Phép tịnh tiến điểm (x0, y0) về vị trí ban đầu
1 0 0
Ma trận biến đổi T4= 0 1 0
𝑥0 𝑦0 1
Bƣớc 5: Ma trận của phép tỉ lệ với hệ số tỉ lệ (Sx, Sy) và phép quay một góc α
quanh gốc tọa độ đƣợc thực hiện bởi tích của 4 phép biến đổi sau:
T=T1*T2*T3*T4
1 0 0 𝑆𝑥 0 0 cos 𝛼 sin 𝛼 0 1 0 0
= 0 1 0 ∗ 0 𝑆𝑦 0 ∗ − sin 𝛼 cos 𝛼 0 ∗ 0 1 0
−𝑥0 −𝑦0 1 0 0 1 0 0 1 𝑥0 𝑦0 1

=
𝑆𝑥 ∗ cos 𝛼 𝑆𝑥 ∗ sin 𝛼 0
−𝑆𝑦 ∗ sin 𝛼 𝑆𝑦 ∗ cos 𝛼 0
𝑥0 ∗ (1 − 𝑆𝑥 ∗ cos 𝛼) + 𝑦0 ∗ 𝑆𝑦 ∗ sin 𝛼 𝑦0 ∗ (1 − 𝑆𝑦 ∗ cos 𝛼) − 𝑥0 ∗ 𝑆𝑥 ∗ sin 𝛼 1

3.Xây dựng ma trận biến đổi


Tịnh tiến điểm (x0, y0) về gốc tọa độ :
1 0 0
Ma trận biến đổi T1= 0 1 0
−𝑥0 −𝑦0 1
Thực hiện phép tỉ lệ với hệ số (Sx, Sy):

117
Đồ họa máy tính
𝑆𝑥 0 0
Ma trận biến đổi T2= 0 𝑆𝑦 0
0 0 1
Thực hiện phép quay với góc 𝛼 :
cos 𝛼 sin 𝛼 0
Ma trận biến đổi T3= − sin 𝛼 cos 𝛼 0
0 0 1
Tịnh tiến về vị trí ban đầu:
1 0 0
Ma trận biến đổi T4= 0 1 0
𝑥0 𝑦0 1

Ma trận tổng hợp


T=T1*T2*T3*T4
1 0 0 𝑆𝑥 0 0 cos 𝛼 sin 𝛼 0 1 0 0
= 0 1 0 ∗ 0 𝑆𝑦 0 ∗ − sin 𝛼 cos 𝛼 0 ∗ 0 1 0
−𝑥0 −𝑦0 1 0 0 1 0 0 1 𝑥0 𝑦0 1

Kết quả T =

𝑆𝑥 ∗ cos 𝛼 𝑆𝑥 ∗ sin 𝛼 0
−𝑆𝑦 ∗ sin 𝛼 𝑆𝑦 ∗ cos 𝛼 0
𝑥0 ∗ (1 − 𝑆𝑥 ∗ cos 𝛼) + 𝑦0 ∗ 𝑆𝑦 ∗ sin 𝛼 𝑦0 ∗ (1 − 𝑆𝑦 ∗ cos 𝛼) − 𝑥0 ∗ 𝑆𝑥 ∗ sin 𝛼 1

4.

2 2
A(20, 10) => x‘A = 20+5 = 23.53553, y‘A = 20 - 5 = 16.46447
2 2

B(10, 30) => x‘B = 20-5 2 = 12.92893, y‘B = 20


2 2
C(30,20) => x‘C = 20+5 = 23.53553, y‘C = 20 + 5 = 23.53553
2 2

5. Xây dựng ma trận biến đổi


- Tịnh tiến điểm (x0, y0) về gốc tọa độ:
1 0 0
Ma trận biến đổi T1= 0 1 0
−𝑥0 −𝑦0 1
Thực hiện phép quay với góc 𝛼 :
cos 𝛼 sin 𝛼 0
Ma trận biến đổi T2= − sin 𝛼 cos 𝛼 0
0 0 1
Thực hiện phép tỉ lệ với hệ số (Sx, Sy):

118
Đồ họa máy tính
𝑆𝑥 0 0
Ma trận biến đổi T3= 0 𝑆𝑦 0
0 0 1
Tịnh tiến về vị trí ban đầu:
1 0 0
Ma trận biến đổi T4= 0 1 0
𝑥0 𝑦0 1
Ma trận tổng hợp
T=T1*T2*T3*T4
1 0 0 cos 𝛼 sin 𝛼 0 𝑆𝑥 0 0 1 0 0
= 0 1 0 ∗ − sin 𝛼 cos 𝛼 0 ∗ 0 𝑆𝑦 0 ∗ 0 1 0
−𝑥0 −𝑦0 1 0 0 1 0 0 1 𝑥0 𝑦0 1

Kết quả
𝑆𝑥 ∗ cos 𝛼 𝑆𝑦 ∗ sin 𝛼 0
−𝑆𝑥 ∗ sin 𝛼 𝑆𝑦 ∗ cos 𝛼 0
𝑥0 ∗ (1 − 𝑆𝑥 ∗ cos 𝛼) + 𝑦0 ∗ 𝑆𝑥 ∗ sin 𝛼 𝑦0 ∗ (1 − 𝑆𝑦 ∗ cos 𝛼) − 𝑥0 ∗ 𝑆𝑦 ∗ sin 𝛼 1

6.

A(5,0) => x‘A = 25 - 10 3 = 7.679491, y‘A = -5 - 10 3 = -17.32051

B(10, 10) => x‘B = 15 - 5 3 = 6.339745, y‘B = -5

C(30,20) => x‘C = 5 + 15 3 = 30.98076, y‘C = 25 + 10 3 = 42.32051

7. Xây dựng ma trận biến đổi


Tịnh tiến điểm (x0, y0) về gốc tọa độ :
1 0 0
Ma trận biến đổi T1= 0 1 0
−𝑥0 −𝑦0 1
Thực hiện phép tỉ lệ với hệ số (Sx, Sy):
𝑆𝑥 0 0
Ma trận biến đổi T2= 0 𝑆𝑦 0
0 0 1
Thực hiện lấy đối xứng qua gốc tọa độ
−1 0 0
Ma trận biến đổi T3 = 0 −1 0
0 0 1
Tịnh tiến về vị trí ban đầu:

119
Đồ họa máy tính
1 0 0
Ma trận biến đổi T4= 0 1 0
𝑥0 𝑦0 1
Ma trận tổng hợp
T=T1*T2*T3*T4
1 0 0 𝑆𝑥 0 0 −1 0 0 1 0 0
= 0 1 0 ∗ 0 𝑆𝑦 0 ∗ 0 −1 0 ∗ 0 1 0
−𝑥0 −𝑦0 1 0 0 1 0 0 1 𝑥0 𝑦0 1

Kết quả

−𝑆𝑥 0 0
T= 0 −𝑆𝑦 0
𝑥0 ∗ (1 + 𝑆𝑥 ) 𝑦0 ∗ (1 + 𝑆𝑦 ) 1

8. Tọa độ điểm A không đổi sau khi thực hiện phép biến đổi

B(5, 5) => xB = -10, yB = 20

C(10,30) => xC = -20, yC = -30

9.Xây dựng ma trận biến đổi


Tịnh tiến sao cho đƣờng thẳng y = x+a trùng với đƣờng thẳng y = x (tịnh tiến
điểm (-a, 0) về gốc tọa độ ):
1 0 0
Ma trận biến đổi T1= 0 1 0
𝑎 0 1
Thực hiện lấy đối xứng qua đƣờng thẳng y = x
0 1 0
Ma trận biến đổi T2 = 1 0 0
0 0 1
Tịnh tiến về vị trí ban đầu:
1 0 0
Ma trận biến đổi T3= 0 1 0
−𝑎 0 1
Thực hiện phép tỉ lệ với hệ số (Sx, Sy):
𝑆𝑥 0 0
Ma trận biến đổi T4= 0 𝑆𝑦 0
0 0 1
Ma trận tổng hợp
T=T1*T2*T3*T4

120
Đồ họa máy tính
1 0 0 0 1 0 1 0 0 𝑆𝑥 0 0
= 0 1 0 *1 0 0* 0 1 0 ∗ 0 𝑆𝑦 0
𝑎 0 1 0 0 1 −𝑎 0 1 0 0 1
Kết quả

0 𝑆𝑦 0
𝑆𝑥 0 0
−𝑎 ∗ 𝑆𝑥 𝑎 ∗ 𝑆𝑦 1

10.A(0,0) => xA = -10, yA = 10

B(10, 5) => xB = 0, yB = 30

C(5, 20) => xC = 30, yB = 20

11.Xây dựng ma trận biến đổi


Tịnh tiến điểm (x0, y0) về gốc tọa độ :
1 0 0
Ma trận biến đổi T1= 0 1 0
−𝑥0 −𝑦0 1
Thực hiện phép quay với góc 𝛼 :
cos 𝛼 sin 𝛼 0
Ma trận biến đổi T2= − sin 𝛼 cos 𝛼 0
0 0 1
Thực hiện lấy đối xứng qua trục hoành
1 0 0
Ma trận biến đổi T3= 0 −1 0
0 0 1
Tịnh tiến về vị trí ban đầu :
1 0 0
Ma trận biến đổi T4= 0 1 0
𝑥0 𝑦0 1
Ma trận tổng hợp T=T1*T2*T3*T4
1 0 0 cos 𝛼 sin 𝛼 0 1 0 0 1 0 0
= 0 1 0 ∗ − sin 𝛼 cos 𝛼 0*0 −1 0* 0 1 0
−𝑥0 −𝑦0 1 0 0 1 0 0 1 𝑥0 𝑦0 1

Kết quả
𝑐𝑜𝑠𝛼 −𝑠𝑖𝑛𝛼 0
T= −𝑠𝑖𝑛𝛼 −𝑐𝑜𝑠𝛼 0
𝑦0 ∗ 𝑠𝑖𝑛𝛼 + 𝑥0 (1 − 𝑐𝑜𝑠𝛼) 𝑥0 ∗ 𝑠𝑖𝑛𝛼 + 𝑦0 (1 + 𝑐𝑜𝑠𝛼) 1

121
Đồ họa máy tính
12.A(0, 0) => A‘(5( 3 +1)/2, 5( 3 +3)/2) = (6.830127, 11.83013)

B(10, 10) => B‘((15 -5 3 )/2, (5 -5 3 )/2) = (3.169873, -1.830127)

C(5, 20) => C‘((10 -15 3 )/2, -5/2) = (-7.990381, -2.5)

13. Xây dựng ma trận biến đổi


Tịnh tiến sao cho đƣờng thẳng y = -x+a trùng với đƣờng thẳng y = -x (tịnh tiến
điểm (-a, 0) về gốc tọa độ ):
1 0 0
Ma trận biến đổi T1= 0 1 0
−𝑎 0 1
Thực hiện lấy đối xứng qua đƣờng thẳng y = -x
0 −1 0
Ma trận biến đổi T2 = −1 0 0
0 0 1
Tịnh tiến về vị trí ban đầu:
1 0 0
Ma trận biến đổi T3= 0 1 0
𝑎 0 1
Thực hiện phép tỉ lệ với hệ số (Sx, Sy):
𝑆𝑥 0 0
Ma trận biến đổi T4= 0 𝑆𝑦 0
0 0 1
Ma trận tổng hợp
T=T1*T2*T3*T4

1 0 0 0 −1 0 1 0 0 𝑆𝑥 0 0
= 0 1 0 * −1 0 0*0 1 0 ∗ 0 𝑆𝑦 0
−𝑎 0 1 0 0 1 𝑎 0 1 0 0 1
Kết quả

0 −𝑆𝑦 0
T = −𝑆𝑥 0 0
𝑎 ∗ 𝑆𝑥 𝑎 ∗ 𝑆𝑦 1

14. A(0,0) => xA = 15, yA = 15


B(10, 5) => xB = 0, yB = -15

C(5, 20) => xC = -45, yB = 0

122
Đồ họa máy tính

Chƣơng 5

CÁC PHÉP BIẾN ĐỔI HÌNH HỌC 3 CHIỀU


5.1. Giới thiệu đồ 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 ba chiều, nên việc
thể hiện các đối tƣợng ba chiều trên máy tính là một công việc hết sức cần thiết để đƣa
tin học gần gũi với thực tế hơn. Cũng giống nhƣ các cách biểu diễn các đối tƣợng ba
chiều trên mặt phẳng khác (nhƣ của máy ảnh, camera, ... ), biểu diễn bằng máy tính
cũng phải tuân theo các quy luật về phối cảnh, sáng, tối, ... nhằm giúp ngƣời xem có
thể tƣởng tƣợng lại hình ảnh một cách gần đúng nhất. Ngoài ra biểu diễn trên máy tính
có ƣu thế giúp ta có thể quan sát đối tƣợng ở nhiều góc cạnh khác nhau, ở các khoảng
cách khác nhau.

5.1.1. Tổng quan về đồ họa ba chiều

Khi mô hình hóa và hiển thị một cảnh ba chiều, cần phải xem xét rất nhiều khía
cạnh và vấn đề khác nhau chứ không đơn giản là thêm vào tọa độ thứ ba cho các đối
tƣợng. Bề mặt đối tƣợng 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à các mặt cong. Ngoài ra, đôi khi cũng cần mô tả một số thông tin bên
trong các đối tƣợng. Các công cụ hỗ trợ đồ họa (graphics package) thƣờng
cung cấp một số hàm hiển thị các thành phần bên trong, những đƣờng nét tiêu
biểu hoặc hiển thị một phần của đối tƣợng ba chiều (solid object). Ngoài ra, các phép
biến đổi hình học thƣờng đƣợc sử dụng nhiều hơn và đa dạng hơn trong đồ họa ba
chiều so với trong đồ họa hai chiều. Phép biến đổi hệ quan sát trong không gian ba
chiều phức tạp hơn nhiều so với trong không gian hai chiều do ta phải chọn lựa nhiều
tham số hơn khi mô tả một cảnh ba chiều sẽ xuất hiện trên màn hình nhƣ thế nào.

Hình 5.1 Một cảnh đồ họa ba chiều

123
Đồ họa máy tính
Các mô tả về một cảnh ba chiều phải đi qua một 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 chuyển cảnh từ hệ tọa độ
quan sát ba chiều xuống hệ tọa độ thiết bị hai chiều. Những phần nhìn thấy đƣợc của
cảnh, ứng với một hệ quan sát đƣợc chọn nào đó, phải đƣợc xác định và cuối cùng, các
thuật toán vẽ mặt sẽ đƣợc áp dụng nhằm tạo ra hình ảnh trung thực (gần với thực tế)
của cảnh.

5.1.2. Sơ lƣợc về quy trình hiển thị

Quy trình xử lí thông tin trong đồ họa ba chiều là một chuỗi các bƣớc nối tiếp
nhau, kết quả của mỗi bƣớc sẽ là đầu vào của bƣớc tiếp theo.

Hình 5.2 Quy trình hiển thị đối tượng ba chiều

Quy trình bắt đầu bằng việc xây dựng các mô hình đối tƣợng. Các mô hình này
thƣờng đƣợc mô tả trong không gian ba chiều (x,y,z). Các mô hình thƣờng thể hiện vật
thể (solid) hoặc bề mặt (boundaries) của đối tƣợng. Nhƣ vậy ta có hai kiểu mô hình
hóa. Trong solid modeling các đối tƣợng đồ họa cơ sở thƣờng đƣợc dùng để mô tả các

124
Đồ họa máy tính
đối tƣợng có thể tích (volume). Trong boundary representations(B-reps), các đối tƣợng
đƣợc định nghĩa bởi bề mặt của chúng.

Các mô hình thƣờng đƣợc biểu diễn trong một hệ tọa độ cục bộ, mà ta gọi là hệ
tọa độ đối tƣợng. Trong hệ tọa độ này chỉcó bản thân đối tƣợng đƣợc định nghĩa, vì
vậy gốc tọa độ và đơn vị đo lƣờng thƣờng đƣợc chọn sao cho việc biểu diễn đối tƣợng
tiện lợi nhất.

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 (object-space) vào một không gian chung gọi là không gian thực (world space).
Trong không gian này các đối tƣợng, nguồn sáng, và ngƣời quan sát cùng tồn tại.
Bƣớc này đƣợc gọi là giai đoạn biến đổi mô hình (modeling transformation).

Bƣớc tiếp theo là một bƣớc tối ƣu hóa. Trong giai đoạn loại bỏ đơn giản (trivial
rejection) cần loại trừ tất cả các đối tƣợng không thể nhìn thấy. Điều này giúp tránh
đƣợc việc xử lí một số phần không cần thiết của cảnh (scene) mà ta đang chuẩn bị hiển
thị ở các bƣớc sau.

Tiếp theo phải chiếu sáng (illumination) các đối tƣợng có thể nhìn thấy đƣợc
bằng cách gán cho chúng màu sắc dựa trên các đặ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 cảnh.

Sau khi chiếu sáng, cần thực hiện một phép biến đổi hệ tọa độ để đặt vị trí quan
sát (viewing position) về gốc tọa độvà mặt phẳng quan sát (viewing plane) về một vị
trí mong ƣớc. Bƣớc này gọi là bƣớc đổi hệ quan sát. Sau bƣớc này, các đối tƣợng đƣợc
chuyển từ không gian thực sang không gian quan sát (eye space).

Trong không gian quan sát, ta phải thực hiện việc xén các đối tƣợng trong cảnh
để cảnh nằm gọn trong một phần không gian chóp cụt đƣợc gọi là viewing frustum.
Bƣớc này sẽ loại bỏ hoàn toàn các đối tƣợng (các mảnh đối tƣợng) không nhìn thấy
đƣợc trong ảnh.

Bƣớc tiếp theo là chiếu các đối tƣợng xuống mặt phẳng hai chiều. Bƣớc
Projection thực hiện phép biến đổi từ không gian quan sát sang không gian màn hình
(screen-space).

Trong bƣớc rời rạc hóa (rasterization) ta sẽ chuyển đối tƣợng thành các pixel.
Cuối cùng, toàn cảnh sẽ đƣợc hiển thị lên màn hình.

125
Đồ họa máy tính
5.1.3. Mô hình khung nối kết (Wireframe Model)

a. Khái niệm

Một phƣơng pháp thông dụng và đơn giản để mô hình hóa đối tƣợng là mô hình
khung nối kết.

Một mô hình khung nối kết gồm có một tập các đỉnh và tập các cạnh nối giữa
các đỉnh đó. Khi thể hiện bằng mô hình này, các đối tƣợng ba chiều có vẻ rỗng và
không giống thực tế lắm. Để hoàn thiện hơn, ngƣời ta dùng các kĩ thuật tạo bóng và
loại bỏ các đƣờng và mặt khuất. (Chúng ta sẽ đề cập vấn đề này ở các chƣơng sau).
Tuy nhiên vẽ bằng mô hình này thƣờng nhanh nên ngƣời ta thƣờng dùng nó trong việc
xem phác thảo (preview) các đối tƣợng, đặc biệt là trong các hệ CAD.

b. Biểu diễn các vật thể ba chiều bằng mô hình khung nối kết

Mô hình khung nối kết, hình dạng của đối tƣợng ba chiều đƣợc biểu diễn bằng
hai danh sách (list): danh sách các đỉnh (vertices) và danh sách các cạnh (edges) nối
các đỉnh đó. Danh sách các đỉnh cho biết thông tin hình học đó là vị trí các đỉnh, còn
danh sách các cạnh xác định thông tin về sự kết nối, nó cho biết cặp các đỉnh tạo ra
cạnh. Hãy quan sát một vật thể ba chiều đƣợc biểu diễn bằng mô hình khung nối kết
nhƣ sau:

Bảng danh sách các cạnh và đỉnh biểu diễn vật thể:

Hình 5.3 Vật thể ba chiều được biểu diễn bằng mô hình khung nối kết

126
Đồ họa máy tính

Có nhiều cách để đặc tả mô hình khung nối kết trên máy tính nhƣ dùng xâu,
mảng, ... và mỗi cách đều có các ƣu điểm riêng trong từng ứng dụng cụ thể. Ở đây ta
minh họa các biểu diễn mô hình khung nối kết bằng cấu trúc dữ liệu mảng nhƣ sau:

#define MAXVERTS 50 //số đỉnh tối đa có thể biểu diễn

#define MAXEDGES 100 //số cạnh tối đa

typedef struct {

float x, y, z;

} POINT3D;

typedef struct {

int NumVerts; //Số đỉnh trong mô hình

int NumEdges; //Số cạnh trong mô hình

127
Đồ họa máy tính
POINT3D Vert[MaxVerts];

int Edge[MaxEdges][2];

}WIREFRAME;

Ngoài ra, đôi khi trong mô hình wireframe ngƣời ta còn mô tả các mặt (phẳng)
của đối tƣợng. Mỗi mặt đƣợc định nghĩa bởi một đa giác bao. Ví dụ, đối tƣợng trong
hình 5.3 có 7 mặt.

5.2. Một số khái niệm

5.2.1. Phƣơng pháp biểu diễn điểm trong không gian 3 chiều.

Việc biểu diễn và hiển thị đối tƣợng trong không gian 3 chiều là cơ sở nền
tảng cho việc hiểu và nắm bắt đƣợc hình dạng của đối tƣợng. Qua phép biểu
diễn chúng ta có thể quan sát đƣợc đối tƣợng từ tất cả các góc, cũng nhƣ thao tác
một cách dễ dàng lên các đối tƣợng này. Việc tƣơng tác nhƣ quay, tịnh tiến, tỉ
lệ... lên các đối tƣợng phức tạp có thể chỉ đơn giản bằng cách nhấn chuột lên các
đối tƣợng và kết quả đƣợc hiển thị ngay trên màn hình.

Các đối tƣợng trong đồ họa 3D đƣợc mô tả nhƣ tập các điểm trong một
mặt phẳng. Các điểm đƣợc biểu diễn thông qua tọa độ của chúng viết dƣới dạng
các ma trận hay còn đƣợc gọi là các vector vị trí. Có 2 phƣơng pháp biểu diễn
các ma trận mà các phép biến đổi đồ họa trên đó là nhƣ nhau bao gồm phƣơng
pháp biểu diễn tọa độ theo ma trận 1 hàng 3 cột và ma trận 3 hàng 1 cột.

x 
hoặc là  y
 
 z 

Tập các điểm đƣợc lƣu trữ trong máy tính dƣới dạng các ma trận
hay chuỗi điểm mà vị trí của chúng quyết định hình dạng của đƣờng thẳng,
đƣờng cong hay ảnh sẽ dễ dàng kiểm soát thông qua các phép biến đổi. Phép
biến đổi đồ họa đƣợc mô tả dƣới dạng các ma trận tƣơng ứng cho phép thể hiện
các sự biến đổi tọa độ của các điểm qua các phép toán nhân ma trận. Điều đó tạo
điều kiện thuận lợi cho ngƣời sử dụng hình dung cũng nhƣ thao tác với các đối
tƣợng hình học một cách dễ dàng và đó cũng là một trong những tính năng mạnh
của đồ họa máy tính.

128
Đồ họa máy tính
5.2.2. Phƣơng pháp biểu diễn sử dụng hệ tọa độ đồng nhất.

Phép biểu diễn thông qua ma trận 3x3 thỏa mãn với mọi phép biến
đổi nhƣ quay, tỉ lệ, đối xứng, biến dạng. Điều đó có nghĩa chúng ta luôn có thể
xây dựng đƣợc một ma trận tổng hợp từ các phép biến đổi thành phần. Tuy
nhiên các phép tịnh tiến trong mặt phẳng 3 chiều đƣợc mô tả bởi 3 phƣơng trình
sau:

x‘= x + tx

y‘= y + ty

z‘= z + tz

thì không thể biểu diễn thông qua ma trận biến đổi 3x3. Nhƣ vậy với quá
trình biến đổi mà trong đó tồn tại phép tịnh tiến thì khả năng đƣa ra một ma trận
biến đổi tổng hợp duy nhất là không thể. Điều đó buộc chúng ta phải tìm ra một
giải pháp mới hữu hiệu hơn mà trong đó phép biểu diễn điếm thông qua các ma
trận đồng nhất là một giải pháp tối ƣu.

Phƣơng pháp biểu diễn mở rộng thông qua tọa độ đồng nhất của
các vector vị trí không đồng nhất [x y z] là ứng dụng của phép chiếu hình học
mà ở đó tọa độ điểm đƣợc mô tả dƣới dạng ma trận

[hx hy hz h] và h là một số thực tùy ý. Để đơn giản chọn h = 1. Vậy


một điểm trong mặt phẳng ở hệ tọa độ đồng nhất sẽ có 4 thành phần là

[x y z 1]. Các phép biến đổi trong mặt phẳng đƣợc biểu diễn dƣới
dạng

[ X‘ ] = [X ] * [ T ]

trong đó [ X‘] = [x‘ y‘ z‘ 1], [ X] = [x y z 1], [T] là ma trận vuông


cấp 4.

Có thể cải tiến các ma trận vuông cấp 3 trong các phép biến đổi thành ma
trận vuông cấp 4 mà không làm thay đổi đến các phép biến đổi bằng cách thêm
1 hàng, 1 cột vào ma trận.

129
Đồ họa máy tính

5.2.3. Công thức biến đổi Affine.

Phép biến đổi affine là phép biến đổi tuyến tính tọa độ điểm đặc
trƣng của đối tƣợng thành tập tƣơng ứng các điểm mới để tạo ra các hiệu ứng
cho toàn đối tƣợng.

[ X‘ ] = [ X ] * [ M ]

Với M4x4 là ma trận biến đổi .

a b c p 
d e f q 
[ x' y' z' 1]  [ x y z 1] *  
g i j r
 
l m n s

Một số tính chất của các phép biến đổi ba chiều :

- Tính chất đƣờng thẳng đƣợc bảo toàn. Nghĩa là, một đƣờng thẳng trong không
gian ba chiều khi biến đổi sẽ thành một đƣờng thẳng.
- Tính song đƣợc bảo toàn. Nghĩa là, hai đƣờng thẳng song khi biến đổi cũng sẽ
thành hai đƣờng thẳng song.
- Tính tỉ lệ về khoảng cách đƣợc bảo toàn. Nghĩa là, ảnh của một điểm P chia
đoạn thẳng AB theo tỉ lệ f, sẽ chia đoạn thẳng A‘B‘ theo tỉ lệ f, với A‘B‘ là ảnh
của đoạn thẳng AB.

Hình 5.4 Một cảnh ba chiều được tạo nhờ các phép biến đổi

130
Đồ họa máy tính
5.2.4. Các hệ trục tọa độ theo quy ƣớc bàn tay phải và bàn tay trái

Hệ tọa độ Descartes ba chiều có thể định nghĩa theo quy ƣớc bàn tay trái hoặc
bàn tay phải.

Hình 5.5(a)Các hệ tọa độ theo quy ước bàn tay phải, (b) quy ước bàn tay trái

Định nghĩa:

- Hệ tọa độ theo quy ƣớc bàn tay phải là hệ tọa độ với các trục x, y, z thỏa điều
kiện: Nếu để bàn tay phải sao cho ngón cái hƣớng cùng chiều với trục z, khi nắm tay
lại, chiều các ngón tay chuyển động theo hƣớng từ trục x đến trục y.

- Hệ tọa độ theo quy ƣớc bàn tay trái là hệ tọa độ với các trục x, y, z thỏa điều
kiện: Nếu để bàn tay trái sao cho ngón cái hƣớng cùng chiều với trục z, khi nắm tay
lại, chiều các ngón tay chuyển động theo hƣớng từ trục x đến trục y.

5.3. Các phép biến đổi hình học 3 chiều cơ sở

5.3.1. Phép tịnh tiến

Hình 5.6 Phép tịnh tiến với vector tịnh tiến tr=(trx, try, trz)

Vector tịnh tiến tr trong phép biến đổi ba chiều có một tác động rất trực quan:
mỗi điểm đƣợc dịch đi một khoảng là trx, try, trz theo ba trục.

Công thức biến đổi:

131
Đồ họa máy tính
 x'  x  trx

 y '  y  try
 z '  z  trz

Ma trận phép tịnh tiến có dạng nhƣ sau:

1 0 0 0
0 1 0 0
[T (trx, try, trz )]  
0 0 1 0
 
trx try trz 1

5.3.2. Phép biến đổi tỉ lệ

Phép biến đổi tỉ lệ trong ba chiều là một sự mở rộng của phép biến đổi tỉ lệ
trong hai chiều: Nếu thay đổi đối tƣợng một tỉ lệ sx theo trục Ox, sy theo trục Oy và sz
theo trục Oz thì tọa độ của đối tƣợng biến đổi theo công thức:

 x'  x * Sx

 y '  y * Sy
 z '  z * Sz

Ma trận biến đổi:

 Sx 0 0 0
 0 Sy 0 0
S =  
0 0 Sz 0
 
 0 0 0 1

Trong đó các hằng số sx, sy, sz là các hệ số tỉ lệ tƣơng ứng theo các trục x, y, z.

Hình 5.7. Phép biến đổi tỉ lệ

Chú ý.

132
Đồ họa máy tính
Nếu sx = -1, sy = sz = 1 thì phép tỉ lệ là phép đối xứng qua mặt phẳng yOz.

Nếu sy = -1, sx = sz = 1 thì phép tỉ lệ là phép đối xứng qua mặt phẳng xOz.

Nếu sz = -1, sy = sx = 1 thì phép tỉ lệ là phép đối xứng qua mặt phẳng xOy.

Nếu sx = sy = sz = 1 thì đối tƣợng đƣợc giữ nguyên hình dạng ban đầu.

Nếu 0 < sx, sy, sz < 1 thì phép biến đổi tƣơng ứng là thu nhỏ đối tƣợng.

Nếu sx, sy, sz > 1 thì phép biến đổi thu đƣợc là phép phóng to đối tƣợng.

Khi các hệ số tỉ lệ sx, sy, sz bằng nhau, ta có phép biến đổi đồng dạng.

Trong phép biến đổi S(sx, sy, sz ), gốc tọa độ O sẽ có ảnh là chính nó. Ta gọi
gốc tọa độ là điểm bất động (fixed point) của S, hay còn gọi O là tâm của phép biến
đổi.

Tổng quát hơn, ta có thể mô tả một phép biến đổi tỉ lệ theo một tâm (xf, xf, xf)
bất kì bằng một dãy ba phép biến đổi sau:

Tịnh tiến điểm bất động (xf, xf, xf) về gốc tọa độ.

Thực hiện phép biến đổi tỉ lệ theo công thức

Tịnh tiến ngƣợc điểm bất động từ gốc tọa độ trở về vị trí ban đầu.

Nhƣ vậy, kết hợp ba bƣớc biến đổi trên ta có đƣợc ma trận biến đổi của phép
biến đổi tỉ lệ theo tâm (xf, xf, xf)với hệ số tỉ lệ sx, sy, sz là:

5.3.3. Phép biến dạng

Biến dạng theo bất kì trục tọa độ nào cũng bị ảnh hƣởng bởi tọa độ ứng với hai
trục còn lại. (Sự thay đổi của x phụ thuộc cả vào y và z và ngƣợc lại.)

Công thức biến đổi.

 x'  x  cy  ez

 y '  ax  y  fz
 z '  bx  dy  z

133
Đồ họa máy tính
Ma trận biến đổi.

1 a b 0
c 1 d 0

Tsh = 
e f 1 0
 
0 0 0 1

Hình 5.8. Phép biến dạng theo trục x: a = b = 1, các hệ số khác bằng 0

Tƣơng tự nhƣ trong trƣờng hợp phép biến đổi tỉ lệ, phép biến dạng Sh cũng có
điểm bất động là gốc tọa độ O. Ta cũng có thể xây dựng phép biến dạng với tâm biến
dạng tại một điểm (xf, xf, xf) bất kì.

Ma trận biến đổi của phép biến dạng với tâm tại (xf, xf, xf) là:

 1 a b 0
 c 1 d 0
T= 
 e f 1 0
 
 y f * c  z f * e  x f * a  z f * f  xf *b  y f * f 1

5.3.4. Phép quay

a. Phép quay quanh một trục tọa độ

Phép quay là phép biến đổi làm thay đổi hƣớng của đối tƣợng nhƣng kích thƣớc
và hình dạng của đối tƣợng vẫn đƣợc giữ nguyên.

Khi quay đối tƣợng quanh một trục nào đó thì tọa độ của đối tƣợng tại trục đó
sẽ không đổi.

Chiều dƣơng của phép quay: Các định nghĩa về chiều quay đƣợc dùng chung
cho cả hệ tọa độ theo quy ƣớc bàn tay phải và bàn tay trái. Cụ thể chiều dƣơng đƣợc
định nghĩa nhƣ sau:
Quay quanh trục x: từ trục dƣơng y đến trục dƣơng z.
Quay quanh trục y: từ trục dƣơng z đến trục dƣơng x.
134
Đồ họa máy tính
Quay quanh trục z: từ trục dƣơng x đến trục dƣơng y.

Hình 5.9 Cách xác định chiều quay dương

a. Quay đối tượng quanh trục Ox.

Là phép quay mà giá trị của x trong vector vị trí không thay đổi. Mặt
phẳng xoay sẽ vuông góc với trục Ox.

Hình 5.10 Quay đối tượng quanh trục Ox

Công thức biến đổi

 x'  x

 y '  y cos   z sin 
 z '  y sin   z cos 

Ma trận biến đổi.

1 0 0 0
0 cos  sin  0
[Tx]  
0  sin  cos  0
 
0 0 0 1

b. Quay đối tượng quanh trục Oy.

135
Đồ họa máy tính
Là phép quay mà giá trị của y trong vector vị trí không thay đổi. Mặt phẳng
xoay sẽ vuông góc với trục Oy.

Hình 5.11 Quay đối tượng quanh trục Oy

Công thức biến đổi.

 x'  x cos   z sin 



 y'  y
 z '   x sin   z cos 

Ma trận biến đổi.

cos  0  sin  0
 0 1 0 0
[Ty]  
 sin  0 cos  0
 
 0 0 0 1

c. Quay đối tượng quanh trục Oz

Là phép quay mà giá trị của z trong vector vị trí không thay đổi. Mặt phẳng
xoay sẽ vuông góc với trục Oz.

Hình 5.12 Quay đối tượng quanh trục Oz

Công thức biến đổi.


136
Đồ họa máy tính
 x'  x cos   y sin 

 y '  x sin   y cos 
z'  z

Ma trận biến đổi.

 cos  sin  0 0
 sin  cos  0 0
[Tz]  
 0 0 1 0
 
 0 0 0 1

b. Quay quanh một trục bất kỳ song song với các trục tọa độ.

Các ma trận biến đổi quay quanh các trục tọa độ rất có hiệu quả trong việc xử lý
biến đổi các đối tƣợng, tuy nhiên việc quay các đối tƣợng thƣờng dựa trên các trục
song song với các trục tọa độ gốc. Quá trình quay đối tƣợng quanh các trục của chúng
tuân thủ theo các bƣớc sau:

Bƣớc 1: Dịch chuyển đối tƣợng sao cho trục quay trùng với trục tọa độ

Bƣớc 2 : Quay đối tƣợng quanh trục của nó (tƣơng đƣơng với trục tọa độ gốc).

Bƣớc 3 : Đƣa trả đối tƣợng về vị trí ban đầu.

Ví dụ: Quay đối tƣợng quanh trục song song với trục Ox, cách trục Oy, Oz một
khoảng ty, tz
Bƣớc 1: Tịnh tiến sao cho trục quay trùng với trục Ox:
1 0 0 0
0 1 0 0
Ma trận biến đổi: T1= 0 0 1 0
0 −𝑡𝑦 −𝑡𝑧 1
Bƣớc 2: Quay quanh trục Ox:
1 0 0 0
0 cos 𝛼 sin 𝛼 0
Ma trận biến đổi: T2=
0 − sin 𝛼 cos 𝛼 0
0 0 0 1
Bƣớc 3: Tịnh tiến ngƣợc về vị trí ban đầu:
1 0 0 0
0 1 0 0
Ma trận biến đổi: T3= 0 0 1 0
0 𝑡𝑦 𝑡𝑧 1

137
Đồ họa máy tính
Bƣớc 4: Ma trận của phép quay quanh trục song song với trục Ox cách trục Oy,
Oz 1 khoảng ty,tz là
T=T1*T2*T3
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 cos 𝛼 sin 𝛼 0 0 1 0 0
=0 0 1 0 ∗ 0 − sin 𝛼 cos 𝛼 0
∗ 0 0 1 0
0 −𝑡𝑦 −𝑡𝑧 1 0 0 0 1 0 𝑡𝑦 𝑡𝑧 1

1 0 0 0
0 cos 𝛼 sin 𝛼 0
=0 − sin 𝛼 cos 𝛼 0
0 𝑡𝑦 ∗ 1 − cos 𝛼 + 𝑡𝑧 ∗ sin 𝛼 𝑡𝑧 ∗ (1 − cos 𝛼) − 𝑡𝑦 ∗ sin 𝛼 1

c. Phép quay quanh một trục bất kì

Giả sử trục quay đi qua hai điểm P0, P1 nào đó với phƣơng đƣợc biểu diễn bởi
vector đơn vị k. Quay điểm (x, y, z) quanh trục k theo một góc Ɵ sẽ biến thành điểm
(x‘, y‘, z‘) (xem hình 5.13).

Hình 5.13 – Quay đối tượng quanh trục bất kỳ

Để thực hiện phép quay quanh k một góc Ɵ, ta có thể thực hiện một chuỗi các
thao tác sau:
Tịnh tiến trục k về gốc tọa độ: tr(-P0) (thành trục k').
Quay quanh trục x một góc α để đặt trục k' nằm trên mặt phẳng Oxz: rot(x, α)
(thành trục k‖).
Quay quanh trục y góc β để đƣa trục k‖ về trục z: rot(y,- β).
Thực hiện phép quay quanh trục z một góc Ɵ: rot(z, Ɵ).
Thực hiện chuỗi các phép biến đổi ngƣợc lại quá trình trên.

138
Đồ họa máy tính
Góc quay α đƣợc xác định dựa trên chiếu của k' lên mặt phẳng Oyz. Ta không
cần tính α cụ thể. Thay vào đó ta tính sin(α) và cos(α) một cách trực tiếp.

Từ hình 5.13 ta có:

Tƣơng tự, từ hình 5.14 ta có:

Nhƣ vậy, phép quay quanh một trục P0 P1 bất kì một góc , rot(P0P1, ), có thể
đƣợc phân rã thành chuỗi các biến đổi cơ sở sau: tr(-P0) rot(x, α) rot(y, - β) rot(z, )
rot(y, β) rot(x, - α) tr(P0)

Hình 5.14 Tính góc β

5.3.5.Phép đối xứng.

a. Đối xứng qua mặt phẳng xOy.

Là phép biến đổi mà giá trị của x, y trong vector vị trí không thay đổi.
Giá trị của z = -z

Hình 5.15 Đối xứng qua mặt phẳng xOy

139
Đồ họa máy tính
Công thức biến đổi.

 x'  x

 y'  y
z'   z

Ma trận biến đổi

1 0 0 0
0 1 0 0

T =
0 0  1 0
 
0 0 0 1

b. Đối xứng qua mặt phẳng xOz.

Là phép biến đổi mà giá trị của x và z trong vector vị trí không thay đổi.
Giá trị của y = -y.

Hình 5.16 Đối xứng qua mặt phẳng xOz

Công thức biến đổi.

 x'  x

 y'   y
z'  z

Ma trận biến đổi

1 0 0 0
0  1 0 0

T =
0 0 1 0
 
0 0 0 1

c. Đối xứng qua mặt phẳng yOz.

140
Đồ họa máy tính
Là phép biến đổi mà giá trị của y và z trong vector vị trí là không thay đổi. Giá
trị của x = -x

Hình 5.17 Đối xứng qua mặt phẳng zOy

Công thức biến đổi.

 x'   x

 y'  y
z'  z

Ma trận biến đổi.

 1 0 0 0
0 1 0 0

T =
0 0 1 0
 
0 0 0 1

d. Đối xứng qua mặt phẳng song với mặt phẳng gốc.

Để thực hiện phép đối xứng đối tƣợng qua một mặt phẳng song với mặt phẳng
gốc ta thực hiện các bƣớc sau:

Bƣớc 1: Tịnh tiến đối tƣợng sao cho mặt phẳng đối xứng trùng với mặt phẳng
tọa độ.

Bƣớc 2 : Thực hiện phép đối xứng qua mặt phẳng tọa độ.

Bƣớc 3 : Tịnh tiến về vị trí ban đầu.

Ví dụ: Đối xứng với mặt phẳng song song với mặt phẳng xOy.

Bƣớc 1: Dịch chuyển đối tƣợng sang hệ tọa độ tạm thời O‘x‘y‘z‘.

Với O‘z‘ cách Oz một khoảng là dz.

141
Đồ họa máy tính
1 0 0 0
0 1 00

Ma trận biến đổiT1 = 
0 0 1 0
 
0 0 dz 1

Bƣớc 2 : Thực hiện phép đối xứng qua mặt phẳng x‘O‘y‘.

1 0 00
0 1 0
0

Ma trận biến đổiT2 = 
0 0  1 0
 
0 0 0 1

Bƣớc 3 : Quay lại vị trí ban đầu.

1 0 0
0
0 1 0
0

Ma trận biến đổiT = 
0 0 1 0
 
0 0  dz 1

→ [ T ] = [ T1 ]* [ T2 ]* [ T3 ]

1 0 00 1 0 00 1 0 0 0
0 1 00 0 1 0
0 0 1 0 0
 
[T] = 
0 0 1 0  * 0 0  1 0 * 0 0 1 0
     
0 0 dz 1 0 0 0 1 0 0  dz 1

1 0 0 0
0 1 0 0

[T] = 
0 0  1 0
 
0 0 dz 2 1

e. Đối xứng với mặt phẳng song song với mặt phẳng xOz.

Bƣớc 1: Dịch chuyển đối tƣợng sang hệ tọa độ tạm thời O‘x‘y‘z‘.

Với O‘y‘ cách Oy một khoảng là dy.

1 0 0 0
0 1 0 0

Ma trận biến đổi[T1] = 
0 0 1 0
 
0 dy 0 1

142
Đồ họa máy tính
Bƣớc 2 : Thực hiện phép đối xứng qua mặt phẳng x‘O‘z‘.

1 0 0 0
0  1 0 0

Ma trận biến đổi[T2] = 
0 0 1 0
 
0 0 0 1

Bƣớc 3 : Quay lại vị trí ban đầu.

1 0 0 0
0 1 0 0

Ma trận biến đổi[T3] = 
0 0 1 0
 
0  dy 0 1

→ [ T ] = [ T1 ]* [ T2 ]* [ T3 ]

1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0  1 
0 0  0 1 0 0

[T] = 
0 0 1 0  * 0 0 *
1 0  0 0 1 0
     
0 dy 0 1  0 0 0 1 0  dy 0 1

1 0 0 0
0  1 0 0
[T] = 
0 0 1 0
 2 
0 dy 0 1

f. Đối xứng với mặt phẳng song song với mặt phẳng yOz.

Bƣớc 1: Dịch chuyển đối tƣợng sang hệ tọa độ tạm thời O‘x‘y‘z‘.

Với O‘x‘ cách Ox một khoảng là dx.

1 0 0 0
0 1 0 0

Ma trận biến đổi[T1] = 
0 0 1 0
 
dx 0 0 1

Bƣớc 2 : Thực hiện phép đối xứng qua mặt phẳng y‘O‘z‘.

143
Đồ họa máy tính
 1 0 0 0
0 1 0 0

Ma trận biến đổi[T2] = 
0 0 1 0
 
0 0 0 1

Bƣớc 3 : Quay lại vị trí ban đầu.

 1 0 0 0
 0 1 0 0

Ma trận biến đổi[T3] = 
0 0 1 0
 
 dx 0 0 1

→ [ T ] = [ T1 ]* [ T2 ]* [ T3 ]

1 0 0 0  1 0 0 0  1 0 0 0
0 1 0 0  0 1 0 0  0 1 0 0

[T] =  * *
0 0 1 0  0 0 1 0  0 0 1 0
     
dx 0 0 1  0 0 0 1  dx 0 0 1

1 0 0 0
 0 1 0 0

[T] = 
0 0 1 0
 2 
dx 0 0 1

5.3.6 Kết hợp các phép biến đổi affine ba chiều

Để kết hợp các phép biến đổi affine ba chiều, chúng ta cũng thực hiện tƣơng tự
nhƣ ở phép biến đổi hai chiều bằng cách dùng hệ tọa độ thuần nhất.

Bằng cách này chúng ta cũng có các kết quả tƣơng tự nhƣ trong trƣờng hợp
biến đổi hai chiều. Nếu M1 biến đổi P thành Q và M2 biến đổi Q thành S thì M1M2 sẽ
biến đổi P thành S, do đó ma trận kết hợp của nhiều phép biến đổi có thể đƣợc tính từ
việc nhân các ma trận của các phép biến đổi thành phần.

5.4. Các phép chiếu của vật thể trong không gian lên mặt phẳng

5.4.1. Định nghĩa chung

Đồ họa 3 chiều (3D computer graphics) bao gồm việc bổ sung kích thƣớc về
chiều sâu của đối tƣợng, cho phép biểu diễn chúng trong thế giới thực một cách chính
xác và sinh động hơn.

144
Đồ họa máy tính
Tuy nhiên các thiết bị truy xuất hiện tại đều là 2 chiều, do vậy việc biểu diễn
đƣợc thực thi thông qua phép tô trát (render) để gây ảo giác (illusion) về độ sâu.

Đồ hoạ 3D là việc chuyển thế giới tự nhiên dƣới dạng các mô hình biểu diễn
trên các thiết bị hiển thị thông qua kỹ thuật tô trát (rendering).

Định nghĩa phép chiếu: phép chiếu là phép chuyển đổi những điểm của đối
tƣợng trong hệ thống tọa độ n chiều thành những điểm trong hệ thống tọa độ có số
chiều nhỏ hơn n.

Định nghĩa hình chiếu: Ảnh của đối tƣợng trên mặt phẳng chiếu đƣợc hình
thành từ phép chiếu bởi các đƣờng thẳng gọi là tia chiếu (projector) xuất phát từ một
điểm gọi là tâm chiếu (center of projection) đi qua các điểm của đối tƣợng giao với
mặt chiếu (projection plan).

Các bƣớc xây dựng hình chiếu

1. Đối tƣợng trong không gian 3D với tọa độ thực đƣợc cắt theo một không
gian xác định gọi là view volume.

2. View volume đƣợc chiếu lên mặt phẳng chiếu. Diện tích choán bởi view
volume trên mặt phẳng chiếu đó sẽ cho ta khung nhìn.

3. Ánh xạ khung nhìn vào trong một cổng nhìn bất kỳcho trƣớc trên màn hình
để hiển thị hình ảnh.

Hình 5.15. Mô hình nguyên lý của tiến trình biểu diễn


đối tượng 3D
5.4.2. Phân loại phép chiếu

Các phép chiếu hình học phẳng đƣợc xây dựng trên cơ sở của 2 phép chiếu cơ
bản là phép chiếu song song và phép chiếu phối cảnh. Sự khác biệt của hai phép chiếu
là vị trí của tâm chiếu. Khi khoảng cách giữa tâm chiếu và mặt phẳng chiếu là hữu hạn
thì phép chiếu đó đƣợc gọi là phép chiếu phối cảnh. Khi khoảng cách giữa tâm chiếu

145
Đồ họa máy tính
và mặt phẳng chiếu là vô hạn thì các tia chiếu đƣợc coi nhƣ song song với nhau và
phép chiếu đƣợc gọi là phép chiếu song song.

Việc phát triển của các phép biến đổi có 2 phƣơng pháp đƣợc sử dụng:

- Thứ nhất: Khi tâm phép chiếu trùng với mắt ngƣời sử dụng là cố định và mặt
phẳng chiếu vuông góc với hƣớng của mắt nhìn.
- Thứ hai: Khi đối tƣợng là cố định và tâm chiếu tự do dịch chuyển trong không
gian 3D và mặt phẳng chiếu không nhất thiết vuông góc với hƣớng nhìn.

Hình 5.16. Phân loại phép chiếu


5.4.3. Phép chiếu song song

Phép chiếu song song (Parallel Projections) là phép chiếu mà ở đó các tia chiếu
song song với nhau hay xuất phát từ điểm vô cùng.

Phân loại phép chiếu song song dựa trên hƣớng của tia chiếu (Direction Of
Projection)và mặt phẳng chiếu (projection plane).

1) Phép chiếu trực giao (Orthographic projection)

146
Đồ họa máy tính
Là phép chiếu song song và tia chiếu vuông góc với mặt phẳng chiếu. Về mặt
toán học, phép chiếu trực giao là phép chiếu với một trong các mặt phẳng toạ độcó giá
trị bằng 0. Thƣờng dùng mặt phẳng z = 0, ngoài ra x=0 và y=0.

Ứng với mỗi mặt phẳng chiếu ta có một ma trận chiếu tƣơng ứng.

1 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 1 0 0
[Ty]= [Tx]= [Tz]=
0 0 1 0 0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 1 0 0 0 1

Hình 5.18 Phép chiếu trực giao

Thông thƣờng thì ngƣời ta không sử dụng cả 6 mặt phẳng để suy diễn ngƣợc
hình của một đối tƣợng mà chỉ sử dụng một trong số chúng nhƣ: hình chiếu bằng,
đứng, cạnh.

Cả sáu góc nhìn đều có thể thu đƣợc từ một mặt phẳng chiếu thông qua các
phép biến đổi hình học nhƣ quay, dịch chuyển hay lấy đối xứng.

Ví dụ: giả sử chúng ta có hình chiếu bằng trên mặt phẳng z=0, với phép quay
đối tƣợng quanh trục một góc 90o sẽ cho ta hình chiếu cạnh.

Đối với các đối tƣợng mà các mặt của chúng không song song với một trong
các mặt phẳng hệ toạ độ thì phép chiếu này không cho hình dạng thật của vật thể.
Muốn nhìn vật thể chính xác hơn ngƣời ta phải hình thành phép chiếu thông qua việc
quay và dịch chuyển đối tƣợng sao cho mặt phẳng đó song song với các trục toạ độ.

147
Đồ họa máy tính
Hình của đối tƣợng quá phức tạp cần thiết phải biết các phần bên trong của đối
tƣợng đôi lúc chúng ta phải tạo mặt cắt đối tƣợng.

2) Phép chiếu trục lƣợng (Axonometric)

Phép chiếu trục lƣợng là phép chiếu mà hình chiếu thu đƣợc sau khi quay đối
tƣợng sao cho ba mặt của đối tƣợng đƣợc trông thấy rõ nhất (thƣờng mặt phẳng chiếu
là z=0).

Có 3 phép chiếu

- Phép chiếu Trimetric

- Phép chiếu Dimetric

- Phép chiếu Isometric

a) Phép chiếu Trimetric

Là phép chiếu hình thành từviệc quay tựdo đối tƣợng trên một trục hay tất cả
các trục của hệ tọa độvà chiếu đối tƣợng đó bằng phép chiếu song song lên mặt phẳng
chiếu (thƣờng là mặt phẳng z = 0).

Ngoại trừ những mặt phẳng của đối tƣợng song song với mặt phẳng chiếu
không thay đổi. Các mặt khác của đối tƣợng hay hình dạng của đối tƣợng thƣờng biến
dạng sau phép chiếu.Tuy nhiên tỉ lệ co (Shortening Factor - SF) là tỷ số của độ dài
đoạn thẳng chiếu so với độdài thực tế của đối tƣợng. Trên cơ sở SF phép chiếu trục
lƣợng đƣợc chia làm ba loại sau:

ƒ - Phép chiếu Trimetric

ƒ - Phép chiếu Dimetric

ƒ - Phép chiếu Isometric

Việc tính các giá trị SF này của các trục tƣơng ứng dựa vào công thức [U]* [T].

𝑥′𝑥 𝑦′𝑥 0 1
1 0 0 1
𝑥′ 𝑥′𝑦 0 1
[U]= 0 1 0 1 [T]= 𝑦
0 0 1 1 𝑥′𝑧 𝑥′𝑧 0 1
0 0 0 1
[ U ]: là ma trận vector đơn vịcủa các trục x, y, z bất biến

[ T ]: là ma trận chiếu tổng hợp tƣơng ứng

SF- tỉlệco theo các trục là:

148
Đồ họa máy tính

fx= 𝑥′2𝑥 + 𝑦′2𝑥 fy= 𝑥′2𝑦 + 𝑦′2𝑦 fx= 𝑥′2𝑧 + 𝑦′2𝑧

b) Phép chiếu Dimetric

Là phép chiếu Trimetric với 2 hệsốtỉlệco bằng nhau, giá trịthứ3 còn lại là tuỳ ý.

Phép chiếu đƣợc xây dựng bằng cách quay đối tƣợng quanh trục y theo một góc
φ, tiếp đó quanh trục ox một góc ϕvà sau cùng là phép chiếu trên mặt phẳng z=0 với
tâm chiếu tại vô tận.

Hình 5.19 Ảnh của phép chiếu Trimetric với các tham số góc xoay thay đổi

[T]=[Ry][Rx][Pz]

𝑐𝑜𝑠∅ 0 −𝑠𝑖𝑛∅ 0 1 0 0 0 1 0 0 0
0 1 0 0 0 𝑐𝑜𝑠∅ 𝑠𝑖𝑛∅0 0 0 1 0 0
[T] = . .
𝑠𝑖𝑛∅ 0 𝑐𝑜𝑠∅ 0 0 −𝑠𝑖𝑛∅ 𝑐𝑜𝑠∅ 0 0 0 0 0
0 0 0 1 0 0 0 1 0 0 0 1

𝑐𝑜𝑠∅ 𝑠𝑖𝑛∅𝑠𝑖𝑛∅ 0 0 𝑥′𝑥 𝑦′𝑥 0 0


0 𝑐𝑜𝑠∅ 0 0 𝑥′𝑦 𝑥′𝑦 0 0
[T] = =
𝑠𝑖𝑛∅ −𝑐𝑜𝑠∅𝑠𝑖𝑛∅ 0 0 𝑥′𝑧 𝑥′𝑧 0 0
0 0 0 1 0 0 0 1
𝑓𝑥2 =(𝑥′2𝑥 + 𝑦′2𝑥 )=cos2 ∅+sin2∅.sin2∅

𝑓𝑦2 =(𝑥′2𝑥 + 𝑦′2𝑥 )=cos2 ∅

149
Đồ họa máy tính
Tỷ lệ co trên x và y bằng nhau nên ta có:

cos2 ∅ =cos2 ∅+sin2∅.sin2∅

1- sin2∅ =1- sin2∅ +sin2∅.sin2∅

sin2∅(sin2∅ − 1) = −sin2∅
sin 2 φ
sin2∅ =
1−sin 2 φ

𝑓𝑧2 =(𝑥′2𝑧 + 𝑦′2𝑧 )= sin2∅+cos2 ∅.sin2 𝜑

= sin2 ∅ +sin2 𝜑(1- sin2∅)= sin2𝜑 +sin2∅(1- sin2𝜑)

𝑓𝑧2 −sin 2 φ sin 2 φ


sin2 ∅ = =
1−sin 2 φ 1−sin 2 φ

𝑓
sin2 𝜑 = 𝑧
2

fz
∅ = sin-1(± )
2−f 2z

fz
𝜑= sin-1(± )
2

Ta thấy tỷ lệ co thuộc khoảng [0 1], với mỗi fz ta có bốn khả năng của phép
chiếu.

fz= 0 fz=1/2 fz= 1

Hình 5.20 Phép chiếu hình hộp với f=0, f=1/2 và f=1

Khi fz=1/2 thì:


1
𝜑=sin-1(± )≈sin-1(±0.35355)≈ ±20.7050
2 2

1/2
∅=sin-1(± )≈sin-1(±0.378)≈ ±22.208
7/4

c) Phép chiếu Isometric

Là phép chiếu trục lƣợng mà ở đó hệsốco cạnh trên 3 trục là bằng nhau.

150
Đồ họa máy tính
0 0
Góc quay tƣơng ứng là 35.26 và 45

Đƣợc ứng dụng nhiều trong việc xây dựng các góc quan sát chuẩn cho đối
tƣợng trong các hệ soạn thảo đồ hoạ.

1−2sin 2 φ
sin2∅ =
1−sin 2 φ

sin 2 φ
sin2∅ =
1−sin 2 φ

1
sin𝜑=±
3

𝜑=±35.260

sin 2 φ 1/3
sin2∅ = = =1/2
1−sin 2 φ 1−1/3

1
sin𝜑=±
2

∅=±450

𝜑=±35.260 f= cos 2 φ = 2/3=0.8165


∅=±450

Ví dụ các phép chiếu song song:

Hình 5.21 Ví dụ các phép chiếu song song

3) Phép chiếu xiên - Oblique

151
Đồ họa máy tính
ƒ Phép chiếu Cavalier

ƒ Phép chiếu Cabinet

Hình 5.22 Phép chiếu với tâm chiếu trên trục oz

1) Phép chiếu Cavalier

Phép chiếu cavalier là phép chiếu xiên đƣợc tạo thành khi các tia chiếu làm
thành với mặt phẳng chiếu một góc 450

Hệ số co trên các hệtrục toạ độbằng nhau.

Ta có vector đơn vị theo trục z là P=[0 0 1] tia chiếu làm với mặt phẳng một
góc và p đƣợc chiếu lên mặt phẳng chiếu, P1O và PP2 là 2 tia chiếu của phép chiếu
xiên với góc βvới mặt phẳng chiếu, P2 là ảnh của P, P1 là điểm dịch chuyển của P tạo
ra tia chiếu song song PP2

Tia chiếu P1O có thểthu đƣợc từ phép biến đổi P đến điểm [-a-b]

Trong không gian hai chiều dịch chuyển sẽ là:


1 0 0
[T‘]= 0 1 0
−𝑎 −𝑏 1
Trong không gian ba chiều, f là chiều dài của hình chiếu vector đơn vị trục z
trên mặt phẳng chiếu, đó chính là hệ số co.

152
Đồ họa máy tính
1 0 0 0 a=f cos 𝛼
0 1 0 0
[T’]=
−𝑎 −𝑏 0 0 b=f sin 𝛼
0 0 0 1
1 0 0 0
0 1 0 0
[T‘]=
−f cos 𝛼 −f sin 𝛼 0 0
0 0 0 1
f = 0, b = 900 phép chiếu sẽ trở thành phép chiếu trực giao.

Còn với f = 1 kích thƣớc của hình chiếu bằng kích thƣớc của đối tƣợng

=> cavalier

Phép chiếu Cavalier cho phép giá trịcủa a biến đổi một cách tựdo a = 300 và 450

2) Phép chiếu Cabinet

Phép chiếu xiên với hệ số co tỉ lệ f = 1/2 .

Với phép chiếu cabinet, giá trị của α có thể thay đổi tuỳ ý. Thông thƣờng thì các
giá trị hay đƣợc sử dụng là 300 và 450.

Theo phép chiếu xiên một số mặt của đối tƣợng có thể đƣợc hiển thị nhƣ hình
dạng thật cho nên rất phù hợp với việc mô tả các đối tƣợng có hình dạng tròn hay các
bề mặt cong.
𝑓
𝛽= cos-1( )
12 +𝑓 2

1/2
= cos-1( )= 63.4350
12 +(1/2)2

Ví dụ về phép chiếu xiên (Oblique Projections)

Hình 5.23 Ví dụ các phép chiếu xiên hình hộp

153
Đồ họa máy tính
5.4.4. Phép chiếu phối cảnh (Perspective Projection)

Phép chiếu phối cảnh là phép chiếu mà các tia chiếu không song song với nhau
mà xuất phát từ một điểm gọi là tâm chiếu. Phép chiếu phối cảnh tạo ra hiệu ứng về
luật xa gần tạo cảm giác về độ sâu của đối tƣợng trong thế giới thật mà phép chiếu
song song không lột tả đƣợc.

Các đoạn thẳng song song của mô hình 3D sau phép chiếu hội tụ tại một điểm
gọi là điểm triệt tiêu (vanishing point).

Phân loại phép chiếu phối cảnh dựa vào tâm chiếu (Centre Of Projection -COP)
và mặt phẳng chiếu (Projection plane)

Một tâm chiếu Hai tâm chiếu Ba tâm chiếu

1 point Perspective 2 point Perspective 3 point Perspective

Hình 5.24 Phép biến đổi phối cảnh

154
Đồ họa máy tính

Hình 5.25 Phép chiếu với tâm chiếu trên trục z

Phép chiếu phối cảnh của các điểm trên đối tƣợng lên trên mặt phẳng 2D thu
đƣợc từ phép chiếu trực giao và phép biến đổi phối cảnh.

1) Phép chiếu phối cảnh một tâm chiếu

Giả sử khi mặt phẳng đƣợc đặt tại z = 0 và tâm phép chiếu nằm trên trục z, cách
trục z một khoảng zc = -1/r.

Nếu đối tƣợng cũng nằm trên mặt phẳng z = 0 thì đối tƣợng sẽ cho hình ảnh
thật.

Phƣơng trình biến đổi:

[ x y z 1 ][ Tr ] = [ x y z rz+1 ]

ma trận biến đổi một điểm phối cảnh [ Tr ] có dạng:

1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0
[Tr] = =
0 0 1 𝑟 0 0 0 0 0 0 0 𝑟
0 0 0 1 0 0 0 1 0 0 0 1
1 0 0 0
0 1 0 0
[x y z 1] = [x y 0 rz+1]
0 0 0 𝑟
0 0 0 1
𝑥 𝑦
[x‘ y‘ x‘ 1] = 0 1
𝑟𝑧 +1 𝑟𝑧 +1

155
Đồ họa máy tính

Hình 5.26 Phép chiếu phối cảnh một tâm chiếu

2) Phép chiếu phối cảnh hai tâm chiếu

Hình 5.27 Phép chiếu phối cảnh hai tâm chiếu

[ Tc ] = [ Tpq ][ Tz ]
1 0 0 𝑝 1 0 0 0 1 0 0 𝑝
0 1 0 𝑞 0 1 0 0 0 1 0 𝑞
= =
0 0 1 0 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1
1 0 0 𝑝
0 1 0 𝑞
[Tpq]=
0 0 1 0
0 0 0 1
1 0 0 𝑝
0 1 0 𝑞
[x y z 1]= =[x y z (px+qy+1) ]
0 0 1 0
0 0 0 1

156
Đồ họa máy tính
𝑥 𝑦 𝑧
[x‘ y‘ z‘ 1]= 1
(𝑝𝑥 +𝑞𝑦 +1) (𝑝𝑥 +𝑞𝑦 +1) (𝑝𝑥 +𝑞𝑦 +1)

Hai tâm chiếu: [ -1/p 0 0 1 ] và [ 0 -1/q 0 1 ]

Điểm triệt tiêu (VP -Vanishing point) tƣơng ứng trên 2 trục x và y là điểm: [ 1/p
0 0 1 ] và [ 0 1/q 0 1 ].

3) Phép chiếu phối cảnh ba tâm chiếu

[ Tpqr ] = [Tp ][Tq ][Tr ]

1 0 0 𝑝 1 0 0 0 1 0 0 0 1 0 0 𝑝
0 1 0 0 0 1 0 𝑞 0 1 0 0 0 1 0 𝑞
= =
0 0 1 0 0 0 1 0 0 0 1 𝑟 0 0 1 𝑟
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
1 0 0 𝑝 1 0 0 0 1 0 0 𝑝
0 1 0 𝑞 0 1 0 0 0 1 0 𝑞
[Tc]=[Tpqr].[Tz]= . =
0 0 1 𝑟 0 0 0 0 0 0 0 𝑟
0 0 0 1 0 0 0 1 0 0 0 1
1 0 0 𝑝
0 1 0 𝑞
[x y z 1]= =[x y z (px+qy+1) ]
0 0 1 0
0 0 0 1
𝑥 𝑦 𝑧
[x‘ y‘ z‘ 1]= 1
(𝑝𝑥 +𝑞𝑦 +𝑟𝑧 +1) (𝑝𝑥 +𝑞𝑦 +𝑟𝑧 +1) (𝑝𝑥 +𝑞𝑦 +𝑟𝑧 +1)

Hình 5.28 Phép chiếu phối cảnh ba tâm chiếu

Ba tâm chiếu:

trên trục x tại điểm [ -1/p 0 0 1 ],

trên trục y tại điểm [ 0 -1/q 0 1]

157
Đồ họa máy tính
trên trục z tại điểm [ 0 0 -1/r 1]

Điểm triệt tiêu -VP sẽtƣơng ứng với các giá trị:

[ 1/p 0 0 1 ], [ 0 1/q 0 1 ], [ 0 0 1/r 1]

5.5. Phép biến đổi mô hình và phép biến đổi hệ trục toạ độ

Cho đến thời điểm này, chúng ta đã khảo sát các phép biến đổi ba chiều nhƣ là
thao tác dịch chuyển một điểm (một đối tƣợng) từ vị trí này sang vị trí khác trong một
hệ trục tọa độ. Tuy nhiên, nhiều khi, ta cần xem xét các đối tƣợng trong các hệ tọa độ
khác nhau, muốn chuyển từ một hệ tọa độ này sang hệ tọa độ khác. Ví dụ, trong quy
trình hiển thị đối tƣợng ba chiều, ta cần đặt một đối tƣợng vào hệ tọa độ chung cho tất
cả các đối tƣợng trong cảnh (hệ tọa độ thế giới thực), sau đó, xác định tia nhìn, ta
chuyển đổi từ hệ tọa độ thế giới thực sang hệ tọa độ quan sát, và cuối cùng ta phải
chuyển từ hệ tọa độ quan sát sang hệ tọa độ thiết bị, nơi các đối tƣợng sẽ đƣợc hiển thị.

Khi mô hình hóa đối tƣợng, ta thƣờng mô tả chúng trong một hệ tọa độ cục bộ,
thuận tiện nhất cho việc mô hình hóa. Sau đó, bằng các phép biến đổi ta sẽ đặt chúng
vào cảnh cần hiển thị. Cách tiếp cận này cho phép ta không cần mô hình hóa quá nhiều
đối tƣợng mà chỉ mô hình hóa theo chủng loại đối tƣợng. Việc chuyển đổi các mô tả
đối tƣợng từ hệ tọa độ này sang hệ tọa độ khác thực hiện theo quy trình tƣơng tự nhƣ
trong đồ họa hai chiều. Ta cần xây dựng ma trận biến đổi để khớp đƣợc các trục tọa độ
của hai hệ. Trƣớc tiên, ta cần thực hiện phép tịnh tiến để hai gốc tọa độ trùng nhau.
Sau đó, ta phải thực hiện tiếp một dãy các phép quay để khớp các trục tọa độ tƣơng
ứng lên nhau. Nếu các hệ tọa độ sử dụng các tỉ lệ đo lƣờng khác nhau, ta phải thực
hiện thêm một phép biến đổi tỉ lệ nữa để đồng nhất các hệ tọa độ.

Hình 5.27Mô hình hóa và phép biến đổi hệ tọa độ


158
Đồ họa máy tính
Nếu hệ tọa độ thứ hai có gốc tọa độ đặt tại (x0, y0, z0) và các vector cơ sở đƣợc
mô tả nhƣ trong hình 6.15 (tƣơng ứng hệ tọa độ thứ nhất), trƣớc tiên ta cần thực hiện
phép tịnh tiến T( -x0,-y0,-z0). Sau đó ta xây dựng ma trận quay R dựa trên các vector cơ
sở. Ma trận này sẽ biến đổi các vector đơn vị u‘x, u‘y, u‘z tƣơng ứng thành các trục x,
y,z.

Ma trận của phép biến đổi hệ tọa độ chính là tích T.R. Ma trận này biến đổi hệ tọa độ
Descartes này thành hệ tọa độ Descartes khác, cho dù chúng là hệ tọa độ theo quy ƣớc
bàn tay phải hay bàn tay trái.

Hình 5.28 Chuyển đổi hệ tọa độ

159
Đồ họa máy tính
CÂU HỎI VÀ BÀI TẬP CHƢƠNG 5
Chọn một phƣơng án đúng cho các câu hỏi sau
1. Trong 3D toạ độ vector của điểm P(-1,3,6) vậy trong các toạ độ sau toạ độ nào
không phải là toạ độ đồng nhất của P:

[a]--(-2, 6, 12)

[b]--(-2, 6,12,2)

[c]--(- 0.5, 1.5, 3, 0.5)

[d]--(-a, 3a, 6a, a) trong đó a ≠ 0

2. Trong 3D có điểm Q(-4 , 1.6 , -7), đối xứng qua trục ox đƣợc Q‘ là:

[a]--(-4 , -1.6 , -7)

[b]--(4 , -1.6 , 7)

[c]--(4 , -1.6 , -7)

[d]--(-4 , -1.6 , 7)

3. Trong 3D có điểm M(5.34 , - 31.8 , - 0.3), đối xứng qua mặt xOy đƣợc Q‘ là:

[a]--(-5.34 , 31.8 , 0.3)

[b]--(5.34 , - 31.8 , 0.3)

[c]--(-5.34, - 31.8, - 0.3)

[d]--(5.34 , 31.8 , -0.3)

4. Trong 3D có điểm Q(-4 , 1.6 , -7), đối xứng qua trục oz đƣợc Q‘ là:

[a]--(4 , -1.6 , 7)

[b]--(4 , -1.6 , -7)

[c]--(-4 , 1.6 , 7)

[d]--(-4 , 1.6 , -7)

5. Trong 3D có điểm A(2 , -3 , 1.4) sau khi biến đổi nó cho cao lên 2 lần (theo oy),
mỏng đi 1/2 (theo oz) và mặt tiền tăng 3 lần thì thu đƣợc Q‘ là:

[a]--(6 , -9 , 0.7)

[b]--(4 , -1.5 , 4.2)

[c]--(1 , -6 , 4.2)
160
Đồ họa máy tính
[d]--(6 , -6 , 0.7)

6. Trong 3D có điểm A(2.7, -3 , 2.5), quay A xung quanh trục oz một góc 90o. Toạ độ
mới A‘ sẽ là:

[a]--(2.7, -2.5 , -3 )

[b]--(3 , 2.7 , 2.5)

[c]--(2.5 , 3, 2.7 )

[d]--(-3 , 2.7 ,2.5)

7. Trong 3D có điểm B(-11.5 , -2 , 4.2), quay B xung quanh trục ox một góc -90o. Toạ
độ mới B‘ sẽ là:

[a]--(4.2 , -11.5, 2)

[b]--(-2 , 4.2 , -11.5)

[c]--(-11.5 , 4.2 , 2)

[d]--(11.5 , 4.2 , -2)

8. Trong 3D có điểm H(2, -12, -4), quay H xung quanh trục oz một góc 60o. Toạ độ
mới H‘ là:

[a]--(2; -6 - 2√3; - 6√3 + 2 )

[b]--(2; -6 +2√3; - 6√3 -2 )

[c]--(1+ 6√3; √3 -6 ; 4)

[d]--(1- 6√3; √3 -6 ; 2)

9. Trong 3D có điểm H(2,-4,6), quay điểm H quanh trục oy một góc 45o sau đó lấy đối
xứng qua mặt xOy. Điểm H‘ có toạ độ là:

[a]--(-4√2; -4; 4√2)

[b]--(-4√2; 4; 4√2)

[c]--(4√2; -4; -4√2)

[d]--(4√2; 4; -4√2)

10. Trong 3D có điểm V(2,-4,6), quay điểm V quanh trục ox một góc -45o sau đó lấy
đối xứng qua mặt xOy. Điểm V‘ có toạ độ là:

[a]--(2; 3√2; 5√2)

161
Đồ họa máy tính
[b]--(2; - 5√2; -√2)

[c]--(2; -3√2; - 5√2)

[d]--(2; 5√2; -√2)

11. Trong 3D có điểm L(2,-4,6), quay điểm L quanh trục oz một góc 30o sau đó phóng
to gấp đôi. Điểm L‘ có toạ độ là:

[a]--(√3 - 2 ;-4√3; 12)

[b]--(2√3 - 2 ; -1-4√3; 12)

[c]--(√3 - 2 ; 2 -√3; 6)

[d]--(2√3 + 2 ; 1+ 4√3; 12)

12. Cho hình kim cƣơng ABCD có các toạ độ là A(5,6,1), B(0,0,0), C(3,2,5) và
D(8,2,4). Quay hình kim cƣơng quanh trục oy một góc 900. Toạ độ mới của hình kim
cƣơng là:

[a]--A‘(1,6,-5), B‘(1,2,2), C‘(5,2,-3) và D‘(2,-4,8)

[b]--A‘(1,6,-5), B‘(0,0,0), C‘(2,5,-3) và D‘(2,4,-8)

[c]--A‘(-1,5,-1), B‘(0,0,0), C‘(2,3,5) và D‘(2,4,8)

[d]--A‘(1,6,-5), B‘(0,0,0), C‘(5,2,-3) và D‘(4,2,-8)

13. ―Phép ……không phải là phép chiếu‖. Chọn một phƣơng án điền vào chỗ trống.

[a]--Chiếu trục lƣợng

[b]--Chiếu Isometric

[c]--Chiếu Cabinet

[d]--Chiếu ánh xạ

14. Trong các phép sau thì phép nào không phải thuộc phép chiếu trực giao :

[a]--Chiếu đứng

[b]--Chiếu mặt cắt

[c]--Chiếu bằng

[d]--Chiếu cạnh

15. Hai góc đƣợc dùng phổ biến trong phép chiếu xiên là các góc có :

[a]--tg φ =1 và tg φ =2
162
Đồ họa máy tính
[b]--Sinφ =1 và Cosφ =-1

[c]--Cos φ =1 và tg φ = 1

[d]--Sinφ =1 và Sinφ = -1

16. Khi góc chiếu đƣợc chọn để tg φ = 2, kết quả quang cảnh đƣợc gọi là phép chiếu :

[a]--Phép chiếu cùng kích thƣớc

[b]--Phép chiếu trực giao trục lƣợng học

[c]--Cabinet

[d]—Cavalier

17. ―Phép chiếu trimetric là phép chiếu song song có các tia chiếu vuông góc với màn
chiếu, hình chiếu thu đƣợc sau khi quay đối tƣợng sao cho 3 mặt của đối tƣợng đƣợc
trông thấy (thƣờng mặt phẳng chiếu là z=0) và hệ số co .... ―. Phƣơng án nào điền vào
chỗ trống là đúng?

[a]--fx = fy = fz = 1/2

[b]--fx ≠ fy ≠ fz

[c]--fx = fy ≠ fz

[d]--fx = fy

18. ―Phép chiếu Isometric là phép chiếu song song có các tia chiếu vuông góc với màn
chiếu, hình chiếu thu đƣợc sau khi quay đối tƣợng sao cho 3 mặt của đối tƣợng đƣợc
trông thấy (thƣờng mặt phẳng chiếu là z=0) và hệ số co .... ―. Phƣơng án nào điền vào
chỗ trống là đúng?

[a]--fx = fy = fz = 1/2

[b]--fx ≠ fy ≠ fz

[c]--fx = fy

[d]--fx = fy = fz = (2/3)

19. Phép chiếu Cabinet là phép chiếu có tỷ lệ co là:

[a]--f=0.8165

[b]--f=1.2

[c]--f=1/2

[d]--f=1
163
Đồ họa máy tính
20. Hình sau là phép chiếu:

[a]--Dimetric

[b]--Trimetric

[c]--Othergraphic (trực giao)

[d]—Isometric

21. Hình sau là phép chiếu:

[a]--Othergraphic (trực giao)

[b]--Isometric

[c]--Trimetric

[d]--Dimetric

22. Hình sau là phép chiếu:

[a]--Cavalier

[b]--Phối cảnh một tâm chiếu

[c]--Cabinet

[d]--Phối cảnh hai tâm chiếu

164
Đồ họa máy tính
23. Hình sau là phép chiếu:

[a]--Phối cảnh một tâm chiếu

[b]--Cavalier

[c]--Phối cảnh hai tâm chiếu

[d]—Cabinet

24. Hình sau là phép chiếu:

[a]--Phối cảnh một tâm chiếu

[b]--Cavalier

[c]--Cabinet

[d]--Phối cảnh hai tâm chiếu

25. Hình sau là phép chiếu:

[a]--Phối cảnh

[b]--Xiên

[c]--Trực giao
165
Đồ họa máy tính
[d]--Trục lƣợng

26. Hình sau là phép chiếu:

[a]--Xiên

[b]--Phối cảnh

[c]--Trực giao

[d]--Trục lƣợng

27. Các phép sau phép nào không phải phép chiếu phối cảnh:

[a]--Một tâm chiếu

[b]--Ba tâm chiếu

[c]--Hai tâm chiếu

[d]--Bốn tâm chiếu

28. Trƣờng hợp φ = 45o và quang cảnh đạt đƣợc gọi là :

[a]--Phép chiếu isometric projection

[b]--Phép chiếu cabinet

[c]--Phép chiếu cavalier

[d]--Phép chiếu axonometric orthographic projection

29. Trong phép chiếu cavalier, tất cả các đƣờng vuông góc với mặt phẳng chiếu đƣợc
chiếu với chiều dài:

[a]--Ngắn hơn 1/2 chiều dài ban đầu

[b]--Dài hơn 1/2 chiều dài ban đầu

[c]--Tỉ lệ phụ thuộc vào chiều dài của vật đƣợc chiếu

[d]--Chiều dài không thay đổi.

30. Khi góc chiếu đƣợc chọn để tgφ = 2, kết quả quang cảnh đƣợc gọi là :

[a]--Phép chiếu isometric projection

166
Đồ họa máy tính
[b]--Phép chiếu cabinet

[c]--Phép chiếu cavalier

[d]--Phép chiếu axonometric orthographic projection

Bài tập
1. Trong không gian Oxyz cho 2 điểm A(2, 3, 5); B(2, 0, 5) xác định công thức
biến đổi của 1 điểm sau khi quay quanh AB một góc 90o sau đó quay quanh trục Ox
một góc -90o

2. Xây dựng công thức biến đổi đối tƣợng khi thực hiện phép tỉ lệ với hệ số tỉ lệ
(Sx, Sy, Sz) giữ nguyên điểm chốt (x0, y0, z0)
3. Xây dựng công thức biến đổi đối tƣợng sau khi thực hiện phép đối xứng qua
điểm có tọa độ (x0, y0, z0)
4. Xây dựng công thức biến đổi đối tƣợng sau khi thực hiện phép đối xứng qua
trục song song với trục Ox, cách trục Oy, Oz một khoảng ty, tz
5. Xây dựng công thức biến đổi đối tƣợng sau khi thực hiện phép đối xứng qua
mặt phẳng song song với mặt phẳng xOy, cách mặt phẳng xOy một khoảng tz
6. Xây dựng công thức biến đổi đối tƣợng khi quay đối tƣợng một góc α quanh
trục Oy rồi quay một góc β quanh trục Oz
7. Xây dựng công thức biến đổi đối tƣợng sau khi tịnh tiến đối tƣợng theo
vector tịnh tiến (tx, ty, tz) rồi quay quanh trục Ox một góc α sau đó quay quanh trục
Oy một góc β.
8. Cho đoạn thẳng AB với điểm A(0, 0 , 0), B(0, 10, 5). Hãy xác định tọa độ
mới của đoạn thẳng AB sau khi thực hiện quay một góc 300 quanh trục Oy và phép
quay một góc 450 quanh trục Oz.

9. Xây dựng công thức biến đổi đối tƣợng trong không gian sau khi quay đối
tƣợng một góc α quanh trục song song với trục Ox, cách trục Oy, Oz một khoảng ty,
tz.

10. Cho đoạn thẳng AB với điểm A(0, 0 , 0), B(10, 0, 1). Hãy xác định tọa độ
mới của đoạn thẳng AB sau khi quay đoạn thẳng một góc 300 quanh trục song song
với trục Ox, cách trục Oy, Oz một khoảng ty = 5, tz = 10.

11. Cho hình hộp chữ nhật ABCDEFGH với các tọa độ A(0,0,1), B(5,0,1),
C(5,3,1), D(0,3,1), E(0,0,0), F(5,0,0), G(5,3,0), H(0,3,0)

167
Đồ họa máy tính
a. Tìm ma trận tỉ lệ để chuyển hình hộp đã cho thành hình hộp đơn vị

b. Xây dựng phép chuyển đổi hình hộp qua phép quay 1 góc -900 quanh trục z
rồi quay 450 quanh trục y

12. Cho hình hộp chữ nhật ABCDEFGH với các tọa độ A(0,0,1), B(5,0,1),
C(5,3,1), D(0,3,1), E(0,0,0), F(5,0,0), G(5,3,0), H(0,3,0). Tìm ma trận biến đổi khi
quay hình hộp một góc 450 quanh trục đi qua trọng tâm hình hộp và song song với trục
Oy.

13.

a. Xây dựng công thức biến đổi của đối tƣợng trong không gian sau khi thực
hiện phép tỉ lệ với hệ số (Sx, Sy, Sy) sao cho điểm chốt (x0, y0, z0) không đổi.

b. Cho hình hộp chữ nhật ABCDEFGH với các tọa độ A(0,0,1), B(5,0,1),
C(5,3,1), D(0,3,1), E(0,0,0), F(5,0,0), G(5,3,0), H(0,3,0). Xác định tọa độ mới của hình
hộp sau khi thu nhỏ bằng 1/2 kích thƣớc ban đầu sao cho tọa độ trọng tâm hình hộp
không đổi.

14.

a. Trong không gian 3 chiều Oxyz cho điểm Q(x,y,z). Xây dựng công thức biến
đổi của điểm sau khi dịch chuyển điểm đó một khoảng tz theo trục Oz rồi quay 1 góc ỏ
quanh trục Oz rồi quay một góc õ quanh trục Oy

b. Áp dụng với điểm Q(10,10,0), α = -450, β= 900

Hƣớng dẫn giải bài tập

1.

Nhận xét rằng đoạn AB song song với trục Oy trong hệ tọa độ Oxyz, cách Ox
một khoảng là dx = 5, cách Oz một khoảng là dz = 2.

 Đƣa phép biến đổi về dạng: quay đối tƣợng quanh trục song song với
trục tọa độ Ox một góc 900, sau đó quay quanh trục Ox một góc -900
Bƣớc 1: Tịnh tiến đối tƣợng để AB trùng với trục Ox với vector tịnh tiến (-5, 0,
-2).

168
Đồ họa máy tính

Bƣớc 2: Quay quanh AB một góc 90o.

Bƣớc 3: Tịnh tiến ngƣợc về vị trí ban đầu

Bƣớc 4: Quay đối tƣợng quanh trục Ox một góc -90o.

→ Ma trận biến đổi tổng hợp [ T ] = [ T1 ]* [ T2 ]* [ T3 ]* [ T4 ].

Công thức biến đổi: X‘ = X * M

169
Đồ họa máy tính
 x'  z  3
Công thức biến đổi  y '  x  7
z'   z

2.
- Bƣớc 1: Tịnh tiến điểm (x0, y0,z0) về gốc tọa độ có ma trận là:
1 0 0 0
0 1 0 0
T1 =
0 0 1 0
−𝑥0 −𝑦0 −𝑧0 1
- Bƣớc 2: Phép biến đổi tỉ lệ (Sx, Sy, Sz) có ma trận là
𝑆𝑥 0 0 0
0 𝑆𝑦 0 0
T2 =
0 0 𝑆𝑧 0
0 0 0 1
- Bƣớc 3: Tịnh tiến ngƣợc về vị trí ban đầu có ma trận là
1 0 0 0
0 1 0 0
T3 =
0 0 1 0
𝑥0 𝑦0 𝑧0 1
- Bƣớc 4: Ma trận của phép tỉ lệ với hệ số tỉ lệ (Sx, Sy, Sz) giữ nguyên
điểm chốt (x0, y0, z0)

T=T1*T2*T3
1 0 0 0 𝑆𝑥 0 0 0 1 0 0 0
0 1 0 0 0 𝑆𝑦 0 0 0 1 0 0
= ∗ ∗
0 0 1 0 0 0 𝑆𝑧 0 0 0 1 0
−𝑥0 −𝑦0 −𝑧0 1 0 0 0 1 𝑥0 𝑦0 𝑧0 1

𝑆𝑥 0 0 0
0 𝑆𝑦 0 0
= 0 0 𝑆𝑧 0
1 − 𝑆𝑥 ∗ 𝑥0 1 − 𝑆𝑦 ∗ 𝑦0 1 − 𝑆𝑧 ∗ 𝑧0 1

3.
- Bƣớc 1: Tịnh tiến điểm (x0, y0,z0) về gốc tọa độ
Ma trận biến đổi là:
1 0 0 0
0 1 0 0
T1 =
0 0 1 0
−𝑥0 −𝑦0 −𝑧0 1

170
Đồ họa máy tính
- Bƣớc 2: Phép biến đổi đối xứng qua điểm qua gốc tọa độ
Ma trận biến đổi là:
−1 0 0 0
0 −1 0 0
T2 =
0 0 −1 0
0 0 0 1
- Bƣớc 3: Tịnh tiến ngƣợc về vị trí ban đầu:
Ma trận biến đổi là:
1 0 0 0
0 1 0 0
T3 =
0 0 1 0
𝑥0 𝑦0 𝑧0 1
- Bƣớc 4: Ma trận của phép đối xứng qua điểm (x0, y0, z0) là
T=T1*T2*T3
1 0 0 0 −1 0 0 0 1 0 0 0
0 1 0 0 0 −1 0 0 0 1 0 0
= ∗ ∗
0 0 1 0 0 0 −1 0 0 0 1 0
−𝑥0 −𝑦0 −𝑧0 1 0 0 0 1 𝑥0 𝑦0 𝑧0 1

−1 0 0 0
0 −1 0 0
=
0 0 −1 0
2 ∗ 𝑥0 2 ∗ 𝑦0 2 ∗ 𝑧0 1
4.
- Bƣớc 1: Tịnh tiến đối xứng về gốc tọa độ có ma trận là:
1 0 0 0
0 1 0 0
T1 = 0 0 1 0
0 −𝑡𝑦 −𝑡𝑧 1
- Bƣớc 2: Đối xứng qua trục Ox có ma trận là
1 0 0 0
0 −1 0 0
T2 =
0 0 −1 0
0 0 0 1
- Bƣớc 3: Tịnh tiến ngƣợc về vị trí ban đầu có ma trận là
1 0 0 0
0 1 0 0
T3 = 0 0 1 0
0 𝑡𝑦 𝑡𝑧 1
- Bƣớc 4: Ma trận của phép quay quanh trục song song với trục Ox cách
trục Oy, Oz 1 khoảng ty,tz là

171
Đồ họa máy tính
T=T1*T2*T3
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 −1 0 0 0 1 0 0
=0 0 1 0 ∗ ∗ 0 0 1 0
0 0 −1 0
0 −𝑡𝑦 −𝑡𝑧 1 0 0 0 1 0 𝑡𝑦 𝑡𝑧 1

1 0 0 0
0 −1 0 0
=0 0 −1 0
0 2 ∗ 𝑡𝑦 2 ∗ 𝑡𝑧 1

5.
- Bƣớc 1: Tịnh tiến đối xứng về gốc tọa độ có ma trận là:
1 0 0 0
0 1 0 0
T1 =
0 0 1 0
0 0 −𝑡𝑧 1
- Bƣớc 2: Đối xứng qua mặt phẳng (xOy) có ma trận là
1 0 0 0
0 1 0 0
T2 =
0 0 −1 0
0 0 0 1
- Bƣớc 3: Tịnh tiến ngƣợc về vị trí ban đầu có ma trận là
1 0 0 0
0 1 0 0
T3 =
0 0 1 0
0 0 𝑡𝑧 1
- Bƣớc 4: Ma trận của phép đối xứng qua mặt phẳng song song với mặt
phẳng xOy (yOz, zOx), cách mặt phẳng xOy (...) một khoảng tz(...)
T=T1*T2*T3
1 0 0 0 1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0 0 1 0 0
= ∗ ∗
0 0 1 0 0 0 −1 0 0 0 1 0
0 0 −𝑡𝑧 1 0 0 0 1 0 0 𝑡𝑧 1

1 0 0 0
0 1 0 0
=
0 0 −1 0
0 0 2 ∗ 𝑡𝑧 1

6.
- Bƣớc 1: Quay quanh trục Oy có ma trận là

172
Đồ họa máy tính
cos 𝛼 0 − sin 𝛼 0
0 1 0 0
T1 =
sin 𝛼 0 cos 𝛼 0
0 0 0 1
cos 𝛽 sin 𝛽 0 0
− sin 𝛽 cos 𝛽 0 0
- Bƣớc 2: Quay quanh trục Oz có ma trận là T2=
0 0 1 0
0 0 0 1
- Bƣớc 3: Ma trận của phép kết hợp phép quay một góc α quanh trục Oy
và phép quay một góc β quanh trục Oz là:
T=T1*T2
cos 𝛼 0 − sin 𝛼 0 cos 𝛽 sin 𝛽 0 0
0 1 0 0 − sin 𝛽 cos 𝛽 0 0
= ∗
sin 𝛼 0 cos 𝛼 0 0 0 1 0
0 0 0 1 0 0 0 1

cos 𝛼 ∗ cos 𝛽 cos 𝛼 ∗ sin 𝛽 − sin 𝛼 0


− sin 𝛽 cos 𝛽 0 0
=
sin 𝛼 ∗ cos 𝛽 sin 𝛼 ∗ sin 𝛽 cos 𝛼 0
0 0 0 1

7.
- Bƣớc 1: Tịnh tiến (tx, ty, tz) về gốc tọa độ có ma trận là:
1 0 0 0
0 1 0 0
T1 = 0 0 1 0
𝑡𝑥 𝑡𝑦 𝑡𝑧 1
1 0 0 0
0 cos 𝛼 sin 𝛼 0
- Bƣớc 2: Quay quanh trục Ox có ma trận là T2=
0 − sin 𝛼 cos 𝛼 0
0 0 0 1
cos 𝛽 0 − sin 𝛽 0
0 1 0 0
- Bƣớc 3: Quay quanh trục Oy có ma trận là T3=
sin 𝛽 0 cos 𝛽 0
0 0 0 1
- Bƣớc 4: Ma trận của kết hợp phép tịnh tiến (tx, ty, tz) với phép quay quanh trục
Ox một góc α và quay quanh trục Oy một góc β là:
T=T1*T2*T3
1 0 0 0 1 0 0 0 cos 𝛽 0 − sin 𝛽 0
0 1 0 0 0 cos 𝛼 sin 𝛼 0 0 1 0 0
= 0 0 1 0 ∗ 0 − sin 𝛼 cos 𝛼 0

sin 𝛽 0 cos 𝛽 0
𝑡𝑥 𝑡𝑦 𝑡𝑧 1 0 0 0 1 0 0 0 1
=
173
Đồ họa máy tính
cos 𝛽 0 − sin 𝛽 0
sin 𝛼 ∗ sin 𝛽 cos 𝛼 sin 𝛼 ∗ cos 𝛽 0
cos 𝛼 ∗ sin 𝛽 − sin 𝛼 cos 𝛼 ∗ sin 𝛽 0
𝑡𝑥 ∗ cos 𝛽 + (𝑡𝑦 ∗ sin 𝛼 + 𝑡𝑧 ∗ cos 𝛼) ∗ sin 𝛽 𝑡𝑦 ∗ cos 𝛼 − 𝑡𝑧 ∗ sin 𝛼 𝑡𝑥 ∗ sin 𝛽 + (𝑡𝑦 ∗ sin 𝛼 + 𝑡𝑧 ∗ cos 𝛼) ∗ cos 𝛽 1

174
Đồ họa máy tính

Chƣơng 6

MÀU SẮC TRONG ĐỒ HỌA


6.1. Ánh sáng đơn sắc
Ánh sáng đơn sắc là ánh sángmà chúng ta có thể quan sát từ hình ảnh trên tivi
hay màn hình đen trắng và khi đó mắt của chúng ta không cảm nhận đƣợc các sắc màu
khác nhƣ vàng, đỏ,tím…khi quan sát trên màn hình.
Định lƣợng là thuộc tính duy nhất của các tia sáng đơn sắc và về mặt vật lý nó
đƣợc tính bằng năng lƣợng của tia sáng đƣợc mô tả cƣờng độ hay độ chiếu sáng
Dƣới góc độ cảm nhận về mặt tâm lý thì cƣờng độ của tia sáng chính là độ sáng
của vật (brighness)
Sử dụng phổ kế -photometer để đo độ sáng thấp nhất (min) và độ sáng cao nhất
(min) của màn hình .Và đó là khoảng động
Khoảng cƣờng độ ánh sáng nhận giá trị min là 𝐼0 , đến mã là 1.0 . Làm thế nào để
thể hiện đƣợc 256 mức xám khác nhau?
6.1.1. Cƣờng độ sáng và cách tính
Khi hình ảnh xám đƣợc hiển thị trên màn hình thì cƣờng độ của nguồn sáng sẽ
thay đổi theo một thang đo với rất nhiều mức khác nhau trong khoảng từ 0 đến 1 với 0
quy ƣớc cho màu đen,1 quy ƣớc cho màu trắng
Giả sử muốn hiển thị trên 256 mức độ sáng khác nhau , làm thế nào để phân
chia khoảng giữa các mức của cƣờng độ sáng .
Chúng ta nhận thấy rằng khoảng thể hiện của cƣờng độ sáng không tuyến tính
với mức độ chia .
Điều đó có nghĩa khi ta chia khoảng từ 0->0.1 ra làm 128 phần thì giá trị tăng
cƣờng độ tại mỗi phần chia không bằng nhau và khác xa so với cùng số thang chia
trong khoảng từ 0.9->1.
Tuy nhiên sự thay đổi trong khoảng từ 0.1->0.11 lại tƣơng đƣơng với khoảng từ
0.5->0.55, điều đó cho ta thấy khoảng tăng của cƣờng độ sáng sẽ phân chia theo hàm
logarit
Để có 256 mức độ sáng liên tục với giá trị mức thấp nhất là I0 và giá trị mức tối
đa là 1thì các mức biến đổi tỷ lệ sẽ có giá trị r và chúng có thể rút ra bởi công thức
sau:
I0 = I0 ,I1=r I0,I2=r I1 , I3=r2I0 , …, I255=r255 I0=1
r=(1/I0)1/255 Ij= I0 * rj = I0(255-j)/255
Với số khoảng phân chia của cƣờng độ sáng tổng quát là n+1 ta có:
r=(1/I0)1/n Ij= I0(n – j )/n Với j € [ 0 , n ]

175
Đồ họa máy tính
Ví dụ:
Khi n=3 và 𝐼0 =1/8
r=(1/𝐼0 )1/𝑛 = (1/(1/8))1/3 =2
Các giá trị tƣơng ứng
𝐼0 =1/8; 𝐼1 =1/4 ; 𝐼2 =1/2 ; 𝐼3 =1;
Thông thƣờng giá trị I0 của màn hình CRT nằm trong khoảng từ 1/200 đến 1/40
vì độ phản xạ của màn hình phốt pho cho phép cƣờng độ sáng đạt đến giá trị cực tiểu
0.
Tỉ số giữa giá trị lớn nhất và bé nhất của cƣờng độ sáng đặc trƣng cho mỗi loại
màn hình đƣợc gọi là khoảng biến động
Việc phân chia cƣờng độ sáng theo cách trên với màn hình CRT là cực kì phức
tạp và quá trình ghi hình lên phim sẽ càng rắc rối vì tính phi tuyến tính giữa màn hình
và phim.Ta đã biết cƣờng độ trên màn CRT tỉ lệ với số lƣợng các hạt điện tử trong
chùm tia phát ra từ cathode. Giả sử số lƣợng hạt tại một thời điểm phát ra là N thì công
thức đo cƣờng độ ánh sáng có dạng:
I=k. 𝑁 𝛾 Với k, γ là các hằng số
Giá trị γ cho hầu hết các loại màn CRT nằm trong khoảng từ 2.2 tới 2.6, còn số
lƣợng các hạt điện tử N tỉ lệ với điện áp V trên mỗi điểm ảnh. Vậy công thức
I=k. 𝑁 𝛾 có thể đƣợc viết dƣới dạng
I=K. 𝑉 𝛾 hay V=(𝐼/𝐾)1/𝛾
Giả sử ta có cƣờng độ ánh sáng I thì bƣớc đầu tiên ta phải làm là: Ta tìm giá trị Ij gần
nhất qua phép làm tròn.Giá trị j tìm đƣợc là:
I= rj.I0 vậy rj = I/I0 => j=ROUND( log 𝑟 (I/𝐼0 ))
Thay j vào công thức ta có: I= rj.I0
Bƣớc tiếp theo của tiến trình là xây dựng mức điện áp Vj cho điểm ảnh mà cƣờng độ
ánh sáng có giá trị tƣơng ứng là Ij
Vj=ROUND(Ij /K)1/𝛾
Nếu màn hình raster không có bảng mở rộng (look up table) thì giá trị
Vj đƣợc đặt vào điểm hiển thị. Trong trƣờng hợp ngƣợc lại , giá trị của j sẽ đƣợc sử
dụng là chỉ số để tìm ra giá trị của V tƣơng ứng trong bảng.
6.1.2. Hiệu chỉnh Gama
 Giá trị gama là số mũ của hàm lũy thừa, giá trị đó đối với loại phim nhựa 35mm
thiết kế để xem trong phòng tối là 1.5
 Hệ số gama của phim lại không giống với hệ số gama đối với loại màn hình
CRT, loại thiết bị độ sáng phụ thuộc vào ống phóng tia điện tử.

176
Đồ họa máy tính
 Theo công thức V=(𝐼/𝐾)1/𝛾 độ sáng trên mặt màn hình CRT tỷ lệ với điện áp
theo hàm mũ với giá trị mũ lên đến 5/2. Giá trị 2.5 mà thực tế giao động trong khoảng
2.3 đến 2.6 chính là đại lƣợng gama của loại màn hình CRT .
 Hàm vẽ dƣới đây cho thấy quan hệ không tuyến tính giữa giá trị của điện áp
đầu vào với giá trị của cƣờng độ sáng trên màn CRT và đó là một trong các đặc điểm
cố hữu của màn hình loại này

Hình 6.1.CRT gamma


Sự phản hồi tuyến tính của CRT có thể đƣợc bù bởi phần cứng và phép bù này
đƣợc gọi là phép hiệu chỉnh gama(gama correction) .
Việc sử dụng Ijlàm chỉ số trong look-up table để tìm ra cƣờng độ sáng có các điểm
ảnh trên màn hình gọi là phép hiệu chỉnh gama với bảng LUT.
Khi này giá trị của Ij đƣợc sử dụng chứ không phải Vj để đƣa vào bộ đệm làm tƣơi hay
bảng look-up table.
Vậy một câu hỏi đặt ra là bao nhiêu khoảng sẽ là đủ cho việc thể hiện một ảnh đen
trắng liên tục?
Theo tính toán thì hệ số tỉ lệ r=1.01 là mức ngƣỡng phân biệt của mắt . nếu r<1.01 thì
mắt sẽ không phân biệt đƣợc sự khác lệch giữa hai cƣờng độ sáng lân cận nhau Ij và
Ij+1 . Và nhƣ vậy số khoảng đủ n đƣợc tính ngƣợc theo công thức
r=(1/I0 )1/𝑛 => 1.01=(1/I0 )1/𝑛
n=log1.01 (1/I0 )
Với 1/I0 là khoảng biến động của thiết bị phần cứng .
Khoảng biến động Số lƣợng khoảng
Thiết bị hiển thị
thông thƣờng biến động n
CRT 50-200 400-530

Máy in đồ họa 100 465

Phim chiếu đồ họa 100 700

Giấy phủ in đen trắng 100 465

177
Đồ họa máy tính

Giấy phủ in màu 50 400

In nhan đen trắng 10 234

Hình 6.2. Bảng so sánh khoảng biến động của các thiết bị truy xuất đồ họa
6.1.3. Xấp xỉ bán tông
Phƣơng pháp này dựa vào cấu tạo mắt của ngƣời cũng nhƣ nguyên lý thu nhận
ảnh của mắt khi nhìn những vùng nhỏ ở khoảng cách xa.
Lúc đó mắt không phân biệt đƣợc các vật một cách cụ thể mà chỉ ghi nhận
cƣờng độ trung bình của vùng ảnh đó. Phƣơng pháp này đƣợc gọi là xấp xỉ bán tông
Phƣơng pháp này cho phép đạt độ phân giải trong in ảnh báo vào khoảng từ 60-
>80 dpi, còn trong tạp chí và sách cao hơn khoảng từ 110->120dpi
Với phƣơng pháp xấp xỉ bán tông, mỗi một vùng đơn vị độ phân giải đƣợc hình
dung nhƣ một ô vuông trắng, điền bởi các đƣờng tròn đen trên theo mức độ phụ thuộc
vào cƣờng độ sáng trung bình của các điểm ảnh trong ảnh gốc. Nếu vùng ảnh càng
thẫm màu thì số lƣợng và kích thƣớc của đƣờng tròn đen càng lớn. Nhƣ vậy kích
thƣớc của đƣờng tròn đen sẽ tƣơng đƣơng với mức độ xám của vùng ảnh gốc tƣơng
ứng .
Các thiết bị in ấn và hiển thị cho phép điều khiển thay đổi đƣợc kích thƣớc của
điểm đen hay là bán kính của đƣờng tròn đen thì việc mô tả mức độ xám của ảnh hoàn
toàn có thể thông qua việc sắp xếp tƣơng quan của các đƣờng tròn với bán kính của
chúng.
Trƣờng hợp ngƣợc lại thì việc mô phỏng kích thƣớc của đƣờng tròn đen trong
đơn vị độ phân giải có thể thông qua một ma trận vuông các điểm ảnh. Tỉ lệ giữa các
điểm ảnh đen và trắng trong ma trận tƣơng tự nhƣ giữa đƣờng tròn đen và vùng trắng .
Trong trƣờng hợp này một số các kỹ thật sau thƣờng đƣợc ứng dụng cho việc
biến đổi ảnh trƣớc khi đem ra sử lý

1. Phân ngƣỡng
Phƣơng pháp phân ngƣỡng là lấy một giá trị bất kì hay trung bình của cả vùng
ảnh làm ngƣỡng và so với mức sáng của từng điểm ảnh trong ô.
Nếu giá trị của điểm lớn hơn giá trị của ngƣỡng thì nó đƣợc bật (on). Nếu
ngƣợc lại thì tắt (off)
Giải thuật Halftone (x1, x2, y1, y2, T[n, m])

178
Đồ họa máy tính
Giải thuật xấp xỉ bán tông giới hạn bởi x1, x2, y1, y2
Lx,Ly: Chiều dài các ô đơn vị theo x và y
T[i, j]: ngƣỡng trong ô đơn vị xác định bởi i, j
I(x,y): Cƣờng độ sáng của điểm(x, y)
Begin
For y = y1 to y2 do
For x = x1 to x2 do
i = x chia lấy phần nguyên là Lx;
j = y chia lấy phần nguyên Ly;
if T[i, j] < I(x,y) then diem(x, y) ->on
if T[i, j] >= I(x,y) then diem(x, y) ->off
End
Nhƣợc điểm: Phƣơng pháp này chỉ đơn thuần là so sánh làm tròn giá trị cƣờng
độ của các điểm ảnh dựa trên một ngƣỡng xác định => phƣơng pháp này làm mất đi
nhiều thông tin của ảnh nên gây ra một số các hiệu ứng phụ cho ảnh. Để giải quyết vấn
đề trên ngƣời ta sử dụng kỹ thuật tạo mẫu tô
2. Mẫu tô
Biểu diễn một điểm ảnh trên màn hình theo các mẫu tô. Đơn vị nhỏ nhất của
ảnh là lƣới 2×2 chúng ta có 5 mức độ thể hiện cƣờng độ sáng của vùng đơn vị .Ma trận
kích thƣớc n×n có 𝑛2 +1 độ phân giải khác nhau

Hình 6.3. Các độ phân giải với ma trận 2×2 mẫu


Việc xác định kích thƣớc của miền đơn vị phụ thuộc vào rất nhiều kích thƣớc
của thiết bị hiển thị, khoảng cách quan sát của ngƣời sử dụng cũng nhƣ ngƣỡng chất
lƣợng cần đạt đƣợc.
Việc đạt đƣợc các mức xám khác nhau dựa vào kích thƣớc ma trận dành cho
vùng điểm ảnh đơn vị .Tuy vậy chúng ta cần phải cân nhắc lựa chọn vị trí của các
điểm ảnh vì nó quyết định tới chất lƣợng của ảnh khi hiển thị

179
Đồ họa máy tính
1 2 3 4 5

6 7 8 9
Hình 6.4. Phân bố các điểm trong vùng theo thứ tự tăng dần

Việc thể hiện cƣờng độ vùng ảnh I bây giờ đơn thuần là bật tất cả các vị trí <
I.Ma trận định vị trí của các điểm đƣợc gọi là ma trận mẫu.Tuy nhiên một số vấn đề
nảy sinh khi chúng ta sử dụng mẫu n×n điểm cho việc tính xấp xỉ bán tông. Điều đó
buộc phải có một số giải pháp:
 Thứ nhất:Không dùng ma trận mẫu có dạng đƣờng thẳng ngang
 Thứ hai: Các mẫu phải đƣợc hình thành theo chuỗi các bƣớc liên tiếp nhau sao
cho mọi điểm ảnh có mật độ thể hiện ngƣỡng a đều phải có mặt để thể hiện mọi
ngƣỡng b với b > a.
 Thứ ba: Các mẫu phải đƣợc phát triển theo quy tắc từ tâm đi dần ra xung quanh.
Nhờ đó sẽ gây đƣợc cho ngƣời sử dụng hiệu ứng tăng kích thƣớc điểm
 Thứ tƣ: Với một số các thiết bị in nhƣ máy in laser hay các thiết bị ghi hình,
vấn đề về các điểm độc lập tuyệt đối là rất khó có khả năng đạt đƣợc. Khi mà đại đa
phần các điểm ảnh đƣợc bật cho một cƣờng độ sáng thì chúng sẽ gây ra các thay đổi
cho các điểm còn lại.
Kỹ thuật xấp xỉ bán tông không chỉ giới hạn cho màn hình đen trắng mà còn có
khả năng phát triển với màn hình đa cấp sáng.
Chẳng hạn lấy màn hiển thị với 2 bit trên pixel => chúng ta có 4 mức sáng.Với kỹ
thuật xấp xỉ bán tông ta có thể tăng số lƣợng mức độ sáng.
Nếu chúng ta sử dụng ma trận mẫu 2×2 chúng ta có 4 điểm ảnh và mỗi điểm
ảnh là ba mức độ sáng khác nhau.

180
Đồ họa máy tính
Nhƣ vậy tổng cộng các phép màn hình đƣợc thể hiện 3×4+1=13 các khả năng
đƣợc mô tả nhƣ sau:

Hình 6.5. Các mẫu dither cho các mức cường độ từ 0->12
Giải thuật Hafltone( x1, x2, y, I[n,m])
Giải thuật xấp xỉ bán sắc trên đoạn thẳng y giới hạn bởi x1, x2
Lx, Ly: Chiều dài của các ô đơn vị
Tx, Ty : Vị trí các ô đơn vị theo x, y
Itb: Cƣờng độ sáng trung bình và của điểm (x, y)
I( Tx, Ty): Cƣờng độ sáng của điểm ( Tx, Ty) trong ô đơn vị
Begin
Ty= MOD( y, Ly)+1;
For x= x1 to x2 do
Tx=MOD( x1, Lx)+1;
If Itb < I(Tx, Ty) then điểm (x, y) -> on
If Itb >= I(Tx, Ty) then điểm (x, y) -> off
End.
3. Ma trận Dither
Không giống nhƣ máy in laser , màn hình CRT có khả năng hiển thị các điểm
ảnh tƣơng đối độc lập . Và nhƣ vậy yêu cầu về nhóm điểm cho các mẫu tô có thể đƣợc
bỏ qua và các điểm phân tán hay các ma trận dither có thể đƣợc sử dụng.
Năm 1973 Bayer đã đƣa ra dạng ma tận dither mà nhờ đó có khả năng tăng độ
mịn của ảnh khi hiển thị ra
Với ma trận 2×2 ma trận Dither có kí hiệu D(2) có dạng:
0 2
D(2) =
3 1

Tính các ma trận D(2n) thông qua D(n)


(2) (2)
(𝑛)
4𝐷 (2/𝑛) + 𝐷00 𝑈 𝑛/2 4𝐷 (2/𝑛) + 𝐷01 𝑈 𝑛/2
𝐷 = (2) (2)
4𝐷 (2/𝑛) + 𝐷10 𝑈 𝑛/2 4𝐷 (2/𝑛) + 𝐷11 𝑈 𝑛/2 1
Un là ma trận n×n với tất cả các phần tử =1

181
Đồ họa máy tính
1 … 1
𝑈𝑛 = … … 1
1 ⋯ 1
VD: Áp dụng với n=4 , từ kết quả D(2) ta có:
0 2 1 1 0 2 1 1
4 +0 4 +2
D(4) = 3 1 1 1 3 1 1 1
0 2 1 1 0 2 1 1
4 +3 4 +1
3 1 1 1 3 1 1 1

0 8 2 10
D = (4)12 4 14 6
3 11 1 9
15 7 13 5
Để xác định điểm (x, y) bật hay tắt, ta cần xác định vị trí điểm tƣơng ứng với vị
trí trong ma trận Dither để so sánh cƣờng độ sáng trung bình S với giá trị đó trên ma
trận. Kết quả so sánh sẽ quyết định tới việc bật tắt
Với i, j đƣợc tính qua hai phép Modulo:
i= x modulo n
j=y modulo n
(𝑛)
if S >𝐷𝑖𝑗 then điểm (x, y) đƣợc kích sáng
else điểm (x,y) không sáng
Bƣớc sóng
E trội
2

E1

Hình 6.6.Bước sóng trội trong chùm sáng màu


6.2. Lý thuyết màu sắc trong đồ họa

6.2.1. Cảm nhận màu sắc


Giác quan của con ngƣời cảm nhận đƣợc các vật xung quanh thông qua các tia
sáng màu tốt hơn so với các vật chỉ có hai màu đen trắng.

182
Đồ họa máy tính
Việc nghiên cứu ánh sáng màu ngoài các yếu tố vật lý còn 3 yếu tố lƣợng tính
khác có liên quan đến cảm nhận sinh lý của mắt ngƣời dƣới tác động của chùm ánh
sáng màu đi đến từ vật là: Hue - sắc màu, Saturation - độ bão hòa, Lightness- độ sáng
 Hue: Sắc màu để chỉ ra sự khác biệt giữa các màu nhƣ xanh,đỏ ,vàng..
 Saturation: Chỉ ra mức độ thuần của một màu hay khoảng cách của màu
tới điểm có cƣờng độ cân bằng
 Lightness: Mô tả cƣờng độ sáng từ ánh sáng phản xạ nhận đƣợc từ đối tƣợng.
Thỉnh thoảng thuật ngữ thứ tƣ cũng đƣợc dùng thay vào vị trí của lightness là
Brightness
Trong đồ họa máy tính điều cần thiết là đƣa ra các mẫu đo để so sánh.
Một trong các hệ thống màu đƣợc sử dụng rộng rãi đầu tiên do A.H.Munsell
đƣa ra vào những năm 1976. Bao gồm tập các màu chuẩn đƣợc tổ chức trong không
gian ba chiều bao gồm ba yếu tố Hue, Lightness và Saturation
Sắc độ hay còn gọi là độ giảm màu đƣợc tạo ra bằng cách thêm màu đen vào
các màu nguyên chất để giảm đi độ sáng của màu, còn tông màu là kết quả của hai quá
trình trên khi thêm cả màu trắng lẫn đen vào các màu nguyên chất.
Rất nhiều các màu khác nhau đƣợc sinh ra cùng một sắc màu nhƣng khác nhau
về độ bão hòa cũng nhƣ độ sáng. Các sắc tố màu phải đƣợc trộn với nhau theo tỷ lệ sao
cho sinh ra đƣợc các màu thể đƣợc dùng nhƣ các chỉ số so sánh hình vẽ mô tả quan hệ
giữa ba yếu tố của màu theo mô hình của các họa sĩ.

Hình 6.7. Quan hệ ba yếu tố của gam màu họa sĩ


Phƣơng pháp phối màu Munsell hay của các họa sĩ phụ thuộc rất nhiều vào bản
thân ngƣời quan sát, mức sáng và kích thƣớc của màu, màu sắc xung quanh và ánh
sáng từ môi trƣờng xung quanh
Bƣớc sóng giới hạn là bƣớc sóng của màu chủ đạo khi ta nhìn vào tia sáng. Nó
là yếu tố phân biệt màu sắc nhƣ Hue. Độ thuần khiết tƣơng đƣơng với độ bão hòa của
màu và độ sáng là tổng cƣờng độ của ánh sáng

183
Đồ họa máy tính
Cảm nhận Đo
Hue Dominant Wave Length
Saturation Excitation purity
Lightness Luminance
Brightness Luminance

6.2.2. Yếu tố vật lý


Ánh sáng phụ thuộc vào mức năng lƣợng đƣợc truyền hay bƣớc sóng của ánh
sáng
Ánh sáng trắng, hay dải sóng mà mắt ngƣời có thể cảm nhận đƣợc sau khi phân
tích qua các lăng kính thành các phổ mầu đi từ tím, chàm, lam, lục, vàng, da cam, đỏ
với một dải các bƣớc sóng λ đi từ 400nm-700nm
Tổng năng lƣợng đặc trƣng cho từng loại bƣớc sóng đƣợc biểu diễn bằng hàm
phân bổ năng lƣợng P(λ)
Trong thực tế khi chúng ta để các vật đủ nhỏ có màu sắc khác nhau gần sát
nhau, khi đó mắt ngƣời không thể phân biệt đƣợc ranh giới giữa các màu mà sẽ cảm
nhận đƣợc màu mới, hỗn hợp của các màu thành phần. Đó là nguyên lý pha màu đƣợc
biết đến từ thời cổ đại với các sắc tố màu cơ bản là đỏ, lục, lam (red, green, blue).
Theo lý thuyết 3 màu này một màu bất kỳ đều có thể tạo ra đƣợc từ ba màu cơ
bản là đỏ, lục, lam

Hình 6.8. Hàm phân bổ năng lượng phổ P(λ)


 Lam: bƣớc sóng trong khoảng từ 440nm
 Lục: Bƣớc sóng trong khoảng từ 545nm
 Đỏ: Bƣớc sóng trong khoảng từ 580nm
Lý thuyết 3 màu thực sự quan trọng trong lĩnh vực đồ họa, nó cho phép chúng
ta định lƣợng đƣợc một màu bất kì từ ba màu cơ bản ban đầu làm nền tảng cho việc
tổng hợp màu sắc. Mắt con ngƣời chúng ta có khả năng phân biệt đƣợc đến trăm ngàn
màu khác nhau trong không gian màu

184
Đồ họa máy tính
Khi các màu đứng gần nhau, thì việc phân biệt giữa các màu sẽ ra sao?
Các màu phân biệt chỉ dựa trên sắc màu, cách biệt bƣớc sóng giữa các màu
khác nhau sẽ thay đổi từ 10nm. Tại điểm cao nhất của phổ đến bé hơn 2nm xung
quanh điểm 480nm (lam) và 580nm (vàng)
Ngoại trừ đỉnh của đồ thị, hầu hết các khoảng phân biệt theo sắc màu là 4nm.
Mắt ngƣời sẽ cảm nhận kém đi nếu sắc màu nằm trong khoảng không gian màu có độ
bão hòa thấp. Điều đó là dễ hiểu khi có độ bão hòa = 0, tất cả các sắc màu chuyển
thành trắng.
Còn khi sắc màu cố định và độ sáng lớn hơn đỉnh của phổ sóng có khả năng
nhìn thấy, mắt có khả năng phân biệt đƣợc 23 bƣớc. Còn chung quanh 575nm các
bƣớc bão hòa chỉ có thể phân ra làm 16 bƣớc phân biệt.

6.2.3. Biểu đồ màu CIE


Lý thuyết ba màu cơ bản về mặt trực quan rất hấp dẫn vì nó phản ánh đƣợc rằng
mọi màu đều có thể chỉ ra từ tổng hỗn hợp ba màu cơ bản. Giá trị âm có nghĩa là một
số màu không thể tạo đƣợc bằng cách phối hợp các màu cơ bản.
Tuy nhiên , nếu một trong các màu cơ bản đƣợc thêm vào mẫu màu thì một
màu bất kỳ có thể đƣợc sinh ra bằng cách trộn hai màu còn lạ với màu đó. Do đó giá
trị âm trong hình vẽ chỉ ra lƣợng màu đã đƣợc thêm vào mẫu màu trƣớc đó.
Phối màu và xác định màu cùng hỗn hợp 3 màu cơ bản là mục tiêu tiến tới để
xác định nên màu trong lý thuyết đồ họa. Tuy nhiên việc cần thiết sử dụng trọng số âm
khi xác định tổng hỗn hợp các màu cơ bản gây ra khó khăn cho việc phối màu.
Vào năm1931, CIE chỉ ra ba đại lƣợng cơ bản định danh là X, Y, Z để thay thế
cho ba giá trị của ba sắc tố màu cơ bản: đỏ , lục và lam trong tiến trình phối màu.
Tƣơng ứng ba đại lƣợng trên là ba hàm màu 𝑥𝜆 , 𝑦𝜆 , 𝑧𝜆
Với ba đại lƣợng cơ bản này, mọi màu đều đƣợc tạo thành bằng tổng các đại
lƣợng dƣơng . Đại lƣợng y đƣợc xác định sao cho hàm màu 𝑦𝜆 bằng dùng hiệu suất
phát sáng hay độ chói
Cho rằng 𝑥𝜆 , 𝑦𝜆 , 𝑧𝜆 không phải là hàm phân bố phổ của màu X, Y, Z cũng nhƣ
các đƣờng cong không phải là hàm phân bố của ba màu đỏ, lục, lam. Chúng chỉ đơn
thuần là những hàm bổ trợ cho việc tính toán, việc kết hợp giữa các đại lƣợng X, Y, Z
để cho ra mọi màu

185
Đồ họa máy tính
Hàm 3 màu CIE là tổ hợp tuyến tính của các hàm màu. Điều đó có nghĩa việc
xác định một màu thông qua 3 màu đỏ , lục, lam có thể đƣợc thay bằng các đại lƣợng
định nghĩa bởi CIE qua phép chuyển đổi tuyến tính.
Quan hệ của 3 đại lƣợng X, Y, Z với hàm phân bố này lƣợng phổ đƣợc mô tả
bằng công thức:
x= k 𝑃(𝜆) 𝑥𝜆 dλ

y= k 𝑃(𝜆) 𝑦𝜆 dλ

z= k 𝑃(𝜆) 𝑧𝜆 dλ

Với các đối tƣợng tự phát sáng nhƣ màn hình CRT, k có giá trị là 680
luxen/watt, với các đối tƣợng phản xạ k đƣợc lựa nhƣ là độ sáng trắng có giá trị đại
lƣợng y=100, nhƣ vậy các giá trị y khác sẽ thuộc khoảng [0,100]

100
k=
𝑃(𝜆)𝑦 𝜆 dλ

Với P(λ) là phân bổ năng lƣợng phổ với các nguồn sáng trắng chuẩn
Trong thực tế việc tích hợp đƣợc thực hiện bằng phép tính tổng và không một
phân bố năng lƣợng nào đƣợc mô tả dƣới dạng phân tích
Giả sử (X, Y, Z) là các đại lƣợng màu cơ sở của CIE cho việc phối nên màu C.
Vậy C=xX + yY + zZ.
Nhƣ vậy chúng ta xác định nên giá trị màu bằng việc tiêu chuẩn hóa dựa vào
giá trị tổng các đại lƣợng X+Y+Z đặc trƣng cho tổng toàn phần năng lƣợng ánh sáng.
Sắc tố tạo mầu tạo thành sẽ phụ thuộc vào bƣớc sóng trội và độ bão hòa mà không phụ
thuộc vào cƣờng độ năng lƣợng sáng.

𝑋 𝑌 𝑍
x= ; y= ; z=
(𝑋+𝑌+𝑍) (𝑋+𝑌+𝑍) (𝑋+𝑌+𝑍)

Chúng ta biết rằng: x+y+z=1


Điều đó có nghĩa X+Y+Z=1

186
Đồ họa máy tính
Trong trƣờng hợp đó nếu x, y cho trƣớc thì giá trị của z đƣợc xác định bởi công
thức z=1-x-y. Tuy nhiên công thức này không cho phép chúng ta tính đƣợc giá trị X,
Y, Z từ chỉ 2 giá trị x và y.
Để tính đƣợc chúng ta cần thêm một thông tin và thông thƣờng Y là độ phát
sáng. Nhƣ vậy với (x,y,Y) cho trƣớc thì các giá trị : X, Y, Z có thể tìm đƣợc từ các
phƣơng trình:
𝑥 1−𝑥−𝑦
x= Y , y=Y , z= Y
𝑦 𝑦

Nhận xét: Giá trị màu chỉ phụ thuộc vào bƣớc sóng trội và độ bão hòa của màu mà
không phụ thuộc vào tổng năng lƣợng phát sóng
Biểu đồ màu CIE rất hiệu quả trong lĩnh vực nghiên cứu về màu sắc, nó cho
phép đo bƣớc sóng trội và ngƣỡng thuần khiết của màu bằng cách phối màu đó với
hỗn hợp 3 màu CIE cơ bản
Giả sử A là điểm cho phép phối màu nào đó hợp thành. Khi hai màu kết hợp
với nhau thì một màu mới sinh ra sẽ thuộc điểm nằm trên đƣờng thẳng nối hai điểm
Nhƣ vậy màu A xem nhƣ hỗn hợp của ánh sáng trắng chuẩn và ánh sáng phổ
thuần nhất tại điểm B định ra bƣớc sóng trội hay còn gọi là bƣớc sóng định mức.
Tỉ lệ giữa hai đoạn AC và BC, tính bằng giá trị % là ngƣỡng thuần màu của A.
Nếu A gần C hơn thì ánh sáng trắng của A ảnh hƣởng lên C nhiều hơn và màu của C
mất đi độ thuần khiết nhiều hơn
Biểu đồ màu cho ra đƣợc sự tƣơng quan giữa màu sắc và độ cảm nhận và nội
dung hiển thị. VD: Màu nâu là hỗn hợp của màu đỏ và màu da cam- độ sáng rất thấp
so với các vùng kế cận sẽ không đƣợc hiển thị.
Lƣu ý: Biểu đồ màu không phải là tông màu đầy đủ, không gian màu(X, Y, Z) có thể
tồn tại rất nhiều các mặt phẳng màu khác nhau và mỗi một phép chiếu tạo nên một
biểu đồ màu thì thông tin về mức độ sáng khác nhau => màu sắc trên các biểu đồ màu
khác nhau rất khác nhau.
 Màu bù của một sắc tố màu là màu mà hỗn hợp của chúng sẽ tạo ra ánh sáng
trắng.
 Màu không phổ là màu không thể xác định đƣợc bƣớc sóng trội của màu. Trong
trƣờng hợp này bƣớc sóng trội đƣợc xem là phần bù của bƣớc sóng mà tại đó
đƣờng thẳng qua F và C cắt đƣờng biên tại móng ngựa của biểu đồ màu tại B

187
Đồ họa máy tính
Mức độ thuần tới hạn đƣợc xác định bởi tỉ số chiều dài CF và CG. Những màu
mà buộc phải sử dụng bƣớc sóng trội của màu bù để biểu diễn thƣờng có màu tía thẫm
và hay nằm ở phần dƣới của biểu đồ CIE
Một công cụ khác của biểu đồ CIE là xác định gam màu hay còn gọi là khoảng
màu khi kết hợp hai màu lại với nhau. Mọi cặp màu I, J bất kì khi phối màu sinh ra
hàng loạt các gam màu mới thuộc đƣờng thẳng IJ phụ thuộc và tỉ lệ I và J .Khi màu
thứ ba không đƣợc dùng thì các gam màu tạo thành sẽ nằm trong tam giác tạo bởi I, J
và K
Theo nhƣ hình dạng của biểu đồ màu không phải tất cả các màu đều tạo ra đƣợc
từ ba màu cơ bản Red, Blue, Green trong vùng nhìn thấy vì không một tam giác nào
mà ba đỉnh của nó thuộc vùng nhìn thấy của biểu đồ lại có thể bao phủ lên toàn bộ
vùng đó đƣợc.
Biểu đồ màu cũng đƣợc dùng để so sánh những gam màu có thể trên các màn
hình màu và các thiết bị in ấn khác nhau. Có một vấn đề nảy sinh với hệ thống màu
CIE . Giả sử khoảng cách từ màu
C1=( X1, Y1, Z1 ) đến màu C‘1= C1 + C
Và khoảng cách từ màu C2=( X2, Y2, Z2 ) đến màu C‘2= C2 + C
Với C = ( X,  Y, Z)
Trong cả 2 trƣờng hợp, khoảng cách từ C1 đến C‘1 và C2 đến C‘2 đều bằng
C.Tuy nhiên trong thực tế chúng đƣợc cảm nhận không bằng nhau vì sự thay đổi của
chúng qua phổ khác nhau. Vì vậy một không gian màu cảm nhận đều, mà trong 2 cặp
màu có khoảng cách bằng nhau đƣợc cảm nhận bằng nhau bởi ngƣời dùng là cần thiết.
Năm 1976 không gian màu CIE LUV đƣợc phát triển để đáp ứng lại nhu cầu
đó. Với (Xu , Yu, Zu ) là những tọa độ màu đƣợc xem là màu trắng thì không gian màu
đƣợc xác định bởi:
L*= 116( Y/Yn)13-16; Y/Yn>0.01
𝑢∗ = 13𝐿∗ (𝑢′ − 𝑢′𝑛 )
𝑣 ∗ = 13𝐿∗ (𝑣 ′ − 𝑣′𝑛 )
4𝑋 9𝑌 4𝑋 𝑛 9𝑌 𝑛
u'= ; 𝑣′ = ; 𝑢𝑛 = ; 𝑣𝑛 =
𝑋+15𝑌+3𝑍 𝑋+15𝑌+3𝑍 𝑋 𝑛 +15𝑌 𝑛 +3𝑍 𝑛 𝑋 𝑛 +15𝑌 𝑛 +3𝑍 𝑛

188
Đồ họa máy tính
6.3. Giới thiệu về các hệ màu trong màn hình đồ họa
Mô hình màu: Là một chỉ số kỹ thuật của một hệ tọa độ màu ba chiều và tập các
màu nhỏ thành phần có thể trông thấy đƣợc trong hệ thống tọa độ màu thuộc một gam
màu đặc trƣng
Mục đích của mô hình màu: Cho phép các chỉ số kỹ thuật quy ƣớc của một số
loại màu sắc thích hợp với các màu sắc của một số gam màu khác
Ba mô hình mầu định hƣớng phần cứng đƣợc sử dụng rộng rãi là:
+ RGB: Dùng với các màn hình CRT
+ YIQ: Trong hệ thống tivi màu băng tần rộng
+ CYM: Sử dụng cho một số thiết bị in màu

6.3.1. Mô hình màu RGB


Hệ màu RGB mô tả màu sắc bằng ba thành phần Red, Green, Blue trong một
mô hình gọi là "không gian màu". Không gian này đƣợc minh họa bằng một khối lập
phƣơng với các trục chính R, G, B.

Hình 6.9. Mô hình không gian màu RGB


Mỗi màu trong không gian RGB đều đƣợc biểu diễn nhƣ là một vector thông
qua ba vector cơ sở là Red, Green, Blue. Do đó, ứng với các tổ hợp khác nhau của ba
màu này sẽ cho ta một màu mới.
Trong hình lập phƣơng mỗi màu gốc (Red, Green, Blue) đƣợc đặt vào góc đối
diện với các màu bù nó. (Hai màu bù nhau là hai màu mà khi kết hợp tạo thành màu
trắng hay xám (grey). Nhƣ vậy Red đối diện với Cyan, Green đối diện với Magenta,
Blue đối diện với Yellow. Giá trị xám nằm trên đƣờng chéo nối các đỉnh (0,0,0) và
(1,1,1) của hình lập phƣơng. Thƣờng các trục R, G, B đƣợc chuẩn hóa. Khi kết hợp
hai màu lại với nhau thì màu sinh ra có vector bằng tổng các vector thành phần.
Gam màu đƣợc thể hiện trong hệ màu RGB đƣợc xác định bằng những đặc tính
của hiện tƣợng phát quang của các chất phốt pho trong màn hình CRT.
189
Đồ họa máy tính
Hai màn hình CRT với hai loại chất phốt pho khác nhau sẽ cho ra các gam màu
khác nhau. Sự biến đổi màu đƣợc định rõ trong gam màu của một CRT khác.
Chúng ta có thể thay đổi gam màu của một CRT này sang một CRT khác thông qua
các ma trận chuyển đổi M1và M2 từ không gian RGB của từng màn hình tới không
gian màu (X, X, Z).
Công thức biến đổi:
𝑋 𝑋𝑟 𝑋𝑔 𝑋𝑏 𝑅
𝑌 = 𝑌𝑟 𝑌𝑔 𝑌𝑏 . 𝐺
𝑍 𝑍𝑟 𝑍𝑔 𝑍𝑏 𝐵
Với 𝑋 𝑟 , 𝑋 𝑔 , 𝑋 𝑏 là các trọng số tƣơng ứng với các màu trong hệ RGB của màn hình.
Tƣơng tự Y, Z. Việc xác định M là hệ số chọn màu thông qua ma trận 3×3 của các
trọng số trên. Chúng ta viết lại công thức nhƣ sau:
𝑋 𝑅
𝑌 =M 𝐺
𝑍 𝐵
Với M1 và M2 là những ma trận hệ số, sự biến đổi qua lại giữa gam màu của
hai màn hình theo CIE đƣợc mô tả bằng M2-1* M1. Điều đó có nghĩa là việc biến đổi
đó thông qua RGB của màn hình một tới RGB của màn hình hai.
Nếu màu C1 là gam màu của một hình nhƣng không là gam màu của màn
hình hai, màu tƣơng ứng C2=M2* M1 sẽ bên ngoài khối lập phƣơng đơn vị .
Các sắc độ màu cho mỗi mẫu phốt pho RGB luôn có sẵn nhƣ là thông số kỹ thuật kỹ
thuật của công nghệ CRT. Nếu không các thiết bị so màu cũng có thể đƣợc sử dụng để
đo trực tiếp cá giá trị mẫu tọa độ màu, hay một thiết bị đo quang phổ cũng nhƣ có thể
đƣợc sử dụng để đo P(λ) và sau đó chúng có thể đƣợc biến đổi thành tọa độ màu bằng
các phƣơng trình (*)(**)(***)

100
k= (*)
𝑃(𝜆)𝑦 𝜆 dλ
𝑋 𝑌 𝑍
x= ; y= ; z= (**)
(𝑋+𝑌+𝑍) (𝑋+𝑌+𝑍) (𝑋+𝑌+𝑍)
𝑥 1−𝑥−𝑦
x= Y , y=Y , z= Y (***)
𝑦 𝑦

Biểu thị các tọa độ thông qua (Xr, Yr) cho màu đỏ (Xg, Yg) cho màu xanh và
(Xb,Yb) cho màu lam và xác định Cr nhƣ sau:
Cr = Xr+ Yr + Zr
Chúng ta có thể tính cho màu đỏ gốc theo:

190
Đồ họa máy tính
Xr= Xr /( Xr+ Yr + Zr) = Xr/Cr = xr* Cr
Yr= Yr /( Xr+ Yr + Zr) = Yr/Cr =yr* Cr
Zr= Zr /( Xr+ Yr + Zr) = Zr/Cr =𝑧 𝑟 * Cr
Với cách xác định tƣơng tự cho Cg và Cb phƣơng trình có thể đƣợc viết nhƣ sau:
𝑋 𝑥 𝑟 ∗ 𝐶𝑟 𝑥 𝑔𝐶𝑔 𝑥 𝑏𝐶𝑏 𝑅
𝑌 = 𝑦𝑟 ∗ 𝐶 𝑟 𝑦𝑔 𝐶𝑔 𝑦 𝑏𝐶𝑏 . 𝐺
𝑍 (1 − 𝑥 𝑟 − 𝑦 𝑟 )𝐶 𝑟 (1 − 𝑥 𝑔 − 𝑦 𝑔 )𝐶 𝑔 (1 − 𝑥 𝑏 − 𝑦 𝑏 )𝐶 𝑏 𝐵

Các ẩn số Cr, Cg, Cb có thể đƣợc tìm bằng hai cách


Cách thứ nhất: Những thể sáng Yr , Yg và Yb của màu đỏ, màu lam sáng nhất
có thể đƣợc đo với một quang kế chất lƣợng cao. Những thƣớc đo này thể sáng
này có thể đƣợc kết hợp với các đại lƣợng yr, yg, yb đã biết để tính giá trị
Cr=Yr /yr Cg=Yg /yg Cb= Yb / yb
Cách thứ hai:
𝑋𝑤 𝑥𝑟 𝑥𝑔 𝑥𝑏 𝑅
𝑌𝑤 = 𝑦𝑟 𝑦𝑔 𝑦𝑏 . 𝐺
𝑍𝑤 (1 − 𝑥 𝑟 − 𝑦 𝑟 ) (1 − 𝑥 𝑔 − 𝑦 𝑔 ) (1 − 𝑥 𝑏 − 𝑦 𝑏 ) 𝐵
𝑌𝑤 𝑌𝑤
𝑋 𝑤 =𝑥 𝑤 𝑍 𝑤 =𝑧 𝑤
𝑦𝑤 𝑦𝑤

Ƣu điểm:
Không gian RGB là chuẩn công nghiệp cho các thao tác đồ họa máy tính. Các
thao tác màu sắc có thể đƣợc tính toán trên các không gian màu khác nhƣng cuối
cùng cần phải chuyển về không gian RGB để có thể hiển thị trên màn hình (do thiết
kế của phần cứng dựa trên mô hình RGB).
Có thể chuyển đổi qua lại giữa không gian RGB với các không gian màu khác
nhƣ CIE, CMY, HSL, HSV ...
Các thao tác tính toán trên không gian RGB thƣờng đơn giản hơn.
Nhƣợc điểm:
Các giá trị R,G,B của một màu là khác nhau đối với các màn hình khác nhau :
Nghĩa là các giá trị R,G,B của một màu trên màn hình màu này sẽ không sinh ra đúng
màu đó trên một màn hình khác.
Sự mô tả các màu trong thế giới thực đối với không gian RGB còn nhiều hạn
chế bởi vì không gian RGB không hoàn toàn phù hợp với sự cảm nhận màu sắc của

191
Đồ họa máy tính
con ngƣời. Hai điểm phân biệt trong không gian RGB, với mắt ngƣời có thể hoặc
không thể là thể hiện của hai màu khác nhau

6.3.2.Mô hình màu CMY

Hình 6.10. Mô hình màu CMY


Là phần bù tƣơng ứng cho các màu đỏ, lục, lam và chúng đƣợc sử dụng nhƣ
những bộ lọc loại trừ các màu này từ ánh sáng trắng. Vì vậy CMY còn đƣợc gọi là các
phần bù loại trừ của màu gốc
Tập hợp màu thành phần biểu diễn trong hệ tọa độ Đề-các cho mô hình màu
CMY giống nhƣ mô hình màu RGB ngoại trừ màu trắng đƣợc thay thế màu đen ở tại
nguồn sáng
Các màu thƣờng đƣợc tạo thành bằng cách loại bỏ hoặc đƣợc bù từ ánh sáng
trắng hơn là đƣợc thêm vào những màu tối
Khi xem xét các thiết bị in màu trên giấy, chẳng hạn nhƣ in tĩnh điện hay in
phun. Khi bề mặt giấy đƣợc bao phủ bởi lớp mực màu xanh tím, sẽ không có tia màu
đỏ phản chiếu từ bề mặt đó. Màu xanh tím đã loại bỏ phần màu đỏ phản xạ khi có tia
sáng trắng, mà bản chất là tổng hợp của ba màu đỏ, lục và lam
Vì thế ta có thể coi màu cyan là màu trắng trừ đi màu đỏ và đó cũng là màu
lam cộng màu lục. Tƣơng tự nhƣ vậy ta có màu đỏ thẫm (magenta) hấp thụ màu lục, vì
thế nó tƣơng đƣơng với màu đỏ cộng màu lam. Và cuối cùng màu vàng hấp thụ màu
lam sẽ bằng màu đỏ cộng với lục
𝐶 1 𝑅
𝑀 = 1 − 𝐺
𝑌 1 𝐵
Khi bề mặt của thực thể đƣợc bao phủ bởi xanh tím và vàng, chúng sẽ hấp thụ
hết các phần màu đỏ và xanh lam của bề mặt.

192
Đồ họa máy tính
Khi đó chỉ tồn tại duy nhất màu lục bị phản xạ từ sự chiếu sáng của ánh sáng
trắng . Trong trƣờng hợp khi bề mặt đƣợc bao phủ bởi cả ba màu xanh tím, vàng và đỏ
thẫm, hiện tƣợng hấp thụ xảy ra cả trên ba màu đỏ , lục và lam, do đó là màu đen sẽ là
màu của bề mặt.
Những mối liên hệ này có thể đƣợc mô tả bởi phƣơng trình sau:
Vector đơn vị cột RGB miêu tả cho màu trắng và CMY miêu tả cho màu đen
Sự biến đổi từ RGB thành CMY là:
𝐶 1 𝑅
𝑀 = 1 − 𝐺
𝑌 1 𝐵
Một mô hình màu tƣơng tự , CMYK, sử dụng thêm màu đen( viết tắt là K) nhƣ
màu thứ tƣ, đƣợc sử dụng trong quá trình in bốn màu của việc in ấn trong một số thiết
bị in ấn
Với các chỉ số kỹ thuật CMY quy định, màu đen đƣợc sử dụng để thay thế cho
các vị trí có thành phần ngang bằng theo C, M, Y. Mối quan hệ đƣợc viết theo công
thức sau:
K= min(C, M, Y)
C=C-K;
M=M-K;
Y=Y-k;

6.3.3. Mô hình màu YIQ


YIQ là sự thay đổi của RGB thông qua khả năng truyền phát và tính tƣơng
thích
YIQ sử dụng hệ tọa độ đề các 3 chiều với tập các thành phần nhìn thấy đƣợc biểu
diễn nhƣ một khối đa diện lồi trong khối lập phƣơng RGB
Sự biến đổi RGB thành YIQ
𝑌 0.299 0.587 0.114 𝑅
𝐼 = 0.596 −0.275 −0.321 − 𝐺
𝑄 0.212 −0.523 0.311 𝐵

Những đại lƣợng hàng đầu tiên phản ánh mối liên hệ quan trọng của màu lục và
màu đỏ và mối liên hệ không quan trọng của màu sáng lam.

193
Đồ họa máy tính
Nghịch đảo của ma trận biến đổi RGB thành YIQ đƣợc sử dụng cho sự biến đổi
YIQ thành RGB
Phƣơng trình trên đƣợc viết với giả sử chỉ số màu RGB dựa trên cơ sở tiêu
chuẩn phốt pho RGB NTSC với các giá trị theo CIE là:
Red Green Blue
X 0.67 0.21 0.14
Y 0.33 0.71 0.08

Hai màu khác nhau đƣợc hiển thị cùng nhau trên màn hình màu sẽ khác nhau,
nhƣng khi đƣợc biến đổi thành YIQ và đƣợc hiển thị trên màn hình màu đen trắng,
chúng lại có thể giống nhau. Vấn đề này có thể đƣợc tránh bởi việc xác định rõ hai
màu với hai giá trị Y khác nhau trong không gian của mô hình màu YIQ
Mô hình YIQ khai thác hai thuộc tính hữu ích của hệ thống hiển thị
+ Thứ nhất: Hệ thống này thay đổi trong thể sáng nhạy hơn là sự thay đổi trong
màu sắc hoặc sự bão hòa
+ Thứ hai: Các đối tƣợng bao phủ phần nhỏ của vùng cảm giác màu hạn chế của
chúng ta, điều này đƣợc chỉ rõ tƣơng xứng với màu một chiều hơn là màu hai chiều. Giả
thiết này cho I, Q hoặc cả hai có thể có một dải tần thấp hơn Y

6.3.4. Mô hình màu HSV


Các mô hình mầu RGB, CMY, YIQ đƣợc định hƣớng cho phần cứng trái ngƣợc
với mô hình mầu HSV của Smith hay còn đƣợc gọi là màu HSB với B( brightnes) là
độ sáng đƣợc định hƣớng ngƣời sử dụng trên nền tảng về trực giác về tông màu, sắc độ
và sắc thái mỹ thuật
Sắc màu(hue) hoặc H : Đo bởi góc quanh trục đứng với màu đỏ là 00, màu lục
là 120𝑜 , màu lam là 240𝑜
Các màu bổ xung trong hình chóp HSV ở 1800 đối diện với màu khác.Giá trị
của S là tập các giá trị đi từ 0 trên đƣờng trục tâm đến 1 trên các mặt bên tại đỉnh của
hình chóp sáu cạnh . Sự bão hòa tƣơng đối cho gam màu tƣơng ứng với mô hình màu
này
Mô hình màu dạng hình chóp sáu cạnh này đƣờng cao V với đỉnh là điểm gốc
tọa độ(0, 0). Điểm ở đỉnh là màu đen và có giá trị tọa độ màu V=0, tại các điểm này
giá trị của H và S không liên quan gì tới nhau. Khi điểm có S=0 và V=1 là điểm màu
194
Đồ họa máy tính
trắng , những giá trị trung gian của V đối với S=0 là màu xám. Khi S=0 giá trị của H
phụ thuộc đƣợc gọi bởi các quy ƣớc không xác định, ngƣợc lại khi S khác 0 giá trị của
H sẽ là phụ thuộc

Hình 6.11. Mô hình màu HSV


Thay vì chọn các phần tử RGB để có màu mong muốn, ngƣời ta chọn các tham
số màu: Hue, Saturation và Value (HSV)
Mô hình HSV suy diễn từ mô hình RGB: hãy quan sát hình hộp RGB theo
đƣờng chéo từ White đến Black (gốc) , ta có hình lục giác, sử dụng làm đỉnh hình nón
HSV.
Hue: Bƣớc sóng gốc của ánh sáng. Trong mô hình Hue đƣợc biểu diễn bằng góc từ
00 đến 3600
Value: Cƣờng độ hay độ chói ánh sáng.Value có giá trị [0, 1], V=0 -> màu đen. Đỉnh
lục giác có cƣờng độ màu cực đại.
Saturation: Thƣớc đo độ tinh khiết ánh sáng gốc. S trong khoảng [0, 1]. Biểu diễn tỷ
lệ độ tinh khiết của màu sẽ chọn với độ tinh khiết cực đại.
Theo đó, đi theo vòng tròn từ 0-360 độ là trƣờng biểu diễn màu sắc (Hue).
Trƣờng này bắt đầu từ màu đỏ đầu tiên (red primary) tới màu xanh lục đầu tiên (green

195
Đồ họa máy tính
primary) nằm trong khoảng 0-120 độ, từ 120 - 240 độ là màu xanh lục tới xanh lơ
(green primary - blue primary). Từ 240 - 360 là từ màu đen tới lại màu đỏ.
Theo nhƣ cách biểu diễn không gian màu theo hình trụ thì đi từ giá trị độ sáng
(V) đƣợc biểu diễn bằng cách đi từ dƣới đáy hình trụ lên và nằm trong khoảng từ 0-1.
Ở đáy hình trụ V có giá trị là 0, là tối nhất và trên đỉnh hình trụ là độ sáng lớn nhất (V
= 1). Đi từ tâm hình trụ ra mặt trụ là giá trị bão hòa của màu sắc (S). S có giá trị từ 0 -
1. 0 ứng với tâm hình trụ là chỗ mà màu sắc là nhạt nhất. S = 1 ở ngoài mặt trụ, là nơi
mà giá trị màu sắc là đậm đặc nhất.
Nhƣ vậy với mỗi giá trị (H, S, V) sẽ cho ta một màu sắc mà ở đó mô tả đầy đủ thông
tin về màu sắc, độ đậm đặc và độ sáng của màu đó

6.3.5. Mô hình màu HLS


Xác định bởi tập hợp hình chóp sáu cạnh đôi của không gian hình trụ
Sắc màu là góc quanh trục đứng của hình chóp sáu cạnh đôi với màu đỏ tại góc
00, tuy nhiên chúng ta đặt màu đỏ tại 00
Các màu vẽ xác định theo thứ tự giống nhƣ trong biểu đồ CIE khi ranh giới của
nó bị xoay ngƣợc chiều kim đồng hồ: Màu đỏ, màu vàng, màu lục, màu lam và đỏ
thẫm. Điều này cũng giống nhƣ thứ tự sắp xếp trong mẫu hình chóp sáu cạnh đơn HSV
Mẫu HLS là một sự biến dạng của màu HSV mà trong đó mẫu này màu trắng
đƣợc kéo hƣớng lên hình chóp sáu cạnh phía trên từ mặt V=1. Nhƣ với hình chóp ở
sáu cạnh đơn, phần bổ xung của một màu sắc đƣợc đặt ở vị trí 180𝑜 hơn là xung quanh
hình chóp sáu cạnh đôi, sự bão hòa đƣợc đo xung quanh trục đứng, từ 0 trên trục tới 1
trên bề mặt. Độ sáng (lightness)=0 cho màu đen và bằng 1 cho màu trắng
Mẫu HLS cũng giống mô hình HSV là tính dễ sử dụng .Tất cả các màu xám đều
có S=0 và các màu bão hòa đạt trị số lớn nhất tại S=1, L=0.5 . Nếu thiết bị đo điện kế
đƣợc sử dụng để xác định tham số mô hình màu thực tế L phải là 0.5 để đạt tới màu
mạnh nhất, đó là một bất lợi của mẫu HSV trong trƣờng hợp S=1 và V=1 đạt đƣợc
giống nhau. Tuy nhiên tƣơng tự nhƣ mẫu HSV các màu của mảng L=0.5 tất cả chúng
đều giống nhau là không nhận màu sáng. Vì thế hai màu khác nhau nhận độ sáng nhƣ
nhau sẽ có giá trị của L khác nhau.

196
Đồ họa máy tính
1.0 L

White

Green Yellow

Cyan 0.5 Red

Blue White

H
S
0.0
Black

Hình 6.12. Mô hình màu HLS

6.3.6. Chuyển đổi giữa các hệ màu

1) Chuyển đổi từ mô hình RGB


Mô hình màu RGB bao gồm giá trị của màu đỏ, xanh lá cây và xanh dƣơng với
phạm vi giá trị từ [0 .. 255]
Để dễ dàng cho việc chuyển đổi ta chuyển phạm vi các giá trị màu này thành
[0..1]
a) RGB sang HSB
Nguyên tắc chuyển đổi
H nằm trong khoảng [0, 360]
S, V, R, G, B có giá trị trong đoạn [0, 1]

197
Đồ họa máy tính
V = MAX
Trong công thức trên :
• H: (Hue) Vùng màu có giá trị xác định trong khoảng từ 0 đến 360 độ
• S: (Saturation) Độ bão hòa màu nằm trong khoảng từ 0 đến 1
• B (hay V): (Bright hay Value) Độ sáng nằm trong khoảng từ 0 đến 1
• R (Red) : nằm trong khoảng từ 0 đến 1
• G (Green): nằm trong khoảng từ 0 đến 1
• B (Blue): nằm trong khoảng từ 0 đến 1
• MIN : là giá trị nhỏ nhất trong 3 đại lƣợng màu cơ bản là R,G,B giá trị nằm
trong khoảng từ 0 đến 1
• MAX: là giá trị lớn nhất trong 3 đại lƣợng màu cơ bản là R,G,B giá trị nằm
trong khoảng từ 0 đến 1
• Undefined: là không xác định
• Otherwise: trƣờng hợp khác
Ví dụ:
Cho hệ màu RGB với các tham số : R= 100, G=150, B=200.Chuyển đổi sang
hệ màu HSB
Bƣớc 1: Chuyển phạm vi giá trị của R, G, B từ [0..255] sang [0..1]
Ta có:
r = 100/255 = 0,39
g = 150/255 = 0,59
b = 200/255 = 0,78
Bƣớc 2:Tìm giá trị lớn nhất, nhỏ nhất trong 3 giá trị r, g, b
min = 0,39 = r
max =0,78 = b
Bƣớc 3 : Xác định các tham số của hệ màu HSB
3.1 ) Xác định giá trị của H:
Vì max = b nên áp dụng công thức ta có:
H = 60* (r-g)/(max - min) + 240 = 210
3.2 ) Xác định giá trị của S:
Vì max # 0 nên :
S = 1- min/max =0,39/0.78 = 0.5
3.3 ) Xác định giá trị của B:
Áp dụng công thức ta có : B = max = 0,78
Bƣớc 4: Chuyển các giá trị của S và B sang giá trị % ta có
S = 0,5 = 50%
B = 0,78 = 78%
Vậy sau quá trình chuyển đổi nhờ áp dụng các công thức trên ta thu đƣợc từ hệ màu
RGB với các tham số R = 100, G = 150, B = 200 sang
198
Đồ họa máy tính
HSB với các tham số H = 210 độ, S = 50%, B = 78%
b) RGB sang HSL
Nguyên tắc chuyển đổi
H có giá trị trong đoạn [0, 360]
S, L, R, G, B nằm trong đoạn [0, 1]

L = ( MAX + MIN )/2


Trong công thức trên :
• H: (Hue) Vùng màu có giá trị xác định trong khoảng từ 0 đến 360 độ
• S: (Saturation) Độ bão hòa màu nằm trong khoảng từ 0 đến 1

• L: Lightness (độ chói hoặc Độ sáng hoặc cƣờng độ) nằm trong khoảng
từ 0 đến 1

• R (Red) : nằm trong khoảng từ 0 đến 1


• G (Green): nằm trong khoảng từ 0 đến 1
• B (Blue): nằm trong khoảng từ 0 đến 1
• MIN : là giá trị nhỏ nhất trong 3 đại lƣợng màu cơ bản là R,G,B giá trị
nằm trong khoảng từ 0 đến 1
• MAX: là giá trị lớn nhất trong 3 đại lƣợng màu cơ bản là R,G,B giá trị
nằm trong khoảng từ 0 đến 1
• Undefined: là không xác định
Ví dụ:
Cho hệ màu RGB với các tham số : R= 100, G=150, B=200.Chuyển đổi sang
hệ màu HSB
Bƣớc 1: Chuyển phạm vi giá trị của R, G, B từ [0..255] sang [0..1]
Ta có:

199
Đồ họa máy tính
r = 100/255 = 0,39
g = 150/255 = 0,59
b = 200/255 = 0,78
Bƣớc 2:Tìm giá trị lớn nhất, nhỏ nhất trong 3 giá trị r, g, b
min = 0,39 = r
max =0,78 = b
Bƣớc 3 : Xác định các tham số của hệ màu HSL
3.1 ) Xác định giá trị của H:
Vì max = b nên áp dụng công thức ta có:
H = 60* (r-g)/(max - min) + 240 = 210
3.2 ) Xác định giá trị của L:
L = 1/2 * (max + min ) = 0.585
Vì L > 1/2 nên S = ( max – min ) / ( 2- 2*L) = 0.48
Bƣớc 4 : Chuyển các giá trị của H và L sang giá trị % ta có :
S = 0,48 = 48 %
L = 0,59 = 59 %
Vậy sau quá trình chuyển đổi nhờ áp dụng các công thức trên ta thu đƣợc từ
hệ màu RGB với các tham số R = 100, G = 150, B = 200 sang
HSL với các tham số H = 210 độ, S = 48%, L = 59%
c) RGB sang CMYK
Nguyên tắc chuyển đổi :
R, G, B nằm trong đoạn [0, 1]
t C'M'Y ' = {1 - R , 1 - G , 1 - B } là phần tử C,M,Y có giá trị trong đoạn [0,1]
K = min { C ', M', Y ' }
t CMYK = {0, 0, 0, 1} nếu K = 1
t CMYK = {( C '- K ) / (1 - K ), ( M '- K ) / (1 - K ), ( Y '- K ) / (1 - K ), K } K
khác
Trong đó:
• R (Red) : nằm trong khoảng từ 0 đến 1
• G (Green): nằm trong khoảng từ 0 đến 1
• B (Blue): nằm trong khoảng từ 0 đến 1
• C (Cyan): nằm trong khoảng từ 0 đến 1

• M (Magenta): nằm trong khoảng từ 0 đến 1

• Y (Yellow): nằm trong khoảng từ 0 đến 1

• K (Key-Black) : nằm trong khoảng từ 0 đến 1

Ví dụ:
Cho hệ màu RGB với các tham số : R= 100, G=150, B=200.Chuyển đổi sang hệ màu
CMYK

200
Đồ họa máy tính
Bƣớc 1: Chuyển phạm vi giá trị của R, G, B từ [0..255] sang [0..1]
Ta có:
r = 100/255 = 0,39
g = 150/255 = 0,59
b = 200/255 = 0,78
Bƣớc 2 : Xác định giá trị của C, M, Y :
C‘ = 1 - R = 0,61
M‘ = 1 - G = 0,41
Y‘ = 1 - B = 0,22
Bƣớc 3 : Xác định giá trị của K:
K = min (C‘,M‘,Y‘) = 0.22 <=> K # 1
C = ( C‘- K ) / (1 - K ) = 0,5
M = (M‘- K ) / (1 - K) = 0,25
Y = (Y‘ – K ) / (1 – K ) = 0
Bƣớc 4 : Chuyển các giá trị C, M, Y, K sang giá trị % ta có:
C = 0,5 =50 %
M = 0,25 = 25 %
Y=0=0%
K = 0,22 = 22 %
Vậy sau quá trình chuyển đổi từ hệ màu RGB với R = 100, G =150, B=200 ta thu đƣợc
hệ màu mới CMYK với các giá trị lần lƣợt là :
C = 50% , M = 25%, Y =0%, K = 22%
2 Chuyển đổi từ mô hình CMYK
a) CMYK sang RGB
t RGB = {(1 - C ) x (1 - K ), (1 - M ) x (1 - K ), (1 - Y ) × (1 - K )}

Trong đó:
• R (Red) : nằm trong khoảng từ 0 đến 1
• G (Green): nằm trong khoảng từ 0 đến 1
• B (Blue): nằm trong khoảng từ 0 đến 1
• C (Cyan): nằm trong khoảng từ 0 đến 1
• M (Magenta): nằm trong khoảng từ 0 đến 1
• Y (Yellow): nằm trong khoảng từ 0 đến 1
• K (Key-Black) : nằm trong khoảng từ 0 đến 1
Ví dụ : Cho hệ màu CMYK với các tham số lần lƣợt là :

C = 50% , M = 25%, Y =0%, K = 22%


Chuyển đổi hệ màu trên sang hệ màu RGB

Bƣớc 1 : Chuyển phạm vi các giá trị sang [0..1]


201
Đồ họa máy tính
Ta có:

C = 50% = 0.5

M = 25% = 0,25

Y = 0% = 0

K = 22% = 0,22

Bƣớc 2 : Xác định các giá trị màu R, G , B

Áp dụng công thức trên ta có:

R = ( 1 - C ) * (1- K) = 0,39

G = ( 1 - M ) * (1 - K) = 0,59

B = ( 1 - Y ) * (1 - K) = 0,78

Bƣớc 3 : Chuyển các giá trị màu từ hệ [0..1] sang hệ [0..255]

R = 0,39 * 255 = 100

G = 0,59 * 255 = 150

B = 0,78 * 255 = 200

Vậy sau quá trình chuyển đổi từ hệ màu CMYK với các tham số lần lƣợt là

C = 50% , M = 25%, Y =0%, K = 22%


Ta thu đƣợc hệ màu mới RGB tƣơng ứng với các tham số là:

R = 100, G= 150, B = 200

b) CMYK sang HSV


Bƣớc 1: Chuyển CMYK sang RGB
Bƣớc 2 : Chuyển RGB sang HSV
c) CMYK sang HSL
Bƣớc 1: Chuyển CMYK sang RGB

Bƣớc 2 : Chuyển RGB sang HSL

3) Chuyển đổi từ mô hình HSB


a) HSV sang RGB
H nằm trong đoạn [0, 360]
S, V, R, G, B nằm trong đoạn [0, 1]
Hi = [ H / 60] mod 6 // phép lấy phần dƣ theo modulo 6
202
Đồ họa máy tính
f = ( H / 60) - H i
p = V (1 - S )
q = V (1 - f S )
t = V (1 - (1 - f ) S )
nếu Hi = 0 thì R = V, G = t , B = p ;
nếu Hi = 1 thì R = q , G = V , B = p ;
nếu Hi = 2 thì R = p , G = V , B = t ;
nếu Hi = 3 thì R = p , G = q , B = V ;
nếu Hi = 4 thì R = t , G = p , B = V ;
nếu Hi = 5 thì R = q , G = V , B = p ;
Trong đó :
H: (Hue) Vùng màu có giá trị xác định trong khoảng từ 0 đến 360 độ

S: (Saturation) Độ bão hòa màu nằm trong khoảng từ 0 đến 1

V: (Value) Độ sáng nằm trong khoảng từ 0 đến 1


R (Red) : nằm trong khoảng từ 0 đến 1
G (Green): nằm trong khoảng từ 0 đến 1
B (Blue): nằm trong khoảng từ 0 đến 1
Ví dụ : Cho hệ màu HSV với các tham số lần lƣợt là H = 210 độ, S = 50%, V = 78%
Chuyển đổi hệ màu trên sang RGB
Bƣớc 1: Chuyển các giá trị S, V sang hệ [0,1]
S = 50% = 0,5
V = 78% = 0,78
Bƣớc 2 : Áp dụng công thức xác định Hi , f, p, q, t:
Xác định Hi để biết vị trí của màu trong vòng tròn màu đƣợc chia làm 6 phần:
Hi = (H /60) mod 6
Phép mod là phép chia lấy phần dƣ theo modulo 6
Ví dụ : 6 mod 6 đồng dƣ với 0 mod 6
1 mod 6 đồng dƣ với 7 mod 6
Áp dụng vào bài toán ta đƣợc : Hi = 210/60 = 3,5 = 3 theo modulo 6

f = ( H / 60) - H i = 3,5 – 3 = 0,5


p = V (1 - S ) = 0,78*( 1 – 0,5) = 0.39
q = V (1 - f S ) = 0,78 *( 1- 0,5*0,5) = 0,585
t = V (1 - (1 - f ) S ) = 0,78* (1 - ( 1 - 0,5 ) * 0,5) = 0,195
Bƣớc 3 : Xác định R, G, B theo vị trí của Hi trên vòng tròn màu
Ở đây Hi = 3 nên ta áp dụng công thức
Nếu Hi = 3 thì R = p, G= q, B = V
R = 0,39 G = 0,585 B = 0,78
Bƣớc 4 : Chuyển các giá trị màu từ hệ [0..1] sang hệ [0..255]

203
Đồ họa máy tính
R = 0,39 * 255 = 100

G = 0,59 * 255 = 150

B = 0,78 * 255 = 200

Vậy sau quá trình chuyển đổi từ hệ màu HSV với các tham số lần lƣợt là

H = 210 độ, S = 50%, V = 78%


Sang hệ màu RGB với các tham số tƣơng ứng là:

R = 100, G = 150 , B = 200

b) HSV sang CMYK


Bƣớc 1 : Chuyển HSV sang RGB
Bƣớc 2 : Chuyển RGB sang CMYK
c) HSV sang HSL
Bƣớc 1 : Chuyển HSV sang RGB
Bƣớc 2 : Chuyển RGB sang HSL
4) Chuyển đổi từ mô hình HSL
a) HSL sang RGB
H nằm trong đoạn [0, 360]
S, L, R, G, B nằm trong đoạn [0, 1]
nếu L <0.5 thì Q = L x (1 + S ) , nếu L => 0,5 thì Q = L + S - ( L × S )
P=2×L-Q
H k = H / 360
T r = Hk + 1/3
T g = Hk
T b = Hk - 1/3
Đối với mỗi c = R, G, B:
nếu Tc <? 0 Tc = Tc + 1.0
nếu Tc > 1? Tc = Tc - 1.0
nếu Tc <1/6? Tc = P + (( Q - P ) × 6,0 × Tc )
nếu 1/6< = Tc và Tc<1/2 thì Tc = Q

204
Đồ họa máy tính
nếu 1/2 <= Tc và Tc<2 / 3 thì Tc = P + (( Q - P ) x (2/3 – Tc ) × 6.0)
trƣờng hợp còn lại Tc = P
Trong đó:
H: (Hue) Vùng màu có giá trị xác định trong khoảng từ 0 đến 360 độ
S: (Saturation) Độ bão hòa màu nằm trong khoảng từ 0 đến 1
L:(Lightness) (độ chói hoặc Độ sáng hoặc cƣờng độ) nằm trong khoảng từ 0
đến 1
R (Red) : nằm trong khoảng từ 0 đến 1
G (Green): nằm trong khoảng từ 0 đến 1
B (Blue): nằm trong khoảng từ 0 đến 1
Ví dụ : Cho hệ màu HSL với các tham số lần lƣợt là :
H = 210 độ, S = 48%, L = 59%
Chuyển đổi sang hệ màu RGB
Bƣớc 1: Chuyển các giá trị S, L sang hệ [0,1]
S = 48% = 0,48
L = 59% = 0,59
Bƣớc 2 : Xác định Q, P, Hk , Tr, Tg , Tb
Vì L = 0,59 > 0,5 nên
Q = L + S - ( L × S ) = 0,78
P = 2 × L – Q = 0,4
Hk = 210/360 = 0,58
T r = Hk + 1/3 = 0.91
T g = Hk = 0.58
T b = Hk - 1/3 = 0.25
Bƣớc 3 : Gán Tc = giá trị Tr, Tg , Tb vừa tìm đƣợc, xét lần lƣợt T-c với công
thức trên ta thấy :
Với Tc = Tr :
Tc = P = 0,4
Với Tc = Tg :

205
Đồ họa máy tính
Tc = P + (( Q - P ) x (2/3 – Tc ) × 6.0) = 0,5976 ~ 0,6
Với Tc = Tb :
Tc = Q = 0,78
Bƣớc 4 : Chuyển các giá trị sang hệ [0..255]
R = 0,4 * 255 = 102
G = 0,6 * 255 = 153
B = 0,78 * 255 = 199
Vậy sau quá trình chuyển đổi từ hệ màu HSL với các tham số lần lƣợt là
H = 210 độ, S = 48%, V = 59%
Sang hệ màu RGB với các tham số tƣơng ứng là:
R = 100, G = 150 , B = 200
b) HSL sang CMYK
Bƣớc 1 : Chuyển HSL sang RGB
Bƣớc 2 : Chuyển RGB sang CMYK
c) HSL sang HSV
Bƣớc 1 : Chuyển HSL sang RGB
Bƣớc 2 : Chuyển RGB sang HSV
Cài đặt các giải thuật chuyển đổi giữa các hệ màu
1. Giải thuật chuyển đổi từ HSV sang RGB
Procedure hsv_to_rgb( real h, s, v )
Begin
h: Sắc độ màu [0-360] với màu đỏ tại điểm 0
s: Độ bão hòa [0-1]
v: Giá trị của cường độ sáng [0-1]
rgb là các cơ sở màu đỏ, lục, lam
real r, g, b;
integer i;
real f, p, q, t;

206
Đồ họa máy tính
// kiểm tra trường hợp ánh sáng không màu
if( s = 0 )
begin
r = g = b = v;
end;
h /= 60;
i = floor( h );
f = h - i;
p = v * ( 1 - s );
q = v * ( 1 - s * f );
t = v * ( 1 - s * ( 1 - f ) );
// Xác định giá trị của r, g, b
if (i= 0)
begin
r = v;
g = t;
b = p;
end;
if (i=1)
begin
r = q;
g = v;
b = p;
end;
if (i= 2)
begin
r = p;
g = v;
b = t;
207
Đồ họa máy tính
end;
if (i= 3)
begin
r = p;
g = q;
b = v;
end;
if (i= 4)
begin
r = t;
g = p;
b = v;
end;
if (i=5)
begin
// case 5:
r = v;
g = p;
b = q;
end;
End.

2. Giải thuật chuyển đổi từ RGB sang HSV


procedure rgb_to_hsv ()
Begin
h: Sắc độ màu [0-360] với màu đỏ tại điểm 0
s: Độ bão hòa [0-1]
v: Giá trị của cường độ sáng [0-1]
Max: Hàm lấy giá trị maximum
Min: Hàm lấy giá trị minimum
208
Đồ họa máy tính
//Xác định giá trị cường độ sáng
rc = r / 255.0;
gc =g / 255.0;
bc = b / 255.0;
max = MAX(rc, MAX(gc, bc));
min = MIN(rc, MIN(gc, bc));
delta = max - min;
//xác định giá trị cường độ sáng
V=max;
//Xác định độ bão hòa
if (max <> 0.0)
s = delta / max;
else
s = 0.0;
//xác định sắc độ màu
if (s = 0.0)
begin
h = 0.0;
end;
else
begin
// Màu nằm trong khoảng giữa vàng và đỏ tía(magenta)
if (rc = max)
h = (gc - bc) / delta;
else
//Màu nằm trong khoảng giữa xanh tím (cyan)
Vàng(yellow)
if (gc = max)
h = 2 + (bc - rc) / delta;

209
Đồ họa máy tính
else
//Màu nằm trong khoảng giữa đỏ tươi (magenta) và xanh
ngọc(cyan)
if (bc = max)
begin
h = 4 + (rc - gc) / delta;
h=60*h;
end;
// Các loại giá trị âm
if (h < 0)h += 360.0;
end;
End.
3. Giải thuật chuyển đổi từ HLS sang RGB
procedure HSL2RGB(real h, sl, l)
Begin
real v;
real r, g, b;
h = h/360;
r = l; // default to gray
g = l;
b = l;
v = (l <= 0.5) ? (l * (1.0 + sl)) : (l + sl - l *
sl);
if (v > 0)
begin
real m;
real sv;
integer sextant;
real fract, vsf, mid1, mid2;

210
Đồ họa máy tính
m = l + l - v;
sv = (v - m) / v;
h *= 6.0;
sextant = (int)h;
fract = h - sextant;
vsf = v * sv * fract;
mid1 = m + vsf;
mid2 = v - vsf;
switch (sextant)
begin
case 0:
r = v;
g = mid1;
b = m;
break;
case 1:
r = mid2;
g = v;
b = m;
break;
case 2:
r = m;
g = v;
b = mid1;
break;
case 3:
r = m;
g = mid2;
b = v;
211
Đồ họa máy tính
break;
case 4:
r = mid1;
g = m;
b = v;
break;
case 5:
r = v;
g = m;
b = mid2;
break;
end;
end;
r = r*255;
g = g*255;
b = b*255 ;
write("HSL to RGB\nR = ",r) ;
write(" G = ",g);
write(" B = ",b);
End.
4. Giải thuật chuyển đổi từ RGB sang HLS
procedure RGB2HSL(real R, G, B)
Begin
real r = R / 255.0;
real g = G / 255.0;
real b = B / 255.0;
real v,m,vm;
real r2, g2, b2;
real h,s,l;
212
Đồ họa máy tính
h = 0;
s = 0;
l = 0;
v = MAX(r,g);
v = MAX(v, b);
m = MIN(r, g);
m = MIN(m, b);
l = (m + v) / 2.0;
if (l <= 0.0)return;
vm = v - m;
s = vm;
if (s > 0.0)
s /= (l <= 0.5) ? (v + m) : (2.0 - v - m);
else return;
r2 = (v - r) / vm;
g2 = (v - g) / vm;
b2 = (v - b) / vm;
if (r = v)
begin
h = (g = m ? 5.0 + b2 : 1.0 - g2);
end;
else if (g = v)
begin
h = (b = m ? 1.0 + r2 : 3.0 - b2);
end;
else
begin
h = (r = m ? 3.0 + g2 : 5.0 - r2);
end;
213
Đồ họa máy tính
h /= 6.0;
write("RGB to HSL\nH= ",h *360);
write(" S = ",s);
write(" L = ",l);
End.

214
Đồ họa máy tính

CÂU HỎI VÀ BÀI TẬP CHƢƠNG 6


Chọn một phƣơng án đúng cho mỗi câu hỏi sau:
1. Về yếu tố cảm nhận sinh lý, chức năng của Hue - sắc màu là:
[a]--Chỉ ra mức độ thuần của một màu hay khoảng cách của màu tới điểm có
cƣờng độ cân bằng.
[b]--Phân biệt sự khác nhau giữa các màu nhƣ xanh, đỏ, vàng…..
[c]--Hiện thân về mô tả cƣờng độ sáng từ ánh sáng phản xạ nhận đƣợc từ đối
tƣợng.
[d]--Cƣờng độ ánh sáng tự đối tƣợng phát ra chứ không phải do phản xạ từ các
nguồn sáng khác.
2. Về yếu tố cảm nhận sinh lý, chức năng của Saturation - độ bão hoà là:
[a]--Chỉ ra mức độ thuần của một màu hay khoảng cách của màu tới điểm có
cƣờng độ cân bằng.
[b]--Phân biệt sự khác nhau giữa các màu nhƣ xanh, đỏ, vàng…..
[c]--Hiện thân về mô tả cƣờng độ sáng từ ánh sáng phản xạ nhận đƣợc từ đối
tƣợng.
[d]--Cƣờng độ ánh sáng tự đối tƣợng phát ra chứ không phải do phản xạ từ các
nguồn sáng khác.
3. Về yếu tố cảm nhận sinh lý, chức năng của Lightness - độ sáng là:
[a]--Chỉ ra mức độ thuần của một màu hay khoảng cách của màu tới điểm có
cƣờng độ cân bằng.
[b]--Phân biệt sự khác nhau giữa các màu nhƣ xanh, đỏ, vàng…..
[c]--Hiện thân về mô tả cƣờng độ sáng từ ánh sáng phản xạ nhận đƣợc từ đối
tƣợng.
[d]--Cƣờng độ ánh sáng tự đối tƣợng phát ra chứ không phải do phản xạ từ các
nguồn sáng khác.
4. Về yếu tố cảm nhận sinh lý, chức năng của Brightness - độ phát sáng là:
[a]--Chỉ ra mức độ thuần của một màu hay khoảng cách của màu tới điểm có
cƣờng độ cân bằng.
[b]--Phân biệt sự khác nhau giữa các màu nhƣ xanh, đỏ, vàng…..
[c]--Hiện thân về mô tả cƣờng độ sáng từ ánh sáng phản xạ nhận đƣợc từ đối
tƣợng.
[d]--Cƣờng độ ánh sáng tự đối tƣợng phát ra chứ không phải do phản xạ từ các
nguồn sáng khác.
5. Ánh sáng đơn sắc là:
[a]--Không cảm nhận đƣợc sắc màu vàng khi quan sát trên màn hình đen trắng

215
Đồ họa máy tính
[b]--Không cảm nhận đƣợc sắc màu đỏ, cam khi quan sát trên màn hình đen
trắng
[c]--Không cảm nhận đƣợc sắc màu tím khi quan sát trên màn hình đen trắng
[d]--Không cảm nhận đƣợc các sắc màu khác nhƣ vàng, đỏ, tím… khi quan sát
trên màn hình đen trắng
6. Nguyên lý pha màu với các sắc màu cơ bản là:
[a]--Trắng, đen, vàng
[b]--Đỏ, lục, lam
[c]--Vàng, đỏ, xanh
[d]--Đỏ, cam, hồng
7. Ánh sáng là sóng điện từ có bƣớc sóng λ đi từ:
[a]--100nm – 200nm
[b]--200nm – 500nm
[c]--400nm – 700nm
[d]--100nm - 10000nm
8. Ánh sáng có thể đƣợc mô tả bằng ba thuật ngữ:
[a]--Độ sáng (Lightness) - Sắc độ (Hue) - Độ bão hoà (Saturation)
[b]--Độ sáng (Lightness) - Tông màu (tone) - Độ bão hoà (Saturation)
[c]--Độ sáng (Lightness) - Sắc độ (Hue) - Tông màu (tone)
[d]--Tông màu (tone) - Sắc độ (Hue) - Độ bão hoà (Saturation)
9. Để đo độ sáng thấp nhất (min) và cao nhất (max) của màn hình, ta dùng:
[a]--Vôn kế
[b]--Áp kế
[c]--Nhiệt kế
[d]--Phổ kế
10. Cƣờng độ của nguồn sáng sẽ thay đổi trong khoảng từ:
[a]--0 đến 1
[b]--0 đến 10
[c]--1 đến 10
[d]--1 đến 100
11. Giá trị gama là số mũ của hàm luỹ thừa, giá trị đó đối với loại phim nhựa 35mm
trong phòng tối là:
[a]--0
[b]--1
[c]--1,5
[d]—2

216
Đồ họa máy tính
12. Hệ số gama của CRT là loại thiết bị độ sáng phụ thuộc vào ống phóng tia điện tử.
Thực tế giá trị gama của CRT dao động từ:
[a]--1,1 đến 2,3
[b]--2,1 đến 2,6
[c]--2,3 đến 2,6
[d]--2,2 đến 2,9
13. Mô hình màu RGB là gam màu thể hiện:
[a]--Đỏ - Lục - Lam
[b]--Đỏ - Vàng - Cam
[c]--Trắng - Đen - Tím
[d]--Hồng - Trắng – Đen
14. Mô hình không gian màu RGB đƣợc sắp xếp theo khối:
[a]--Hình cầu đơn vị
[b]--Lập phƣơng đơn vị
[c]--Thể tính đơn vị
[d]--Tất cả đều sai
15. Đƣờng chéo chính của khối lập phƣơng với sự cân bằng về số lƣợng từng màu gốc
tƣơng ứng với:
[a]--Các mức độ đen là (0,0,0) và trắng (1,1,1).
[b]--Các mức độ đỏ là (0,0,0) và vàng (1,1,1).
[c]--Các mức độ trắng là (0,0,0) và đen (1,1,1).
[d]--Các mức độ xám với đen là (0,0,0) và trắng (1,1,1).
16. Trong mô hình không gian màu RGB, nếu hai màu tạo ra cùng một giá trị kích
thích thì chúng ta:
[a]--Có thể phân đƣợc 3 màu chính xác là đỏ, lục, lam
[b]--Chỉ có thể phân biệt đƣợc 2 màu là đỏ và lam
[c]--Chỉ phân biệt đƣợc một màu duy nhất là đỏ
[d]--Không thể phân biệt đƣợc hai màu
17. Mô hình màu CMY là gam màu thể hiện:
[a]--Đỏ tƣơi - Lục - Lam
[b]--Xanh tím - Đỏ tƣơi - Vàng
[c]--Hồng nhạt - Đỏ Sậm - Vàng nhạt
[d]--Đỏ Sậm - Vàng nhạt – Tím
18. Mô hình màu CMY là:
[a]--Đây là mô hình màu bù (Subtractive color models) hiển thị ánh sáng và
màu sắc phản xạ từ mực in
[b]--Hệ thống có quy tắc cho việc tạo khoảng màu từ tập các màu cơ bản

217
Đồ họa máy tính
[c]--Mô hình kết quả của ánh sáng truyền dẫn - transmitted
[d]--Mô hình màu bù sử dụng mực in - printing inks
19. Trong mô hình màu CMY, khi 3 màu có cùng giá trị cho ra:
[a]--Màu Trắng
[b]--Màu Đen
[c]--Màu Xám
[d]--Màu Nâu
20. Trong mô hình màu CMY, các giá trị đạt max cho ra:
[a]--Màu Trắng
[b]--Màu Đen
[c]--Màu Xám
[d]--Màu Nâu
21. Trong mô hình màu CMY, Red +Cyan ; Green +Magenta ; Blue + Yellow sẽ cho
kết quả là:
[a]--Màu Trắng
[b]--Màu Đen
[c]--Màu Xám
[d]--Màu Nâu
22. Mô hình màu YIQ là:
[a]--Đây là mô hình màu bù (Subtractive color models) hiển thị ánh sáng và
màu sắc phản xạ từ mực in
[b]--Mô hình màu bù sử dụng mực in - printing inks
[c]--Mô hình màu đƣợc ứng dụng trong truyền hình màu băng tần rộng tại Mỹ
[d]--Mô hình kết quả của ánh sáng truyền dẫn – transmitted
23. Trong mô hình màu CMY-K(mô hình ứng dụng trong máy in) thì màu trắng là:
[a]--(0,0,0)
[b]--(0,0,1)
[c]--(1,0,0)
[d]--(1,1,1)
24. Con ngƣời nhạy cảm với màu:
[a]--Đỏ
[b]--Lục
[c]--Vàng
[d]—Lam
25. Phƣơng pháp dựa trên cấu tạo của mắt ngƣời cũng nhƣ nguyên lý thu ảnh của mắt
khi nhìn những vùng nhỏ ở khoảng cách xa. Khi đó mắt không thể phân biệt đƣợc các

218
Đồ họa máy tính
vật một cách cụ thể mà chỉ ghi nhận cƣờng độ trung bình của vùng ảnh đó. Phƣơng
pháp này gọi là:
[a]--Phân ngƣỡng (Thread hold)
[b]--Dither
[c]--Xấp xỉ bán tông (Halftone)
[d]--Mẫu tô
27. Trong các mô hình màu sau thì mô hình nào Không định hƣớng phần cứng:
[a]--HSV (Hue, Saturation, Value)
[b]--RGB (Red, Green, Blue)
[c]--CMY (Cyan, Mangenta, Yellow)
[d]—YIQ
28. Ta có ba hộp màu nƣớc đỏ (Red), lục (Green) và lam (Blue) đem trộn các màu bão
hoà và cân bằng thì thu đƣợc màu:
[a]--Đen
[b]--Trắng
[c]--Đỏ
[d]--Chƣa xác định
29. Hệ HSV có H (sắc màu) chạy từ :
[a]--0o đến 360o
[b]--0o đến 180o
[c]--0o đến 90o
[d]--90o đến 360o
30. Hệ HSV có S (độ bão hoà) và V (giá tị cƣờng độ ánh sáng) thuộc khoảng :
[a]--[0 0,1]
[b]--[0 1]
[c]--[1 2]
[d]--[0 2]
31. Hệ HSV có H (sắc màu) màu đỏ ở :
[a]--0o
[b]--45o
[c]--90o
[d]--180o
32. Trong mô hình màu YIQ , các phosphor NTSC RGB chuẩn có các toạ độ sắc phổ
là :
[a]--R(0 0.1), G (0.2 0.7) và B(0.1 0.8)
[b]--R(0.57 0.23), G (0.16 0.81) và B(0.4 0.18)
[c]--R(0.67 0.33), G (0.21 0.71) và B(0.14 0.08)

219
Đồ họa máy tính
[d]--R(0.78 0.93), G (0.1 0.7) và B(0.4 0.6)
Bài tập
1. Xác định giá trị các thành phần màu trong hệ màu RGB của một màu biết rằng
trong hệ màu HSV, màu đó có giá trị H = 120, S= 0.5, V = 0.2.
2. Xác định giá trị các thành phần màu trong hệ màu HSV của một màu biết rằng
trong hệ màu RGB, màu đó có giá trị R = 255, G= 0, B = 255.
3. Xác định giá trị các thành phần màu trong hệ màu RGB của một màu biết rằng
trong hệ màu HSL, màu đó có giá trị H = 300, S= 1, L = 0.5.
4. Xác định giá trị các thành phần màu trong hệ màu HSL của một màu biết rằng
trong hệ màu RGB, màu đó có giá trị R = 0, G= 128, B = 0.
5. Xác định giá trị các thành phần màu trong hệ màu RGB của một màu biết rằng
trong hệ màu HSV, màu đó có giá trị H = 200, S= 1, V = 0.2.
6. Xác định giá trị các thành phần màu trong hệ màu HSV của một màu biết rằng
trong hệ màu RGB, màu đó có giá trị R = 243, G= 243, B = 243.
7. Xác định giá trị các thành phần màu trong hệ màu RGB của một màu biết rằng
trong hệ màu HSL, màu đó có giá trị H = 0, S= 1, L = 0.4.
8. Xác định giá trị các thành phần màu trong hệ màu HSL của một màu biết rằng
trong hệ màu RGB, màu đó có giá trị R = 153, G= 102, B = 0.

Hƣớng dẫn giải bài tập

1. H = H/60 = 2, I = (INT)H = 2, F = H – I = 2-2 = 0


M = V*(1-S) = 0.2 *(1-0.5) = 0.2 * 0.5 = 0.1
N = V*(1- S*F) = 0.2*(1 – 0.5*0) = 0.2
K = V*(1-S*(1-F))=0.2*(1-0.5*(1-0))=0.1
Do I = 2 do đó ta có R ≈ 26, G=51, B ≈ 26
2. H = 300, S = 1, V = 1
3. R = 255, G = 0, B = 255
4. H = 120, S = 1, L ≈ 0.25
5. R ≈ 0, G ≈ 34, B ≈ 51
6. H = 0, S = 0, V ≈ 0.95
7. R = 204, G = 0, B = 0
8. H = 40, S = 1, L ≈ 0.3

220
Đồ họa máy tính
TÀI LIỆU THAM KHẢO
[1]. Nguyễn Quốc Cƣờng, Hoàng Đức Hải. Đồ hoạ vi tính. NXB giáo dục. 1998.
[2]. Lê Tấn Hùng, Huỳnh Quyết Thắng. Kỹ thuật đồ họa. NXB Khoa học và kỹ
thuật.2000
[3].Hoàng Kiếm, Dƣơng Anh Đức, Lê Đình Duy, Vũ Hải Quân. Cơ sở đồ họa máy vi
tính. Nhà xuất bản Giáo dục.1999
[4]. Phan Hữu Phúc. Cơ sở đồ họa máy vi tính. NXB Giáo dục. 2000.
[5]. Francis S. Hill, Jr - Computer Graphics, Macmillan Publishing Company, New
York, 1990.
[6]. Foley, Van Dam, Feiner and Hughes - Computer Graphics: Principles and
Practice, Addison-Wesley Publishing Company, USA 1996.
[7]. John R. Rankin - Computer Graphics Software Contruction, Prentice Hall of
Australia, 1989.
[8]. Harrington – Computer Graphics: A Programming Approach, McGraw-Hill Book
Company, Singapore 1986.

221

You might also like