Giao trinh
MỤC LỤC MỤC LỤC .1 CHƯƠNG 1: TổNG QUAN Về ĐỒ HỌA MÁY TÍNH .5 1.1. Khái niệm về đồ họa máy tính 5 1.2. Phần cứng đồ họa (GRAPHICS HARDWARE) .6 1.2.1. Các thành ph n ph n c ng c a h đ ho t ng tác ầ ầ ứ ủ ệ ồ ạ ươ .6 1.2.2 Các thi t b hi n thế ị ể ị 7 1.2.3. Các ph ng th c hi n thươ ứ ể ị 10 1.2.4 Thi t b sao chép c ngế ị ứ .13 1.2.5. Các thi t b nh p v t lýế ị ậ ậ 14 1.2.6 Video Ram (B nh nh)ộ ớ ả .15 1.3 Phần mềm 17 1.4 Các ứng dụng của đồ họa máy tính .19 CHƯƠNG II CÁC THUẬT TOÁN XÂY DỰNG CÁC THỰC THỂ CƠ SỞ 24 Hệ toạ độ thế giới thực và hệ toạ độ thiết bị .25 2.1 Thuật toán vẽ đoạn thẳng 28 2.1.1 Nguyên lý chung 28 2.1.2 Thu t toán DDA (Digital DifferentialAnalyzer)ậ 29 2.1.3 Thu t toán v đo n th ng Bresenham ậ ẽ ạ ẳ .32 2.1.4 Thu t toán trung đi m v đo n th ng (MidPoint)ậ ể ẽ ạ ẳ 37 Vẽ đa giác 38 2.2 Thuật toán vẽ đường tròn 42 2.2.1 Nguyên lý chung 42 2.2.2 Thu t toán trung đi m (MidPoint) v đ ng trònậ ể ẽ ườ 43 2.3 Thuật toán vẽ đường elip 47 2.3.1 Nguyên lý chung 47 2.3.2 Thu t toán trung đi m (MidPoint) v elipậ ể ẽ 48 2.4 Các thuật toán tô màu 52 2.4.1 Thu t toán tô màu d a theo dòng quétậ ự .53 2.4.2 Thu t toán tô màu d a theo đ ng biên ậ ự ườ .63 CHƯƠNG III MÀU SẮC TRONG ĐỒ HỌA .68 3.1 Lý thuyết màu sắc trong đồ họa 68 3.2 Các mô hình màu .73 3.2.1. Mô hình màu RGB (Red, Green, Blue - đ , l c, lam)ỏ ụ .74 3.2.2. Mô hình màu CMY (Cyan, Magenta, Yellow - xanh tím, t i, Đỏ ươ vàng) 75 3.2.3. Mô hình màu YIQ 77 3.3.4. Mô hình màu HSV (Hue, Saturation,Value) 77 3.2.5. Bi u đ màu CIE (1931 – Commission Internationale de ể ồ l’Eclairage) .80 1 CHƯƠNG 4: CÁC GIẢI THUẬT XÉN HÌNH .84 4.1 Cắt xén với cửa sổ xén là hình chữ nhật .84 4.1.1 C t xén đi mắ ể .84 4.1.2 C t xén đo n th ngắ ạ ẳ .84 4.1.3 Gi i thu t Cohen-Sutherlandả ậ .86 4.1.4 Thu t toán Liang-Barsky ậ .92 4.2 Cắt xén với cửa sổ xén là đa giác lồi .97 4.2.1 Khái ni mệ .97 4.2.2 Thu t toán Sutherland Hodgmanậ 99 CHƯƠNG 5: CÁC PHÉP BIẾN ĐỔI TRONG KHÔNG GIAN HAI CHIỀU, ba chiều .107 5.1 Các phép biến đổi trong không gian 2 chiều .107 5.1.1 Các phép bi n đ i hình h c c s ế ổ ọ ơ ở .107 5.1.1.1. Phép t nh ti n ị ế .108 5.1.1.2. Phép bi n đ i t l quanh g c t a đế ổ ỉ ệ ố ọ ộ 108 5.1.1.3. Phép quay quanh g c t a đố ọ ộ .109 5.1.1.4. Bi u di n ma tr n c a phép bi n đ iể ễ ậ ủ ế ổ .110 5.1.2. K t h p các phép bi n đ iế ợ ế ổ .113 5.1.2.1. K t h p các phép t nh ti nế ợ ị ế .113 5.1.2.2. K t h p các phép t lế ợ ỉ ệ 114 5.1.2.3. K t h p các phép quayế ợ .114 5.1.2.4. Phép quay có tâm quay là đi m b t k ể ấ ỳ 115 5.1.3. M t s tính ch t c a phép bi n đ i AFFINE ộ ố ấ ủ ế ổ .116 5.1.4. M t s phép bi n đ i khác ộ ố ế ổ .117 5.1.4.1. Phép đ i x ng ố ứ .117 5.1.4.2. Phép bi n d ng ế ạ 117 5.1.4.3. Phép bi n đ i ng c ế ổ ượ 118 5.1.4.4. Phân rã phép bi n đ i ế ổ 119 5.1.5. Phép bi n đ i gi a các h t a đế ổ ữ ệ ọ ộ .120 5.2.1 Các phép bi n đ i hình h cể ổ ọ 122 5.2.1.1. Phép bi n đ i affine ế ổ .122 5.2.1.2 Phép t nh ti nị ế .125 5.2.1.3 Phép bi n đ i t lế ổ ỉ ệ 125 5.2.1.4 Phép bi n d ngế ạ .126 5.2.1.5 Phép quay .127 Hình 5.21 .133 5.2.1.6 K t h p các phép bi n đ i affine ba chi uế ợ ế ổ ề .133 5.2.2 Phép bi n đ i mô hình và phép bi n đ i h tr c t a đế ổ ế ổ ệ ụ ọ ộ .133 CHƯƠNG 6: bIỂU DIỄN ĐỐI TƯỢNG TRONG KHÔNG GIAN BA CHIỀU 136 6.1 Tổng quan về đồ họa ba chiều .136 S l c v quy trình hi n thơ ượ ề ể ị 137 2 6.2 Mô hình khung nối kết (Wireframe Model) 139 6.2.1 Khái ni mệ .139 6.2.2 Bi u di n các v t th ba chi u b ng mô hình khung n i k tể ễ ậ ể ề ằ ố ế .139 6.3 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 141 6.4 Phép chiếu song song (parallel projection) .142 6.4.1 Phép chi u tr c giao ế ự 142 6.4.2 Phép chi u xiênế 144 6.5 Phép chiếu phối cảnh (perspective projection) 145 6.5.1 Phép chi u ph i c nh đ n gi n nh tế ố ả ơ ả ấ 145 6.5.2 Các tr ng h p khác ườ ợ .146 6.5.3 Bi u di n m t đa giác ể ễ ặ 147 6.5.4 Bi u di n b ng b ng đa giác ể ễ ằ ả .148 6.5.5 Ph ng trình m t ph ngươ ặ ẳ .149 6.5.6 L i đa giác (polygon meshes)ướ .153 6.6 Các đường cong và mặt cong 154 6.7 Các mặt có quy luật (ruled surfaces) .154 6.7.1 nh ngh aĐị ĩ .154 6.7.2 Ph ng trình tham s ươ ố 155 6.8 Vẽ đường cong và mặt cong bằng Bezier và B-Spline 160 6.8.1 V các đ ng cong Bezierẽ ườ 161 6.8.2 ng cong Spline và B-SplineĐườ 170 6.8.3 Thi t k các m t cong d a trên Bezier và B-Splineế ế ặ ự .174 PHỤ LỤC .176 TÀI LIỆU THAM KHẢO .188 3 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. 4 CHƯƠNG 1: TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH Sự phát triển của khoa học, kĩ thuật, nghệ thuật, kinh doanh, và công nghệ luôn luôn phụ thuộc vào khả năng truyền đạt thông tin của chúng ta, hoặc thông qua các bit dữ liệu lưu trữ trong microchip hoặc thông qua giao tiếp bằng tiếng nói. Câu châm ngôn từ xa xưa “một hình ảnh có giá trị hơn cả vạn lời” hay “trăm nghe không bằng một thấy” cho thấy ý nghĩa rất lớn của hình ảnh trong việc chuyển tải thông tin. Hình ảnh bao giờ cũng được cảm nhận nhanh và dễ dàng hơn, đặc biệt là trong trường hợp bất đồng về ngôn ngữ. Do đó không có gì ngạc nhiên khi mà ngay từ khi xuất hiện máy tính, các nhà nghiên cứu đã cố gắng sử dụng nó để phát sinh các ảnh trên màn hình. Trong suốt gần 50 năm phát triển của máy tính, khả năng phát sinh hình ảnh bằng máy tính của chúng ta đã đạt tới mức mà bây giờ hầu như tất cả các máy tính đều có khả năng đồ họa. Đồ họa máy tính là một trong những lĩnh vực lí thú nhất và phát triển nhanh nhất của tin học. Ngay từ khi xuất hiện, đồ họa máy tính đã có sức lôi cuốn mãnh liệt, cuốn hút rất nhiều người ở nhiều lĩnh vực khác nhau như khoa học, nghệ thuật, kinh doanh, quản lí, . Tính hấp dẫn và đa dạng của đồ họa máy tính có thể đƣợc minh họa rất trực quan thông qua việc khảo sát các ứng dụng của nó. 1.1. Khái niệm về đồ 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. Theo định nghĩa này thì đồ họa máy tính bao gồm việc thiết kế phần cứng như thiết bị hiển thị, các thuật toán cần thiết để phát sinh các đường trên các thiết bị này, các phần mềm được sử dụng cho cả người lập trình hệ thống và người lập trình ứng dụng đồ họa, và các chương trình ứng dụng tạo ảnh bằng máy tính. Đồ họa máy tính cung cấp một trong những phương cách tự nhiên nhất cho việc truyền đạt thông tin với máy tính. Ngày nay, trong nhiều quá trình thiết kế, cài đặt và xây dựng, thông tin mà hình ảnh mang lại là hầu như không thể thiếu được. Kĩ thuật trực quan (scientific visualization) đã trở nên là một lĩnh vực rất quan trọng từ năm 1980, khi các nhà nghiên cứu khoa học và các kĩ sư nhận ra rằng họ không thể xử lí một lượng dữ liệu khổng lồ phát sinh từ các siêu máy tính mà dữ liệu không được tóm lược và làm nổi bật các xu hướng và hiện tượng qua nhiều loại biểu diễn đồ họa khác nhau. Đồ họa máy tính tương tác là một trong những phương tiện mang lại thêm nhiều sự thuận lợi cho người dùng trong việc phát sinh hình ảnh kể từ khi có phát minh của 5 máy ảnh và truyền hình. Với máy tính, chúng ta có thể tạo các hình ảnh không chỉ của các đối tượng cụ thể, thực tế, mà còn của các đối tượng trừu tượng, nhân tạo; các biểu diễn của dữ liệu mà không có tính kế thừa về mặt hình học, như là kết quả điều tra, khảo sát. Hơn nữa, với đồ họa máy tính chúng ta không bị giới hạn trong các ảnh tĩnh. Các ảnh động thông thường mang lại nhiều hiệu quả hơn so với ảnh tĩnh, đặc biệt là với các hiện tượng biến đổi theo thời gian, cả thực tế (như sự đổi hướng của cánh máy bay siêu âm, hay sự phát triển của khuôn mặt người từ lúc trẻ thơ tới lúc già) và trừu tượng (như là xu hướng phát triển của việc sử dụng năng lượng, gia tăng dân số, …). Có nhiều cách tiếp cận trong việc học môn đồ họa, trải rộng từ việc nghiên cứu phần cứng tới việc học để sử dụng đồ họa máy tính chỉ trong một lĩnh vực chuyên biệt nào đó như là thiết kế mạch tích hợp cao (VLSI – very large scale integrated circuit). Ở đây chúng ta tiếp cận từ góc độ của người lập trình ứng dụng, đó là người sử dụng tất cả các hỗ trợ của phần cứng, các công cụ phần mềm để xây dựng nên các ứng dụng. Tuy nhiên để có thể thiết kế và cài đặt các chương trình ứng dụng đồ họa được tốt, ngoài việc tìm hiểu các khả năng của công cụ lập trình, chúng ta cũng cần phải nắm vững các khái niệm về phần cứng; các vấn đề, các nguyên lý liên quan đến cài đặt phần mềm, các thuật toán, các ứng dụng, … 1.2. Phần cứng đồ họa (GRAPHICS HARDWARE) 1.2.1. Các thành phần phần cứng của hệ đồ hoạ tương tác 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. 6 Hình 1.1 Các thành phần cứng của hệ đồ hoạ tương tác 1.2.2 Các thiết bị hiển thị Màn hình là thiết bị hiển thị thông dụng nhất trong một hệ đồ họa. +) Màn hình CRT (Cathode Ray Tube- Màn hình ống tia âm cực) Ống có cấu tạo chính là một ống thủy tinh kín chứa khí trơ ở áp suất thấp. Một đầu ống có gắn súng điện tử, đó là cực âm (cathod). Đầu kia là cực dương (anode) là màn hiện hình đó là một màn thủy tinh hình chữ nhật, mặt trong có quét một lớp bột photpho, hay gọi là huỳnh quang. Khi súng diện tử được đốt nóng ở điện áp cao (khoảng 15000 đến 20000 V) nó sẽ phát ra điện tử. Chùm điện tử này sẽ chạy suốt chiều dài ống bị hút về cực dương (anode) mang điện tích dương ở đầu kia của ống để cuối cùng đập mạnh lên màn huỳnh quang phủ photpho tạo ra một chấm sáng màn hình hiện hình. Bộ phận hội tụ có nhiệm vụ tập trung các hạt điện tử thành dòng sao cho khi đạt tới màn hình thì dòng này được hội tụ thành một chấm nhỏ. Để điều khiển tọa độ điểm sáng trên màn hinhfnta cần phải lái tia điện tử theo 2 trục tọa độ x và y của màn hình nhờ cuộn lái tia. Nguồn cao áp đặt giữa cathode và anode để tăng tốc tia điện tử bức xạ về phía màn hình. 7 Tại mỗi vị trí tương tác với tia điện tử hạt phosphor sẽ phát lên một chấm sáng nhỏ. Nhưng chấm sáng sẽ mờ dần rất nhanh nên cần có cách nào nó 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ũ. Gọi là làm tươi (refresh 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). Hình 1.2: Nguyên tắc tạo màu trong màn hình CRT Màn hình đơn sắc chỉ quét một loại photpho nên khi đập vào chỉ phát sáng một màu. Màn hình màu có 3 súng điện tử với 3 màu Red, Green, Blue. Màn hiện hình màu gồm nhiều cụm 3 điểm là 3 chấm photpho khác loại nên phát sáng theo 3 màu khác nhau red, Green, Blue. Thay đổi cường độ sáng của 3 màu này sẽ tạo ra màu bất kỳ. Ngay sát màn hiện hình về phía súng điện tử là một mặt nạ che (shadow). Đó là một tấm kim loại được khoanthungr nhiều lỗ để giúp các tia điện tử bắn đúng vị trí. Có 2 kiểu bố trí súng điện tử: tam giác và hàng ngang. 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. Thường dao động từ 12-27 inch, hoặc lớn hơn. 8 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. Màn hình dạng điểm (Raster Display): thường gặp nhất trong số các dạng màn hình sử dụng CRT trên công nghệ truyền hình. Mỗi điểm trên màn hình được gọi là pixel. +) Màn hình tinh thể lỏng (Liquid Crystal Display – LCD) Tinh thể lỏng được phát minh từ năm 1888, phân tử hữu cơ kết tinh khi ở trạng thái tự nhiên, hóa lỏng khi bị đốt nóng hay khi có trường điện từ. LCD đầu tiên: 1968 Lớp tinh thể lỏng trong LCD dày: 0.0005 inch. Nguyên tắc chung của màn LCD là ánh sáng muốn đến được mắt người sử dụng phải đi được qua hai lớp kính phân kính theo trục tung và hoành của hai màn hình chắn. Ở trạng thái bị kích hoạt bởi điện trường ánh sáng đi qua lớp tinh thể sẽ xoay đi một góc 90 0 so với trạng thái bình thường. Nhờ đó ánh sáng đi xuyên qua với mức độ sáng được kiểm soát bằng số lượng các phân tử tinh thể lỏng xoay tác động của điện trường. Quá độ giữa trạng thái tinh thể và trạng thái lỏng của LCD là tiến trình từ từ. LCD ở trạng thái”on” trong khoảng thời gian nhất định sau khi có trường điện từ. Do vậy tinh thể lỏng cần phải được làm tươi. 9 Hình 1.3 Công nghệ truyền ánh sáng trong màn hình tinh thể lỏng +) Màn hình tấm phẳng Loại máy tính laptop thường có màn hình tấm phẳng. Mỗi pixel được định địa chỉ bằng một đường dây lưới ngang và một đường dây đứng. Để “bật’một pixel, thì đường dây lưới ngang và đường dây lưới đứng tương ứng với pixel này được kích hoạt, tạo ra điện tường ở vị trí của pixel, làm cho nó thay đổi độ sáng. +) Màn hình plasma-panel Được hình thành từ khí neon giữa các tấm kính. Dãy các cực điện theo chiều ngang và dọc tạo thành các điểm trong neon. Để tạo các điểm riêng biệt ta tách khí thành các bọt. Các điểm neon trong tấm plasma được sáng do đốt cực bằng điện áp xấp xỉ 120V trên điện cực tương ứng. Sau khi cháy chỉ cần duy trì xấp xỉ 90V. 1.2.3. Các phương thức hiển thị 1.2.3.1 Phương thức hiển thị Raster Tia điện tử quét ngang trên màn hình từ trái qua 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. Mỗi điểm ảnh trên màn hình được gọi là pixel. 10 . thiết kế xylanh - Xây dựng giao diện người dùng (User Interface) 19 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ự. 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. Hình 1.8 : Giao