Giáo trình Kỹ thuật đồ họa (Phần 1)

Một hệ mềm đồ họa được mô tả bao gồm 3 miền như sau :

- Miền điều khiển : bao bọc toàn bộ hệ thống.

- Miền thực : nằm trong miền điều khiển. Khi một số nào đó thâm nhập vào miền

thực, nó sẽ được chuyển thành số thực dấu phẩy động, và khi có một số rời khỏi miền này

thì nó sẽ được chuyển thành số nguyên có dấu 16 bits.

- Miền hiển thị : nằm trong miền điều khiển nhưng phân biệt với miền thực. Chỉ có

số nguyên 16 bits mới nằm trong miền hiển thị.

pdf 97 trang kimcuc 13020
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kỹ thuật đồ họa (Phần 1)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Kỹ thuật đồ họa (Phần 1)

Giáo trình Kỹ thuật đồ họa (Phần 1)
Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản 
Lời nói đầu 
 Đồ họa máy tính được ra đời bởi sự kết hợp của 2 lĩnh vực thông tin và truyền 
hình. Đầu tiên kỹ thuật đồ họa được phát triển bởi các nhóm kỹ sư sử dụng máy tính lớn. 
Trong giai đoạn đầu của sự phát triển người ta phải tốn nhiều tiền cho việc trang bị các 
thiết bị phần cứng. Ngày nay, nhờ vào sự tiến bộ của vi xử lý, giá thành của máy tính 
càng lúc càng phù hợp với túi tiền của người sử dụng trong khi các kỹ thuật ứng dụng đồ 
họa của nó ngày càng cao hơn nên có nhiều người quan tâm nghiên cứu đến lĩnh vực này. 
Chúng ta có thể vẽ ra những hình ảnh không chỉ là ảnh tĩnh mà còn có thể biến đổi thành 
những hình ảnh sinh động qua các phép quay, tịnh tiến... Do vậy, đồ họa máy tính trở 
thành một lĩnh vực lý thú và có nhiều ứng dụng trong thực tế. 
 Tuy nhiên, việc dạy và học kỹ thuật đồ họa thì không là đơn giản do chủ đề này có 
nhiều phức tạp. Kỹ thuật đồ họa liên quan đến tin học và toán học bởi vì hầu hết các giải 
thuật vẽ, tô cùng các phép biến hình đều được xây dựng dựa trên nền tảng của hình học 
không gian hai chiều và ba chiều. 
 Hiện nay, Kỹ thuật đồ họa là một môn học được giảng dạy cho sinh viên chuyên 
ngành Tin học với 45 tiết lý thuyết và 15 tiết thực tập. Nội dung của giáo trình kỹ thuật 
đồ họa này tập trung vào 2 vấn đề chính như sau : 
 - Trình bày các thuật toán vẽ và tô các đường cơ bản như đường thẳng, đa giác, 
đường tròn, ellipse và các đường conic. Các thuật toán này giúp cho sinh viên có thể tự 
mình thiết kế để vẽ và tô một hình nào đó ( chương 1 và 2). 
 - Nội dung thứ hai đề cập đến đồ họa hai chiều và đồ họa ba chiều bao gồm các 
phép biến đổi Affine, windowing và clipping, quan sát ảnh ba chiều qua các phép chiếu, 
khử các mặt khuất và đường khuất, thiết kế đường cong và mặt cong (từ chương 3 đến 
chương 7). 
 Giáo trình kỹ thuật đồ họa này được sửa đổi và cập nhật dựa trên kinh nghiệm 
giảng dạy đã qua và được xây dựng dựa trên tài liệu tham khảo chính là : 
Donald Hearn, M. Pauline Baker; Computer Graphics; Prentice-Hall, Inc., 
Englewood Cliffs, New Jersey , 1986. 
 Sau cùng, chúng tôi hy vọng rằng giáo trình này sẽ đóng góp tích cực trong việc 
cải tiến sự hiểu biết của sinh viên về lĩnh vực đồ họa và mong nhận được sự góp ý của 
các đồng nghiệp và sinh viên để công việc biên soạn ngày càng được tốt hơn. 
Trang 1 
Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản 
Mục lục 
Chương 1: GIỚI THIỆU THUẬT TOÁN VẼ VÀ TÔ ...................................6 
CÁC ĐƯỜNG CƠ BẢN.....................................................................................6 
1.1 Tổng quan .........................................................................................................6 
1.2. Hệ tọa độ thế giới thực, hệ tọa độ thiết bị và hệ tọa độ chuẩn .........................7 
1.3. Thuật toán vẽ đoạn thẳng..................................................................................9 
1.3.1. Thuật toán DDA (Digital DifferentialAnalyzer).....................................10 
1.3.2. Thuật toán Bresenham.............................................................................13 
1.4. Thuật toán vẽ đường tròn................................................................................17 
1.4.1. Thuật toán đơn giản.................................................................................17 
1.4.2. Thuật toán MidPoint................................................................................18 
1.4.3. Vẽ đường tròn bằng thuật toán Bresenham.............................................21 
1.4.4. Thuật toán vẽ Ellipse...............................................................................22 
1.4.5. Vẽ đường conics và một số đường cong khác ........................................24 
1.4.6. Vẽ đa giác................................................................................................25 
1.4.7. Tổng kết chương 1...................................................................................28 
1.4.8. Bài tập chương 1 .....................................................................................28 
Chương 2 : CÁC THUẬT TOÁN TÔ MÀU..................................................31 
2.1. Tổng quan .......................................................................................................31 
2.2. Các không gian màu .......................................................................................31 
2.2.1. Không gian màu RGB (Red - Green - Blue)...........................................31 
2.2.2. Không gian màu CMY (Cyan - Magenta - Yellow) ...............................32 
2.2.3. Không gian màu HSV ( Hue - Saturation - Value ) ................................32 
2.3. Các thuật toán tô màu .....................................................................................33 
2.3.1. Tô đơn giản..............................................................................................33 
2.3.2. Tô màu theo dòng quét (scan - line)........................................................38 
2.3.3. Phương pháp tô màu dựa theo đường biên..............................................42 
2.4. Tổng kết chương 2 ..........................................................................................45 
2.5. Bài tập chương 2.............................................................................................46 
Chương 3 : PHÉP BIẾN ĐỔI TRONG ĐỒ HỌA HAI CHIỀU..................47 U
3.1. Tổng quan .......................................................................................................47 
3.2. Phép tịnh tiến (translation)..............................................................................47 
3.3. Phép biến đổi tỷ lệ ..........................................................................................48 
3.4. Phép quay........................................................................................................49 
3.5. Phép đối xứng .................................................................................................51 
3.6. Phép biến dạng................................................................................................51 
3.7. Phép biến đổi Affine ngược ( The inverse of an Affine transformation) .......52 
3.8. Một số tính chất của phép biến đổi affine ......................................................53 
3.9. Hệ tọa độ thuần nhất .......................................................................................53 
3.10. Kết hợp các phép biến đổi (composing transformation).............................54 
3.11. Tổng kết chương 3 ......................................................................................55 
3.12. Bài tập chương 3 .........................................................................................55 
Chương 4 ...........................................................................................................58 
WINDOWING và CLIPPING ........................................................................58 
4.1. Tổng quan .......................................................................................................58 
4.2. Các khái niệm về Windowing.........................................................................58 
Trang 2 
Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản 
4.3. Các thuật toán Clipping ..................................................................................63 
4.4. Phép biến đổi từ cửa sổ - đến – vùng quan sát ...............................................84 
4.5. Tổng kết chương 4 ..........................................................................................86 
4.6. Bài tập chương 4.............................................................................................86 
Chương 5 : ĐỒ HỌA BA CHIỀU...................................................................88 U
5.1. Tổng quan .......................................................................................................88 
5.2. Giới thiệu đồ họa 3 chiều................................................................................88 
5.3. Biểu diễn đối tượng 3 chiều............................................................................90 
5.4. Các phép biến đổi 3 chiều...............................................................................95 
5.4.1. Hệ tọa độ bàn tay phải - bàn tay trái .......................................................95 
5.4.2. Các phép biến đổi Affine cơ sở ...............................................................95 
5.5. Tổng kết chương 5 ..........................................................................................97 
Chương 6 : QUAN SÁT ẢNH BA CHIỀU ...................................................98 U
6.1. Tổng quan .......................................................................................................98 
6.2. Các phép chiếu................................................................................................98 
6.2.1. Các phép chiếu song song .....................................................................100 
6.2.2. Các phép chiếu phối cảnh......................................................................105 
6.3. Biến đổi hệ tọa độ quan sát (hệ quan sát) .....................................................107 
6.3.1. Xác định mặt phẳng quan sát ...............................................................108 
6.3.2. Không gian quan sát ..............................................................................112 
6.3.3. Clipping .................................................................................................115 
6.4. Cài đặt các thao tác quan sát (Implementation of Viewing Operations)......116 
6.5. Cài đặt phần cứng .........................................................................................125 
6.6. Lập trình xem ảnh ba chiều ..........................................................................126 
6.7. Các mở rộng đến Đường ống quan sát (Viewing Pipeline)..........................130 
6.8. Tổng kết chương 6 ........................................................................................130 
6.9. Bài tập chương 6..........................................................................................131 
Chương 7 .........................................................................................................134 
KHỬ CÁC MẶT KHUẤT VÀ ĐƯỜNG KHUẤT......................................134 
7.1. Tổng quan .....................................................................................................134 
7.2. Khử các mặt nằm sau (Back-Face Removal) ...............................................135 
7.3. Phương pháp dùng vùng đệm độ sâu (Depth-Buffer Method) .....................138 
7.4. Phương pháp đường quét (Scan-Line Method) ............................................140 
7.5. Phương pháp sắp xếp theo độ sâu (Depth- Sorting Method)........................143 
7.6. Phương pháp phân chia vùng (Area- Subdivision Method) .........................147 
7.7. Các phương pháp Octree (Octree Methods) .................................................150 
7.8. Loại bỏ các đường bị che khuất....................................................................154 
7.9. Tổng kết chương 7 ........................................................................................156 
7.10. Bài tập chương 7 .......................................................................................157 
Trang 3 
Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản 
PHẦN TỔNG QUAN 
1. Mục đích yêu cầu 
 Sau khi học xong môn này, sinh viên cần đạt được các yêu cầu sau: 
 - Hiểu thế nào là đồ họa trên máy tính. 
 - Thiết kế và cài đặt được các thuật toán vẽ các đường cơ bản như đường thẳng, 
đường tròn,... 
 - Thiết kế và cài đặt được các thuật toán tô một hình. 
 - Sử dụng được các phép biến hình trong không gian 2 chiều, 3 chiều để làm thay 
đổi một hình ảnh đã có sẳn. 
 - Có thể tạo một cửa sổ để cắt - dán một hình. 
 - Hiểu khái niệm về các tiếp cận để mô phỏng được một hình ảnh trong không 
gian 3 chiều trên máy tính. 
2. Đối tượng sử dụng 
 Môn kỹ thuật đồ họa được giảng dạy cho sinh viên năm thứ tư của các khoa sau: 
 - Chuyên ngành công nghệ thông tin. 
 - Chuyên ngành điện tử (viễn thông, tự động hóa,...) 
 - Chuyên ngành sư phạm (Toán tin, Lý tin ) 
3. Nội dung cốt lõi 
 Giáo trình Kỹ thuật đồ họa bao gồm 7 chương. 
 - Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản 
 - Chương 2: Các thuật toán tô màu 
 - Chương 3: Phép biến đổi trong đồ họa 2 chiều 
 - Chương 4: Tạo cửa sổ và cắt hình 
 - Chương 5: Đồ họa 3 chiều 
 - Chương 6: Quan sát ảnh 3 chiều 
 - Chương 7: Khử các mặt khuất và đường khuất 
4. Kiến thức tiên quyết 
 - Kiến thức về hình học không gian và hình giải tích 
 - Kiến thức lập trình căn bản, lập trình đồ họa 
 - Kiến thức về cấu trúc dữ liệu, lập trình đệ qui 
Trang 4 
Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản 
5. Danh mục tài liệu tham khảo 
- Donald Hearn, M. Pauline Baker; Computer Graphics; Prentice-Hall, Inc., 
 Englewood Cliffs, New Jersey , 1986. 
- F.S.Hill; Computer graphics ; 1990 
- Vũ Mạnh Tường, Dương Anh Đức, Trần Đan Thư, Lý Quốc Ngọc. Giáo trình Nhập 
môn đồ họa & xử lý ảnh.1995. 
- VERA B.ANAND, người dịch TS Nguyễn Hữu Lộc. Đồ họa máy tính và Mô hình hóa 
hình học. Nhà xuất bản Thành Phố Hồ Chí Minh - 2000. 
- Foley, Van Darn, Feiner, Hughes, Phillips. Introduction à L'Infographie. 1995. 
- Lê Tấn Hùng, Huỳnh Quyết Thắng. Kỹ thuật đồ họa. Nhà xuất bản khoa học và kỹ 
thuật, Hà nội - 2000. 
Trang 5 
Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản 
Chương 1: GIỚI THIỆU THUẬT TOÁN VẼ VÀ TÔ 
CÁC ĐƯỜNG CƠ BẢN 
1.1 Tổng quan 
• Mục tiêu của chương 1 
 Học xong chương này, sinh viên phải nắm bắt được các vấn đề sau: 
 - Thế nào là hệ đồ họa 
 - Thiết kế và cài đặt được các thủ tục vẽ và tô các đường cơ bản như đường thẳng, 
đường tròn, elip, và các đường cong khác. 
• Kiến thức cơ bản cần thiết 
 Các kiến thức cơ bản cần thiết để học chương này bao gồm : 
 - Các khái niệm toán học về đường thẳng như : đường thẳng là gì : dạng tổng quát 
phương trình đường thẳng, hệ số góc, tung độ dốc. 
 - Hiểu rõ hình dáng của đường thẳng phụ thuộc vào hệ số góc như thế nào. 
 - Phương trình tổng quát của đường tròn, ellippse ( không có tham số và có tham 
số). 
 - Kĩ thuật lập trình: thiết lập thủ tục, hàm (lưu ý truyền qui chiếu và truyền giá 
trị). 
• Tài liệu tham khảo 
Donald Hearn, M. Pauline Baker. Computer Graphics . Prentice-Hall, Inc., 
Englewood Cliffs, New Jersey , 1986 (chapters 3, 55-76). 
• Nội dung cốt lõi 
 Thiết lập thủ tục vẽ : 
 - Đường thẳng bằng giải thuật DDA 
 - Đường thẳng bằng giải thuật Bresenham 
 - Đường tròn bằng giải thuật đối xứng 
 - Đường tròn bằng giải thuật Bresenham 
 - Đường tròn bằng giải thuật MidPoint 
 - Ellippse 
 - Đa giác 
Trang 6 
Chương 1: Giới thiệu thuật toán vẽ và tô các đường cơ bản 
1.2. Hệ tọa độ thế giới thực, hệ tọa độ thiết bị và hệ tọa độ chuẩn 
 Một hệ mềm đồ họa được mô tả bao gồm 3 miền như sau : 
 - Miền điều khiển : bao bọc toàn bộ hệ thống. 
  ... y) nằm bên trong cửa sổ thì P sẽ thoả hệ bất phương trình sau : 
 Xmin ≤ x ≤ Xmax 
 Ymin ≤ y ≤ Ymax 
3. Tiếp tục bài tập 2, xét bài toán xén đoạn thẳng được cho bởi các điểm P1(x1, 
y1), P2(x2, y2) bất kỳ. 
4. Tiếp tục bài tập 3, sử dụng thuật toán Cohen - Sutherland (phân chia mã vùng) 
xét bài toán xén các đoạn thẳng được cho bởi các điểm P1(x1, y1), P2(x2, y2), 
P3(x3, y3), P4(x4, y4), P5(x5, y5), P6(x6, y6), P7(x7, y7), và P8(x8, y8) vào 
cửa sổ chữ nhật trên xem hình vẽ (a) và (b)). 
5. Thảo luận kỹ nhân tố căn bản đằng sau các kiểm tra và phương khác nhau để 
tính các tham số giao nhau u1 và u2 trong thuật toán clipping đường Liang-
Barsky. 
Trang 86 
Chương 4: Windowing và Clipping 
6. So sánh số lượng các phép tính toán học được thực hiện trong các thuật toán 
clipping đường Cohen-Sutherland và Liang-Barsky đối với vài hướng đoạn 
thẳng khác nhau liên quan đến cửa sổ clipping. 
7. Cài đặt thuật toán thuật toán clipping đường Liang-Barsky lên hệ thống của 
 bạn. 
8. Hãy nghĩ ra một thuật toán để thực hiện việc clipping đường bằng cách dùng 
phương pháp phân chia điểm ở giữa. Sự cài đặt phần mềm của thuật toán này có 
thuận lợi hơn hai thuật toán clipping đường đã được thảo luận trong chương 
không? 
9. Cài đặt một thuật toán cắt các đoạn thẳng bằng cách dùng một cửa sổ bị quay, 
được định nghĩa bởi các giá trị tọa độ nhỏ nhất và lớn nhất và bị quay một góc 
như trong hình 6-5. 
10. Thay đổi thuật toán clipping đa giác để cắt các vùng đa giác lõm một cách hợp 
lý. (Một phương pháp để thực hiện điều này là chia đa giác lõm ra làm các đa 
giác lồi.) 
11. Sửa lại cho hợp lí thuật toán clipping đường Liang-Barsky để clipping đa giác. 
12. Viết thủ tục để cắt một ellipse bằng cách dùng cửa sổ chữ nhật. 
13. Giả sử rằng các kí tự được định nghĩa trong một lưới điểm (pixel grid), hãy 
phát triển một thuật toán clipping văn bản để cắt các kí tự đơn lẻ theo chiến lược 
“tất cả - hoặc - không”. 
14. Hãy phát triển một thuật toán clipping văn bản để cắt các kí tự đơn lẻ, giả sử 
rằng các kí tự được định nghĩa trong một lưới điểm (pixel grid). 
15. Viết một thủ tục thực hiện xóa một phần bất kì của hình ảnh đã được định 
nghĩa, dùng kích thước cửa sổ xóa được xác định bất kỳ. 
16. Viết các thủ tục để cài đặt các lệnh của cứa sổ và vùng quan sát. Tức là, các thủ 
tục có chứa tham số về hệ tọa độ trong các lệnh để thực hiện biến đổi sang vùng quan 
sát cho các cảnh cụ thể: clipping trong hệ tọa độ thế giới thực, chuyển đổi sang hệ tọa 
độ chuẩn hóa, sau cùng biến đổi đến hệ tọa độ thiết bị. 
Trang 87 
Chương 5: Đồ họa ba chiều 
Chương 5 : ĐỒ HỌA BA CHIỀU 
5.1. Tổng quan 
• Mục tiêu 
Học xong chương này sinh viên cần phải nắm bắt được các vấn đề sau: 
 - Thế nào là đồ họa 3 chiều ? 
 - Viết được chương trình vẽ một hình trong không gian 3 chiều 
• Kiến thức cơ bản 
 Hình giải tích và hình học không gian : tích vô hướng của hai véc tơ. Ma 
trận cùng các phép toán 
• Tài liệu tham khảo 
Computer Graphics . Donald Hearn, M. Pauline Baker. Prentice-Hall, Inc., 
 Englewood Cliffs, New Jersey , 1986 (chapters 9, 181-233) 
• Nội dung cốt lõi 
 - Trình bày cách biểu diễn đối tương 3 chiều: biểu diễn các đối tương cơ 
bản qua mô hỉnh khung nối kết. 
 - Các phép biến đổi trong không gian 3 chiều. 
5.2. Giới thiệu đồ họa 3 chiều 
 Các đối tượng trong thế giới thực phần lớn là các đối tượng 3 chiều còn thiết bị 
hiển thị chỉ 2 chiều. Do vậy, muốn có hình ảnh 3 chiều ta cần phải giả lập. 
 Chiến lược cơ bản là chuyển đổi từng bước. Hình ảnh sẽ được hình thành từ từ, 
ngày càng chi tiết hơn. 
 Qui trình hiển thị ảnh 3 chiều như sau 
• Biến đổi từ hệ tọa độ đối tượng sang hệ tọa độ thế giới thực (Modelling 
transformation). 
 Mỗi đối tượng được mô tả trong một hệ tọa độ riêng được gọi là Hệ tọa độ đối 
tượng. 
 Có 2 cách mô hình hóa đối tượng: 
 - Solid modeling : mô tả các vật thể (kể cả bên trong). 
 - Boudary representation : chỉ quan tâm đến bề mặt đối tượng. 
Trang 88 
Chương 5: Đồ họa ba chiều 
Các đối tượng có thể được biểu diễn bằng mô hình Wire-Frame. 
Nhận thấy rằng khi biểu diễn đối tượng, ta có thể chọn gốc tọa độ và đơn vị đo 
lường sao cho việc biểu diễn là thuận lợi nhất. Thường thì người ta chuẩn hóa kích 
thước của đối tượng khi biểu diễn. 
Boudary representation cho phép xử lý nhanh còn silid modeling cho hình ảnh đầy 
đủ và xác thực hơn. 
• Loại bỏ các đối tượng không nhìn thấy được (Trivial Rejection). 
 Loại bỏ các đối tượng hoàn toàn không thể nhìn thấy trong cảnh. 
 Thao tác này giúp ta lược bỏ bớt các đối tượng không cần thiết do đó giảm chi 
phí xử lý. 
• Chiếu sáng các đối tượng (Illumination). 
Gán cho các đối tượng màu sắc dựa trên các đặc tính của các chất tạo nên chúng và 
các nguồn sáng tồn tại trong cảnh. 
 Có nhiều mô hình chiếu sáng và tạo bóng : constant-intensity, Interpolate,... 
• Chuyển từ word space sang eye space (Viewing Transformation). 
 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. 
 Hình ảnh hiển thị phụ thuộc vào vị trí quan sát và góc nhìn. 
 Hệ qui chiếu có gốc đặt tại vị trí quan sát và phù hợp với hướng nhìn sẽ thuận 
lợi cho các xử lý thật. 
• Loại bỏ phần nằm ngoài viewing frusturn (Clipping). 
 Thực hiện việc xén đối tượng trong cảnh để cảnh nằm gọn trong một phần 
không gian hình chóp cụt giới hạn vùng quan sát mà ta gọi là viewing frustum. 
Viewung frustum có trục trùng với tia nhìn, kích thước giới hạn bởi vùng ta muốn 
quan sát. 
• Chiếu từ eye space xuống screen space (Projection). 
Thực hiện việc chiếu cảnh 3 chiều từ không gian quan sát xuống không gian màn 
hình. 
Có 2 phương pháp chiếu: 
 - Chiếu song song 
 - Chiếu phối cảnh 
Trang 89 
Chương 5: Đồ họa ba chiều 
Khi chiếu ta phải tiến hành việc khử mặt khuất để có thể nhận được hình ảnh trung 
thực. 
Khử mặt khuất cho phép xác định vị trí (x,y) trên màn hình thuộc về đối tượng nào 
trong cảnh. 
• Chuyển đối tượng sang dạng pixel (Rasterization). 
• Hiển thị đối tượng (Display). 
5.3. Biểu diễn đối tượng 3 chiều 
 Trong đồ họa máy tính, các đối tượng lập thể có thể được mô tả bằng các bề 
mặt (surface) của chúng. Ví dụ : một hình lập phương được xây dựng từ sáu mặt 
phẳng, một hình trụ được xây dựng từ sự kết hợp của một mặt cong và hai mặt 
phẳng và hình cầu được xây dựng từ chỉ một mặt cong. 
 Thông thường để biểu diễn một đối tượng bất kỳ, người ta dùng phương pháp 
xấp xỉ để đưa các mặt về dạng các mặt đa giác (polygon faces). 
• Điểm trong không gian 3 chiều có tọa độ (x,y,z) mô tả một vị trí trong 
không gian. 
 typedef struct { 
 int x; 
 int y; 
 int z; 
 } Point _3D ; 
• Vectơ : xác định bởi 3 tọa độ dx, dy, dz mô tả một hướng và độ dài của véc 
tơ. 
 Véc tơ không có vị trí trong không gian. 
 | V | = 222 dzdydx ++ 
 Tích vô hướng của hai véc tơ 
 V1* V2 = dx1dx2 + dy1dy2 + dz1dz2 
 Hay V1* V2 = |V1||V2| cos θ 
 typedef struct { 
Trang 90 
Chương 5: Đồ họa ba chiều 
 int dx; 
 int dy; 
 int dz; 
 } Vector ; 
• Đoạn thẳng trong không gian 3 chiều: biểu diễn tổ hợp tuyến tính của 2 điểm 
 Để biểu diễn dạng tham số của đoạn thẳng, ta có : 
 P = P1 + t*( P2 - P1 ) , ( 0 ≤ t ≤ 1) 
 typedef struct { 
 Point P1; 
 Point P2; 
 } Segment ; 
• Tia (Ray) : là một đoạn thẳng với một đầu nằm ở vô cực. 
 Biểu diễn dạng tham số của tia : 
 P = P1 + t*V , ( 0 ≤ t < ∞) 
 typedef struct { 
 Point P1; 
 Vector V; 
 } Ray; 
• Đường thẳng (Line): là một đoạn thẳng với cả hai đầu nằm ở vô cực 
 Biểu diễn dạng tham số của đường thẳng 
 P = P1 + t*V , ( ∞ ≤ t < ∞) 
 typedef struct { 
 Point P1; 
 Vector V; 
 } Line; 
• Đa giác (Polygon) : là một vùng giới hạn bởi hạn dãy các điểm đồng phẳng . 
( Các điểm được cho theo thứ tự ngược chiều kim đồng hồ ) 
 typedef struct { 
Trang 91 
Chương 5: Đồ họa ba chiều 
 Point *Points; 
 int nPoints; 
 } Polygon; 
 Có thể biểu diễn một mặt đa giác bằng một tập họp các đỉnh và các thuộc tính 
kèm theo. Khi thông tin của mỗi mặt đa giác được nhập, dữ liệu sẽ được điền vào 
các bảng (mãng dữ liệu) sẽ được dùng cho các xử lý tiếp theo, hiển thị và biến đổi. 
 Các bảng dữ liệu mô tả mặt đa giác có thể tổ chức thành hai nhóm : bảng hình 
học và bảng thuộc tính. Các bảng lưu trữ dữ liệu hình học chứa tọa độ các đỉnh và 
các tham số cho biết về định hướng trong không gian của mặt đa giác. Thông tin về 
thuộc tính của các đối tượng chứa các tham số mô tả độ trong suốt, tính phản xạ và 
các thuộc tính kết cấu của đối tượng. Một cách tổ chức thuận tiện để lưu trữ các dữ 
liệu hình học là tạo ra 3 danh sách : một bảng lưu đỉnh, một bảng lưu cạnh và một 
bảng lưu đa giác. Trong đó: 
 - Các giá trị tọa độ cho mỗi đỉnh trong đối tượng được chứa trong bảng lưu 
đỉnh. 
 - Bảng cạnh chứa các con trỏ trỏ đến bảng đỉnh cho biết đỉnh nào được nối với 
một cạnh của đa giác . 
 - Cuối cùng là bảng lưu đa giác chứa các con trỏ trỏ đến bảng lưu cạnh cho biết 
những cạnh nào tạo nên đa giác. 
• Mặt phẳng (Plane) : 
 typedef struct { 
 Vector N; 
 int d; 
 } Plane; 
 Phương trình biểu diễn mặt phẳng có dạng : Ax + By + Cz + D = 0 (5-
1) 
 Trong đó (x,y,z) là một điểm bất kỳ của mặt phẳng và A, B, C, D là các hằng số 
diễn tả thông tin không gian của mặt phẳng. 
 Để xác định phương trình mặt phẳng, ta chỉ cần xác định 3 điểm không thẳng 
hàng của mặt phẳng này. Như vậy, để xác định phương trình mặt phẳng qua một đa 
giác, ta sẽ sử dụng tọa độ của 3 đỉnh đầu tiên (x1,y1), (x2,y2), (x3,y3) trong đa giác này. 
 Từ phương trình (5-1) ta có : 
Trang 92 
Chương 5: Đồ họa ba chiều 
 Axk + Byk + Czk + D = 0 , k= 0,1,2,3. (5-2) 
 Trong đó : 
 A = 
33
23
11
1
1
1
zy
zy
zy
 B = 
33
22
11
1
1
1
zx
zx
zx
 C = 
1
1
1
33
32
11
yx
yx
yx
 C = 
333
232
111
zyx
zyx
zyx
 Khai triển các định thức trên ta có : 
 A = y1(z2 - z3) + y2(z3 - z1) + y3(z1 - z2) 
 B = z1(x2 - x3) + z2(x3 - x1) + z3(x1 - x2) 
 C = x1(y2 - y3) + x2(y3 - y1) + x3(y1 - y2) 
 A = - x1(y2z3 - y3z2) - x2(y3z1 - y1z3) - x3(y1z2 - y2z1) 
 Hướng của mặt phẳng thường được xác định thông qua véc tơ pháp tuyến của 
nó. Véc tơ pháp tuyến n = (A,B,C) (xem hình 5-1) 
n=(A,B,C) 
. 
Hình 5.1 : Vec tơ pháp tuyến của mặt phẳng. 
• Mô hình khung nối kết (Wireframe-Model) 
 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 các đỉnh đó. Khi thể hiện bằng mô hình này, các đối tượng 3 chiếu có vẻ rỗng và 
không giống thực tế lắm. Tuy nhiên, vẽ bằng mô hình này thì nhanh nên người ta 
Trang 93 
Chương 5: Đồ họa ba chiều 
thường dùng nó trong việc xem phác thảo các đối tượng. Để 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 khuất, mặt khuất. 
 Với mô hình khung nối kết, hình dạng của đối tượng 3 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 (cho biết cặp các đỉnh tạo ra 
cạnh). Chúng ta hãy quan sát một vật thể ba chiều ( xem hình 5-2) được biểu diễn 
bằng mô hình khung nối kết như sau: 
z 
10 
1
x 
y
5 4 
9 
6 
8 
3
2
7
1
11
Hình 5.2 : 
Vật thể 3 chiều 
được biểu diễn 
bằng khung nối 
kết. 
Bảng danh sách các cạnh và đỉnh biểu diễn vật thể 
Vertex List 
Vertex x y z 
1 0 0 0 back side 
2 0 1 0 
3 0 1 1 
4 0 0.5 1.5 
5 0 0 1 
6 1 0 0 front side 
7 1 1 0 
8 1 1 1 
9 1 0.5 1.5 
10 1 0 1 
Edge List 
Edge Vertex1 Vertex2 
1 1 2 
2 2 3 
3 3 4 
4 4 5 
5 5 1 
6 6 7 
7 7 8 
8 8 9 
9 9 10 
10 10 6 
11 1 6 
12 2 7 
13 3 8 
14 4 9 
15 5 10 
16 2 5 
17 1 3 
Trang 94 
Chương 5: Đồ họa ba chiều 
Người ta có thể vẽ các đối tương theo mô hình khung nối kết bằng cách sử dụng các 
phép chiếu song song hay phép chiếu phối cảnh sẽ được giới thiệu ở chương 6. 
5.4. Các phép biến đổi 3 chiều 
5.4.1. Hệ tọa độ bàn tay phải - bàn tay trái 
• Hệ tọa độ theo qui ước bàn tay phải : để bàn tay phải sao cho ngón cái hướng 
theo trục z, khi nắm tay lại, các tay chuyển động theo hướng từ trục x đến trục y. 
• Hệ tọa tọa độ theo qui ước bàn tay trái : để bàn tay phải sao cho ngón cái 
hướng theo trục z, khi nắm tay lại, các ngón tay chuyển động theo hướng từ trục x 
đến trục y. 
• Hệ tọa độ thuần nhất (Homogeneous Coordinates) : Mỗi điểm (x,y,z) trong 
không gian Descartes được biểu diễn bởi một bộ bốn tọa độ trong không gian 4 
chiều thu gọn (hx,hy,hz,h). Người ta thường chọn h=1. 
• Các phép biến đổi tuyến tính là tổ hợp của các phép biến đổi sau : tỉ lệ, quay, 
biến dạng và đối xứng. Các phép biến đổi tuyến tính có các tính chất sau : 
 - Gốc tọa độ là điểm bất động 
 - Ảnh của đường thẳng là đường thẳng 
 - Ảnh của các đường thẳng song song là các đường thẳng song song 
 - Bảo toàn tỉ lệ khoảng cách 
 - Tổ hợp các phép biến đổi có tính phân phối 
5.4.2. Các phép biến đổi Affine cơ sở 
• Phép tịnh tiến 
 Tr(trx, try, trz) = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
1
0100
0010
0001
zyx trtrtr
• Phép biến đổi tỉ lệ 
 S((sx, sy, sz) = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
1000
000
000
000
z
y
x
s
x
s
Khi Sx = Sy = Sz ta có phép biến đổi đồng dạng. 
Trang 95 
Chương 5: Đồ họa ba chiều 
• Phép quay quanh trục Z 
 R(z,θ) = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−
1000
0100
00cossin
00sincos
θθ
θθ
• Phép quay quanh trục X 
 R(x,θ) = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−
1000
0cossin0
0sincos0
0001
θθ
θθ
• Phép quay quanh trục Y 
 R(y,θ) = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛ −
1000
0cos0sin
0010
0sin0cos
θθ
θθ
• Cách xác định chiều dương trong các phép quay 
 Định nghĩa về chiều quay được dùng chung cho cả hệ tọa độ theo qui ướ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 truc x : từ trục dương y đến trục dương x 
 - Quay quanh trục y : từ trục dương z đến trục dương x 
 - Quay quanh trục x : từ trục dương x đến trục dương y 
• Phép đối xứng qua mặt phẳng tọa độ 
 (yOx) : Mr(x) = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛−
1000
0100
0010
0001
 (zOx) : Mr(y) = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−
1000
0100
0010
0001
Trang 96 
Chương 5: Đồ họa ba chiều 
 (xOy) Mr(x) = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−
1000
0100
0010
0001
• Phép đối xứng qua trục x, y và z 
 Mx = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−
−
1000
0100
0010
0001
 My = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−
−
1000
0100
0010
0001
 Mz = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
−
−
1000
0100
0010
0001
• Phép biến dạng 
 Sh = 
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛
1000
01
01
01
yzxz
zyxy
zxyx
hh
hh
hh
5.5. Tổng kết chương 5 
 - Trong đồ họa máy tính, các đối tượng được mô tả bằng bề mặt của chúng. Khi 
đó, người ta dùng phương pháp xấp xỉ để đưa các bề mặt về dạng các mặt đa giác. 
 - Lưu ý khi sử dụng phương pháp mô hình khung nối kết, bao gồm một tập các 
đỉnh và một tập các cạnh nối các đỉnh đó. Phương pháp này thì nhanh nhưng có khuyết 
điểm là không giống thực tế. Để cải thiện, cần dùng các kỹ thuật tạo bóng và khử các 
mặt khuất, đường khuất. 
Trang 97 

File đính kèm:

  • pdfgiao_trinh_ky_thuat_do_hoa_phan_1.pdf