H Ọ C VI Ệ N CÔNG NGH Ệ B Ư U CHÍNH VI Ễ N THÔNG K Ỹ THU Ậ T ĐỒ H Ọ A (Dùng cho sinh viên h ệ đ ào t ạ o đạ i h ọ c t ừ xa) L ư u hành n ộ i b ộ HÀ N Ộ I - 2006 CuuDuongThanCong com https://fb com/tailieudientucntt H Ọ C VI Ệ N CÔNG NGH Ệ B Ư U CHÍNH VI Ễ N THÔNG K Ỹ THU Ậ T ĐỒ H Ọ A Biên so ạ n : THS TR Ị NH TH Ị VÂN ANH CuuDuongThanCong com https://fb com/tailieudientucntt L ờ i nói đầ u 3 L Ờ I NÓI ĐẦ U Hi ệ n nay đồ ho ạ máy tính (Computer Graphics) là m ộ t trong nh ữ ng ch ươ ng trình thông d ụ ng nh ấ t, nó đ ã góp ph ầ n quan tr ọ ng làm cho giao ti ế p gi ữ a con ng ườ i và máy tính tr ở nên thân thi ệ n h ơ n Th ậ t v ậ y, giao di ệ n ki ể u v ă n b ả n (text) đ ã đượ c thay th ế hoàn toàn b ằ ng giao di ệ n đồ ho ạ , cùng v ớ i công ngh ệ đ a ph ươ ng ti ệ n (multimedia) đ ã đư a ngành Công Ngh ệ Thông Tin sang m ộ t phiên b ả n m ớ i Cu ố n tài li ệ u gi ả ng d ạ y này, tôi mu ố n mang l ạ i cho b ạ n đọ c các c ơ s ở lý thuy ế t v ề đồ ho ạ máy tính t ừ đơ n gi ả n nh ấ t nh ư các thu ậ t toán v ẽ đườ ng th ẳ ng, đườ ng tròn, đ a giác, ký t ự Ti ế p đế n các k ỹ thu ậ t xén t ỉ a, các phép bi ế n đổ i đồ ho ạ trong không gian 2D và 3D Chúng ta l ầ n l ượ t làm quen v ớ i th ế gi ớ i màu s ắ c thông qua các h ệ màu: RGB, CMYK, HSV Ph ứ c t ạ p h ơ n n ữ a là các phép chi ế u, các ph ươ ng pháp xây d ự ng đườ ng cong và m ặ t cong cho đố i t ượ ng Tài li ệ u g ồ m b ả y ch ươ ng, trong đ ó ch ươ ng m ộ t giúp b ạ n có cái nhìn t ổ ng quan v ề k ỹ thu ậ t đồ ho ạ t ừ tr ướ c đế n gi ờ cùng đị nh h ướ ng t ươ ng lai cho l ĩ nh v ự c này Các ch ươ ng ti ế p theo, m ỗ i ch ươ ng s ẽ là m ộ t v ấ n đề t ừ đơ n gi ả n đế n ph ứ c t ạ p Cu ố i m ỗ i ch ươ ng đề u có ph ầ n bài t ậ p cho chúng ta ki ể m tra l ạ i ki ế n th ứ c v ừ a đọ c đượ c Bài t ậ p g ồ m hai d ạ ng: d ạ ng tính toán và d ạ ng l ậ p trình, đố i v ớ i d ạ ng l ậ p trình b ạ n có th ể vi ế t b ằ ng C/C++ hay BC th ậ m chí b ằ ng VB đề u đượ c Cu ố i cùng là ph ầ n ph ụ l ụ c g ồ m các h ướ ng d ẫ n để chúng ta làm bài t ậ p l ậ p trình, ngôn ng ữ hay dùng ở đ ây là C/C++ hay BC B ố c ụ c rõ ràng, hình ả nh phong phú, đ a d ạ ng Dù cho b ạ n ch ư a t ừ ng bi ế t v ề đồ ho ạ máy tính hay b ạ n đ ã nhi ề u n ă m làm vi ệ c trong l ĩ nh v ự c này, b ạ n đề u có th ể nh ậ n th ấ y r ằ ng cu ố n sách này là m ộ t b ộ tham kh ả o đầ y đủ các thông tin h ữ u ích và có tính ch ấ t th ự c ti ễ n cao Trong quá trình biên so ạ n m ặ c dù đ ã c ố g ắ ng h ế t s ứ c nh ư ng v ẫ n không tránh kh ỏ i nh ữ ng sai sót, r ấ t mong nh ậ n đượ c s ự đ óng góp chân thành t ừ quý b ạ n đọ c Xin chân thành cám ơ n Tác gi ả CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 4 CH ƯƠ NG 1: T Ổ NG QUAN V Ề K Ỹ THU Ậ T ĐỒ HO Ạ 1 CÁC KHÁI NI Ệ M T Ổ NG QUAN C Ủ A K Ỹ THU Ậ T ĐỒ HO Ạ MÁY TÍNH (COMPUTER GRAPHICS) 1 1 L ị ch s ử phát tri ể n - Graphics nh ữ ng n ă m 1950-1960 1959 Thi ế t b ị đồ ho ạ đầ u tiên là màn hình xu ấ t hi ệ n t ạ i Đứ c 1960 - SAGE (Semi-Automatic Ground Environment System) xu ấ t hi ệ n bút sáng thao tác v ớ i màn hình 1960 William Fetter nhà khoa h ọ c ng ườ i M ỹ , ô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 ỹ Ông đ ã d ự a trên hình ả nh 3 chi ề u c ủ a mô hình ng ườ i phi công trong bu ồ ng lái c ủ a 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 Ph ươ ng pháp này cho phép các nhà thi ế t k ế quan sát m ộ t cách tr ự c quan v ị trí c ủ a ng ườ i lái trong khoang Ông đặ t tên cho ph ươ ng pháp này là đồ ho ạ máy tính (Computer Graphics) Màn hình là thi ế t b ị thông d ụ ng nh ấ t trong h ệ đồ ho ạ , các thao tác c ủ a h ầ u h ế t các màn hình đề u d ự a trên thi ế t k ế ố ng tia âm c ự c CRT (Cathode ray tube) Khi đ ó giá để làm t ươ i màn hình là r ấ t cao, máy tính x ử lý ch ậ m, đắ t và không ch ắ c ch ắ n (không đ áng tin c ậ y) - Graphics: 1960-1970 1963 Ivan Sutherland (h ộ i ngh ị Fall Joint Computer - l ầ n đầ u tiên có kh ả n ă ng t ạ o m ớ i, hi ể n th ị và thay đổ i đượ c th ự c hi ệ n trong th ờ i gian th ự c trên màn CRT) H ệ th ố ng này đượ c dùng để thi ế t k ế m ạ ch đ i ệ n: CRT, LightPen (bút sáng), computer (ch ứ a ch ươ ng trình x ử lý 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 - Graphics: 1970-1980 Raster Graphics ( đồ ho ạ đ i ể m) B ắ t đầ u chu ẩ n đồ ho ạ ví d ụ nh ư : GKS(Graphics Kernel System): European effort (k ế t qu ả c ủ a châu âu), Becomes ISO 2D standard - Graphics: 1980-1990 M ụ c đ ích đặ c bi ệ t v ề ph ầ n c ứ ng, thi ế t b ị hình h ọ c đồ ho ạ Silicon Xu ấ t hi ệ n các chu ẩ n công nghi ệ p: PHIGS (Programmers Hierarchical Interactive Graphics Standard) xác đị nh các ph ươ ng pháp chu ẩ n cho các mô hình th ờ i gian th ự c và l ậ p trình h ướ ng đố i t ượ ng Giao di ệ n ng ườ i máy Human-Computer Interface (HCI) - Computer Graphics: 1990-2000 OpenGL API (Application Program Interface – giao di ệ n ch ươ ng trình ứ ng d ụ ng) Completely computer-sinh ra ngành đ i ệ n ả nh phim truy ệ n (Toy Story) r ấ t thành công Các ti ề m tàng ph ầ n c ứ ng m ớ i: Texture mapping (dán các ả nh c ủ a c ả nh th ậ t lên b ề m ặ t c ủ a đố i t ượ ng),blending (tr ộ n màu)… - Computer Graphics: 2000- nay CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 5 Ả nh hi ệ n th ự c các c ạ c đồ ho ạ cho máy tính (Graphics cards for PCs), game boxes and game players Công nghi ệ p phim ả nh nh ờ vào đồ ho ạ máy tính (Computer graphics becoming routine in movie industry): Maya (th ế gi ớ i v ậ t ch ấ t tri giác đượ c)… 1 2 K ỹ thu ậ t đồ h ọ a vi tính Definition (ISO): Ph ươ ng pháp và công ngh ệ chuy ể n đổ i d ữ li ệ u t ừ thi ế t b ị đồ ho ạ sang máy tính Computer Graphics là ph ươ ng ti ệ n đ a n ă ng và m ạ nh nh ấ t c ủ a giao ti ế p gi ữ a con ng ườ i và máy tính Computer Graphics (K ỹ thu ậ t đồ ho ạ máy tính) là 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 ữ , x ử lý Các mô hình (model) và hình ả nh (image) c ủ a đố i t ượ ng Các mô hình (model) và hình ả nh này có th ể là k ế t qu ả thu đượ c t ừ nh ữ ng l ĩ nh v ự c khác nhau c ủ a r ấ t nhi ề u ngành khoa h ọ c (v ậ t lý, toán h ọ c, thiên v ă n h ọ c…) Computer graphics x ử lý t ấ t c ả các v ấ n đề t ạ o ả nh nh ờ máy tính 2 CÁC K Ỹ THU Ậ T ĐỒ HO Ạ 2 1 K ỹ thu ậ t đồ ho ạ đ i ể m (Sample based-Graphics) - Các mô hình, hình ả nh c ủ a các đố i t ượ ng đượ c hi ể n th ị thông qua t ừ ng pixel (t ừ ng m ẫ u r ờ i r ạ c) - Đặ c đ i ể m: Có th ể thay đổ i thu ộ c tính + Xoá đ i t ừ ng pixel 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 đ i ể m (grid) các pixel r ờ i r ạ c, + T ừ ng pixel đề 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 ị (màu s ắ c ho ặ c độ sáng) + T ậ p h ợ p t ấ t c ả các pixel c ủ a grid cho chúng ta mô hình, hình ả nh đố i t ượ ng mà chúng ta mu ố n hi ể n th ị Hình 1 1 Ả nh đồ ho ạ đ i ể m CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 6 Bitmap Hình 1 2 K ỹ thu ậ t đồ ho ạ đ i ể m Ph ươ ng pháp để t ạ o ra các pixel - Ph ươ ng pháp dùng ph ầ n m ề m để v ẽ tr ự c ti ế p t ừ ng pixel m ộ t - D ự a trên các lý thuy ế t mô ph ỏ ng (lý thuy ế t Fractal, v v) để xây d ự ng nên hình ả nh mô ph ỏ ng c ủ a s ự v ậ t - Ph ươ ng pháp r ờ i r ạ c hoá (s ố hoá) hình ả nh th ự c c ủ a đố i t ượ ng - Có th ể s ử a đổ i (image editing) ho ặ c x ử lý (image processing) m ả ng các pixel 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 2 2 K ỹ thu ậ t đồ ho ạ vector Hình 1 3 Mô hình đồ ho ạ vector - Mô hình hình h ọ c (geometrical model) cho mô hình ho ặ c hình ả nh c ủ a đố i t ượ ng - Xác đị nh các thu ộ c tính c ủ a mô hình hình h ọ c này, SRP library Pascal C program X Window System Graphics hardware Image image formats, compression, transfer graphics algorithms colour positions Mô hình đồ h ọ a Tô trát Thi ế t b ị ra Các tham s ố tô trát CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 7 - Quá trình tô trát (rendering) để hi ể n th ị t ừ ng đ i ể m c ủ a mô hình, hình ả nh th ự c c ủ a đố i t ượ ng Có th ể đị nh ngh ĩ a đồ ho ạ vector: Đồ ho ạ vector = geometrical model + rendering So sánh gi ữ a Raster và Vector Graphics Đồ ho ạ đ i ể m(Raster Graphics) - Hình ả nh và mô hình c ủ a các v ậ t th ể đượ c bi ể u di ễ n b ở i t ậ p h ợ p các đ i ể m c ủ a l ướ i (grid) - Thay đổ i thu ộ c tính c ủ a các pixel => thay đổ i t ừ ng ph ầ n và t ừ ng vùng c ủ a hình ả nh - Copy đượ c các pixel t ừ m ộ t hình ả nh này sang hình ả nh khác Đồ ho ạ vector(Vector Graphics) - Không thay đổ i thu ộ c tính c ủ a t ừ ng đ i ể m tr ự c ti ế p - X ử lý v ớ i t ừ ng thành ph ầ n hình h ọ c c ơ s ở c ủ a nó và th ự c hi ệ n quá trình tô trát và hi ể n th ị l ạ i - Quan sát hình ả nh và mô hình c ủ a hình ả nh và s ự v ậ t ở nhi ề u góc độ khác nhau b ằ ng cách thay đổ i đ i ể m nhìn và góc nhìn Ví d ụ v ề hình ả nh đồ ho ạ Vector Hình 1 4 Ví d ụ v ề đồ ho ạ vector Muscle Model Wireframe Skeletal Skin Hair Render and Touch CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 8 2 3 Phân lo ạ i c ủ a đồ ho ạ máy tính Phân lo ạ i theo các l ĩ nh v ự c c ủ a đồ ho ạ máy tính Phân lo ạ i theo h ệ to ạ độ - 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 ệ to ạ độ 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 ệ to ạ độ ba chi ề u, đ òi h ỏ i r ấ t 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 Các l ĩ nh v ự c c ủ a đồ ho ạ 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 r ấ t 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 - 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 trí đượ 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 - 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 K ỹ thu ậ t phân tích và t ạ o ả nh Đồ ho ạ ho ạ t hình và ngh ệ thu ậ t K ỹ thu ậ t nh ậ n d ạ ng X ử lý ả nh Đồ ho ạ minh ho ạ CAD/CAM System K ỹ thu ậ t đồ ho ạ Ki ế n t ạ o đồ ho ạ X ử lý đồ ho ạ K ỹ thu ậ t đồ ho ạ K ỹ thu ậ t đồ ho ạ 2 chi ề u K ỹ thu ậ t đồ ho ạ 3 chi ề u CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 9 - Đồ 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 2 4 Các ứ ng d ụ ng tiêu bi ể u c ủ a k ỹ thu ậ t đồ h ọ a Đồ ho ạ 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 nó đ ã 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 c ủ a nó có th ể đượ c minh ho ạ r ấ t tr ự c quan thông qua các ứ ng d ụ ng c ủ a nó - Xây d ự ng giao di ệ n ng ườ i dùng (User Interface) Giao di ệ n đồ ho ạ th ự c s ự là 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 Giao di ệ n WYSIWYG và WIMP đ ang đượ c đ a s ố ng ườ i dùng ư u thích nh ờ tính thân thi ệ n, d ễ s ử d ụ ng c ủ a nó - T ạ o các bi ể u đồ trong th ươ ng m ạ i, khoa h ọ c, k ỹ thu ậ t 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 nghiên c ứ u, qu ả n lý m ộ t cách có hi ệ u qu ả - T ự độ ng hoá v ă n phòng và ch ế b ả n đ i ệ n t ử - Thi ế t k ế v ớ i s ự tr ợ giúp c ủ a máy tính (CAD_CAM) - L ĩ nh v ự c gi ả i trí, ngh ệ thu ậ t và mô ph ỏ ng - Đ i ề u khi ể n các quá trình s ả n xu ấ t (Process Control) - L ĩ nh v ự c b ả n đồ (Cartography) - Giáo d ụ c và đ ào t ạ o M ộ t s ố ví d ụ c ủ a ứ ng d ụ ng k ỹ thu ậ t đồ ho ạ : CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 10 Hình 1 5 Các ứ ng d ụ ng c ủ a k ỹ thu ậ t đồ ho ạ Hình 1 6 H ệ ứ ng d ụ ng CAD - CAM CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 11 2 5 Các chu ẩ n giao di ệ n c ủ a h ệ đồ ho ạ M ụ c tiêu c ă n b ả n c ủ a ph ầ n m ề m đồ ho ạ đượ c chu ẩ n là tính t ươ ng thích Khi các công c ụ đượ c thi ế t k ế v ớ i hàm đồ ho ạ chu ẩ n, ph ầ n m ề m có th ể đượ c di chuy ể n m ộ t cách d ễ dàng t ừ h ệ ph ầ n c ứ ng này sang h ệ ph ầ n c ứ ng khác và đượ c dùng trong nhi ề u cài đặ t và ứ ng d ụ ng khác nhau GKS (Graphics Kernel System): chu ẩ n xác đị nh các hàm đồ ho ạ chu ẩ n, đượ c thi ế t k ế nh ư m ộ t t ậ p h ợ p các công c ụ đồ ho ạ hai chi ề u và ba chi ề u GKS Functional Description, ANSI X3 124 - 1985 GKS - 3D Functional Description, ISO Doc #8805:1988 CGI (Computer Graphics Interface System): h ệ chu ẩ n cho các ph ươ ng pháp giao ti ế p v ớ i các thi ế t b ị ngo ạ i vi CGM (Computer Graphics Metafile): xác đị nh các chu ẩ n cho vi ệ c l ư u tr ữ và chuy ể n đổ i hình ả nh VRML (Virtual Reality Modeling Language): ngôn ng ữ th ự c t ạ i ả o, m ộ t h ướ ng phát tri ể n trong công ngh ệ hi ể n th ị đượ c đề xu ấ t b ở i hãng Silicon Graphics, sau đ ó đ ã đượ c chu ẩ n hóa nh ư m ộ t chu ẩ n công nghi ệ p PHIGS (Programmers Hierarchical Interactive Graphics Standard): xác đị nh các ph ươ ng pháp chu ẩ n cho các mô hình th ờ i gian th ự c và l ậ p trình h ướ ng đố i t ượ ng PHIGS Functional Description, ANSI X3 144 - 1985 + Functional Description, 1988, 1992 OPENGL th ư vi ệ n đồ h ọ a c ủ a hãng Silicon Graphics, đượ c xây d ự ng theo đ úng chu ẩ n c ủ a m ộ t h ệ đồ h ọ a n ă m 1993 DIRECTX th ư vi ệ n đồ ho ạ c ủ a hãng Microsoft, Direct X/Direct3D 1997 3 PH Ầ N C Ứ NG ĐỒ HO Ạ (GRAPHICS HARDWARE) 3 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 CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 12 Hình 1 7 Các thành ph ầ n c ứ ng c ủ a h ệ đồ ho ạ t ươ ng tác 3 2 Máy 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 8 - 20/ 100inch 200, 600 5/1000inch 1500 Máy v ẽ 6,15/1000 inch 1000, 2000 3 3 Màn hình CRT 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 cu ộ n lái tia d ẫ n đế n 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 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) CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 13 Hình 1 8 Công ngh ệ màn hình CRT 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 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 Các thông tin v ề ả nh hi ể n th ị trên màn hình đượ c l ư u tr ữ trong m ộ t vùng b ộ nh ớ g ọ i là vùng đệ m làm t ươ i (Refresh buffer) hay là vùng đệ m khung (Frame Buffer) Vùng l ư u tr ữ t ậ p các giá tr ị c ườ ng độ sáng c ủ a toàn b ộ các đ i ể m trên màn hình và luôn t ồ n t ạ i m ộ t cách song ánh gi ữ a m ỗ i đ i ể m trên màn hình và m ỗ i ph ầ n t ử trong vùng này SONY Trinitron NEC Hybrid Hitachi EDP Standard Dot-trio CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 14 Để t ạ o ra hình ả nh đ en tr ắ ng, đơ n gi ả n ch ỉ c ầ n l ư u thông tin c ủ a m ỗ i Pixel là m ộ t bít (0,1) (xem hình 1 9) Trong tr ườ ng h ợ p ả nh nhi ề u màu thì c ầ n nhi ề u bít h ơ n, n ế u thông tin m ỗ i pixel đượ c l ư u b ằ ng b bít thì ta có th ể có 2 b giá tr ị m ầ u phân bi ệ t cho pixel đ ó Trong các màn hình màu, ng ườ i ta đị nh ngh ĩ a t ậ p các màu làm vi ệ c trong m ộ t b ả ng tra (LookUp Table - LUT) M ỗ i ph ầ n t ử c ủ a LUT đượ c đị nh ngh ĩ a m ộ t b ộ ba giá tr ị (RGB) mô t ả m ộ t màu nào đ ó Khi c ầ n s ử d ụ ng m ộ t màu, ta ch ỉ c ầ n ch ỉ đị nh s ố th ứ t ự (index) t ươ ng ứ ng c ủ a màu đ ó trong LUT, s ố ph ầ n t ử trong b ả ng LUT chính là s ố màu có th ể đượ c hi ể n th ị cùng m ộ t lúc trên màn hình Ví d ụ mô hình đồ ho ạ đ i ể m ngôi nhà và ngôi sao Hình 1 9 Song ánh gi ữ a vùng đệ m khung và màn hình X: 0 ¸ Xmax2 màu/ 1 bit Y: 0 ¸ Ymax16 màu/ 4 bit ;256 màu/ 8bit 2 16 màu/ 16 bit ; 2 24 màu/ 24 bit 640 x 480 x 16 → Video RAM = 2MB 1024 x 1024 x 24 → Video RAM = 24MB Vi ệ c làm t ươ i trên màn hình d ạ ng này đượ c th ự c hi ệ n ở t ố c độ 60 - 80 frame/giây Đ ôi khi t ố c độ làm t ươ i còn đượ c bi ể u di ễ n b ằ ng đơ n v ị Hertz (Hz - s ố chu k ỳ trên/giây), trong đ ó m ộ t chu k ỳ t ươ ng ứ ng v ớ i m ộ t frame V ậ y t ố c độ làm t ươ i 60 frame/giây đơ n gi ả n là 60 Hz Khi đạ t đế n cu ố i m ỗ i dòng quét, tia đ i ệ n t ử quay tr ở l ạ i bên trái c ủ a màn hình để b ắ t đầ u dòng quét k ế ti ế p Vi ệ c quay tr ở v ề bên trái màn hình sau khi làm t ươ i m ỗ i dòng quét đượ c g ọ i là tia h ồ i ngang (Horizontal retrace) Và t ớ i cu ố i m ỗ i frame, tia đ i ệ n t ử (tia h ồ i d ọ c - Vertical retrace) quay tr ở l ạ i góc bên trái c ủ a màn hình để chu ẩ n b ị b ắ t đầ u frame k ế ti ế p Display processo Interface to host computer (Display commands) (interaction data) Keyboard Data input 000000000000000 000000000010000 00 000000000000000 Bitmap refresh buffer (the 1’s are accentuated for contrast) CRT CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 15 Hình 1 10 Quét mành và quét dòng c ủ a màn hình CRT Ví d ụ v ề vi ệ c tia quét trên màn hình CRT: MOVE 10,15 LINE 400,300 LINE 600,800 Refesh Buffer DrawLine(A, B): Turn beam off, move to A Turn beam on, move to B 3 4 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 Hình 1 11 Công ngh ệ truy ề n ánh sáng trong màn hình tinh th ể l ỏ ng CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 16 CRT Displays (màn hình CRT) Advantages ( ư u đ i ể m) Đ áp ứ ng nhanh (có độ phân gi ả i cao) Màu s ắ c đ a d ạ ng (Có độ sâu và r ộ ng) Màu s ắ c bão hoà và t ự nhiên Công ngh ệ không quá đắ t và hoàn thi ệ n Góc nhìn r ộ ng, t ươ ng ph ả n và độ sáng cao Disadvantages (nh ượ c đ i ể m) L ớ n và n ặ ng (typ 70x70 cm, 15 kg) Tiêu t ố n ngu ồ n đ i ệ n cao (typ 140W) Có h ạ i cho s ứ c kho ẻ vì tr ườ ng đ i ệ n t ừ và t ừ tính Màn hình nh ấ p nháy (at 50-80 Hz) Hình hay b ị méo t ạ i 4 góc LCD Displays (màn hình tinh th ể l ỏ ng) Advantages ( ư u đ i ể m) Hình dáng nh ỏ , tr ọ ng l ượ ng nh ẹ (approx 1/6 of CRT, typ 1/5 of CRT) Tiêu t ố n ngu ồ n th ấ p (typ 1/4 of CRT) Màn hình ph ẳ ng tuy ệ t đố i nên không méo t ạ i các góc Màu s ắ c đề u, ả nh sinh độ ng Không b ị hi ệ u ứ ng đ i ệ n t ừ tr ườ ng Có th ể màn hình v ừ a l ớ n v ừ a r ộ ng (>20 inch) Disadvantages (nh ượ c đ i ể m) Giá thành cao (presently 3x CRT) Góc nhìn h ẹ p h ơ n (typ +/- 50 degrees) độ t ươ ng ph ả n th ấ p (typ 1:100) độ chói ( độ ng ờ i) th ấ p h ơ n (typ 200 cd/m 2 ) Tóm t ắ t ch ươ ng: S ự ra đờ i c ủ a đồ ho ạ máy tính th ự c s ự là cu ộ c cách m ạ ng trong giao ti ế p gi ữ a ng ườ i dùng và máy tính V ớ i l ượ ng thông tin tr ự c quan, đ a d ạ ng và phong phú đượ c truy ề n t ả i qua hình ả nh Các ứ ng d ụ ng đồ ho ạ máy tính đ ã lôi cu ố n nhi ề u ng ườ i nh ờ tính thân thi ệ n, d ễ dùng, kích thích kh ả n ă ng sáng t ạ o và t ă ng đ áng k ể hi ệ u su ấ t làm vi ệ c Đồ ho ạ máy tính ngày nay đượ c đượ c ứ ng d ụ ng r ấ t r ộ ng rãi trong nhi ề u l ĩ nh v ự c khao h ọ c, k ỹ thu ậ t, ngh ệ thu ậ t, kinh doanh, qu ả n lý…Các ứ ng d ụ ng đồ ho ạ r ấ t đ a d ạ ng, phong phú và phát tri ể n liên t ụ c không ng ừ ng Ngày nay, h ầ u nh ư không có ch ươ ng trình ứ ng d ụ ng nào mà không s ử d ụ ng k ỹ thu ậ t đồ ho ạ để làm t ă ng tính h ấ p d ẫ n cho mình M ộ t h ệ th ố ng đồ ho ạ bao gi ờ c ũ ng g ồ m hai ph ầ n chính đ ó là ph ầ n c ứ ng và ph ầ n m ề m Ph ầ n c ứ ng bao g ồ m các thi ế t b ị hi ể n th ị (thi ế t b ị xu ấ t) và các thi ế t b ị nh ậ p Tiêu bi ể u nh ấ t là màn hình, có hai lo ạ i thông d ụ ng là CRT và LCD Bài t ậ p: 1 C ấ u t ạ o và nguyên lý ho ạ t độ ng c ủ a màn hình d ạ ng đ i ể m Nêu các khái ni ệ m vùng đệ m khung, độ phân gi ả i, t ỷ s ố ph ươ ng c ủ a màn hình lo ạ i này? 2 Ý ngh ĩ a và ho ạ t độ ng c ủ a b ả ng tra LUT? CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 1: T ổ ng quan v ề k ỹ thu ậ t đồ h ọ a 17 3 Tính Video Ram c ủ a các màn hình l ầ n l ượ t có độ phân gi ả i là 640x480, 1024x768, 1280x1024 mà có m ỗ i pixel đượ c mô t ả là 8bít, 12 bit, 24 bit 4 N ế u chúng ta dùng các giá tr ị 12bit cho m ỗ i pixel trong m ộ t b ả ng tham chi ế u lookup table, có bao nhiêu h ạ ng m ụ c mà lookup table có đượ c? 5 T ạ i sao ph ả i chu ẩ n hoá các ph ầ n m ề m? Li ệ t kê và tìm hi ể u các chu ẩ n hó ph ầ n m ề m đồ ho ạ Bài t ậ p tr ắ c nghi ệ m: 1 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 tròn b 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) c Hình ellipse đứ ng (bán kính theo tr ụ c x ng ắ n h ơ n bán kính theo tr ụ c y) d Hình thoi 2 Cho màn có độ phân gi ả i 1024x1024 và m ỗ i pixel đượ c mô t ả 24bít v ậ y video RAM c ủ a màn hình là: a 1048576 bít b 2MB c 3MB d 4MB 3 N ế u ta dùng các giá tr ị 24 bit cho m ỗ i pixel trong m ộ t b ả ng LUT Thì b ả ng LUT có s ố màu là: a 24 màu b 1024 màu c 16777216 màu d 16000000 màu CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 2: Các gi ả i thu ậ t sinh th ự c th ể c ơ s ở 18 CH ƯƠ NG 2: CÁC GI Ả I THU Ậ T SINH TH Ự C TH Ể C Ơ S Ở 1 CÁC ĐỐ I T ƯỢ NG ĐỒ HO Ạ C Ơ S Ở 1 1 H ệ to ạ độ th ế gi ớ i th ự c và h ệ to ạ độ thi ế t b ị a H ệ to ạ độ th ế gi ớ i th ự c (WCS: World Coordinate System) WCS hay h ệ to ạ độ th ự c là h ệ to ạ độ đượ c dùng mô t ả các đố i t ượ ng trong th ế gi ớ i th ự c M ộ t trong h ệ to ạ độ th ự c đượ c dùng nhi ề u nh ấ t là h ệ to ạ độ Descartes B ấ t kì đ i ể m nào trong m ặ t ph ẳ ng đượ c mô t ả b ằ ng c ặ p to ạ độ (x,y) trong đ ó x,y ∈ R G ố c to ạ độ là đ i ể m O có to ạ độ (0,0), Ox,Oy l ầ n l ượ t là tr ụ c hoành và tr ụ c tung và x,y là hoành độ và tung độ Các to ạ độ th ế gi ớ i th ự c cho phép ng ườ i s ử d ụ ng b ấ t kì m ộ t th ứ nguyên (dimension) qui ướ c: foot, cm, nm, km, inch tu ỳ ý b H ệ to ạ độ thi ế t b ị (DCS: Device Coordinate System) H ệ to ạ độ thi ế t b ị là h ệ to ạ độ đượ c dùng b ở i m ộ t thi ế t b ị xu ấ t c ụ th ể nào đ ó nh ư máy in, màn hình Các đ i ể m đượ c bi ể u di ễ n b ở i c ặ p to ạ độ (x,y), nh ư ng x,y ∈ N Đ i ể m trong to ạ độ th ự c đượ c đị nh ngh ĩ a liên t ụ c, còn trong to ạ độ thi ế t b ị thì r ờ i r ạ c do tính ch ấ t c ủ a t ậ p các s ố t ự nhiên Các to ạ độ (x,y) có gi ớ i h ạ n trong m ộ t kho ả ng nào đ ó 1 2 Đ i ể m và đ o ạ n th ẳ ng a Đ i ể m Trong h ệ to ạ độ hai chi ề u (x,y), ngoài ra nó còn có tính ch ấ t màu s ắ c b Đ o ạ n th ẳ ng + Bi ể u di ễ n t ườ ng minh: y = f(x) M ộ t đ o ạ n th ẳ ng đượ c xác đị nh n ế u bi ế t 2 đ i ể m thu ộ c nó Ph ươ ng trình đ o ạ n th ẳ ng đ i qua 2 đ i ể m P (x1,y1) và Q(x2,y2) nh ư sau: (y-y 1 )/( x-x 1 ) = ( y 2 -y 1 )/( x 2 -x 1 ) (y-y 1 )(x 2 -x 1 )=(x-x 1 )(y 2 -y 1 ) (x 2 -x 1 )y=(y 2 -y 1 )x + y 1 (x 2 -x 1 ) - x 1 (y 2 -y 1 ) y = ((y 2 -y 1 )/(x 2 -x 1 ))x + y 1 - ((y 2 -y 1 )/(x 2 -x 1 ))x 1 y = kx + m k = (y 2 -y 1 )/(x 2 -x 1 ) Độ d ố c hay h ệ s ố góc c ủ a đườ ng m = y 1 - kx 1 Đ o ạ n ch ắ n trên tr ụ c y Δ y = k Δ x (t ứ c là khi x thay đổ i thì y thay đổ i theo) Hình 2 1 V ẽ đ o ạ n th ẳ ng PQ + Bi ể u di ễ n không t ườ ng minh: ax+by+c=0 m P( x 1 , y 1 ) Q( x 2 , y 2 ) CuuDuongThanCong com https://fb com/tailieudientucntt Ch ươ ng 2: Các gi ả i thu ậ t sinh th ự c th ể c ơ s ở 19 Ta có (y 2 -y 1 )x - (x 2 -x 1 )y + (x 2 -x 1 )y 1 - (y 2 -y 1 )x 1 = 0 (y 2 -y 1 )x - (x 2 -x 1 )y + x 2 y1 - x 1 y 2 = 0 hay rx + sy + t = 0 s = -(x 2 -x 1 ) r = (y 2 -y 1 ) và t = x 2 y 1 - x 1 y2 + Bi ể u di ễ n thông qua tham s ố : P(u) = P 1 + u(P 2 - P 1 )u ∈ [0,1] x(u) = x 1 + u( x 2 - x 1 ) y (u)= y 1 + u( y 2 - y 1 ) 2 CÁC GI Ả I THU Ậ T XÂY D Ự NG TH Ự C TH Ể C Ơ S Ở 2 1 Gi ả i thu ậ t v ẽ đ o ạ n th ẳ ng thông th ườ ng Nguyên lý chung: cho m ộ t thành ph ầ n to ạ độ x hay y bi ế n đổ i theo t ừ ng đơ n v ị và tính độ nguyên còn l ạ i sao cho g ầ n v ớ i to ạ độ th ự c nh ấ t Ta có ( ) 1 1 1 2 1 2 y x x x x y y y − − − − = Cho x thay đổ i tìm y, trong bài này cho x 1 thay đổ i ti ế n t ớ i x 2 ta ch ọ n đơ n v ị nh ỏ nh ấ t c ủ a màn hình Δ x=1 Gi ả i thu ậ t thông th ườ ng: void dline(int x1,int y1, int x2,int y2, int color) { float y; int x; for (x=x1; x