Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 126 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
126
Dung lượng
5,02 MB
Nội dung
TRƯ NG Đ I H C ĐÀ L T KHOA CÔNG NGH THÔNG TIN ThS. VÕ PHƯƠNG BÌNH GIÁO TRÌNH Đ H A MÁY TÍNH Dành cho sinh viên ngành: Công ngh ph n m m, M ng và truy n thông Đà L t, 2010 M CL C M U 4 Chương 1 GI I THI U V H A MÁY TÍNH 5 1.1 T ng quan h a máy tính 5 1.2 Các thành ph n cơ b n c a h h a máy tính 7 1.3 H t a th gi i th c, h t a thi t b và h t a chu n 7 Chương 2 CÁC THU T TOÁN V I TƯ NG H A CƠ B N 11 2.1 Thu t toán v o n th n g 11 2.1.1 Thu t toán DDA (Digital DifferentialAnalyzer) 12 2.1.3 Thu t toán MidPoint 17 2.2 Thu t toán MidPoint v ư ng tròn 23 2.3 Thu t toán MidPoint v Ellipse 27 2.4. ư ng cong tham s 31 2.4.1. ư ng cong Bezier 31 2.4.1.1. Thu t toán de Casteljau 31 2.4.1.2. Thu t toán Horner 34 2.4.2. ư ng cong B-Spline 37 Bài t p chương 2 42 Chương 3 TÔ MÀU 44 3.1 Gi i thi u v màu s c 44 3.2 Tô màu ơn gi n 44 3.3 Tô màu theo dòng quét (ScanConvert) 48 3.4 Tô màu theo v t d u loang (FloodFill) 52 Bài t p chương 3 54 Chương 4 PHÉP BI N I HAI CHI U 55 4.1 Nh c l i các phép toán cơ s v i ma ma tr n. . 55 4.2 Phép t nh ti n 56 4.3 Phép bi n i t l 57 4.4 Phép quay 57 4.5 Phép i x ng 60 4.6 Phép bi n d ng 60 Giáo trình H a Máy Tính 2 4.7 Phép bi n i Affine ngư c 61 4.8 H t a thu n nh t 62 4.9 K t h p các phép bi n i 63 Bài t p chương 4 64 Chương 5 GIAO CÁC I TƯ NG H A 66 5.1. M u 66 5.2. Giao c a hai o n th ng 67 5.3. o n th ng và hình ch nh t 68 5.3.1 Tìm giao b ng cách gi i h phương trình 69 5.3.2 Thu t toán chia nh phân 69 5.3.3 Thu t toán Cohen-Sutherland 72 5.3.4 Thu t toán Liang-Barsky 74 5.4. Giao c a o n th ng và a giác l i 77 5.5. Giao hai a giác 80 5.6. K thu t Ray tracing 85 Chương 6 H A BA CHI U 91 6.1. Gi i thi u h a 3 chi u 91 6.2. Bi u di n i tư ng 3 chi u 92 6.3. Các phép bi n i 3 chi u 98 6.3.1. H t a bàn tay ph i - bàn tay trái 98 6.3.2. Các phép bi n i Affine cơ s 99 6.3.2.1 Phép quay quanh tr c x 99 6.3.2.2 Phép quay quanh tr c y 100 6.3.2.3 Phép quay quanh tr c z 100 6.3.2.4 Phép quay quanh tr c song song v i tr c t a 101 6.3.2.5 Phép quay quanh tr c b t kỳ 103 PH L C: THƯ VI N H A OpenGL .107 TÀI LI U THAM KH O 120 Giáo trình H a Máy Tính 3 M U h a máy tính là m t trong nh ng lĩnh v c h p d n và phát tri n nhanh c a Công ngh Thông tin. Nó ư 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, và ư c s d ng r ng rãi trong h u h t các ng d ng như khoa h c và công ngh , y h c, giáo d c, ki n trúc, và k c gi i trí. Ngày nay, nh vào s ti n b c a khoa h c k thu t nên ph n c ng và giá thành c a máy tính càng lúc càng phù h p, các k thu t h a ư c ng d ng trong th c t nhi u nên ngày càng có nhi u ngư i quan tâm nghiên c u n lĩnh v c này. Tuy nhiên, vi c d y và h c k thu t h a mày tính thì không ơn gi n vì ch này có nhi u v n ph c t p, liên quan n tin h c và c toán h c. H u h t các gi i thu t v , tô màu 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. Giáo trình h a máy tính này ư c xây d ng d a trên kinh nghi m gi ng d y ã qua và 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”. Giáo trình h a máy tính là m t môn h c ư c gi ng d y cho sinh viên chuyên ngành Công ngh Thông tin v i 45 ti t lý thuy t và 30 ti t th c t p. N i dung c a giáo trình này g m có 3 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 Bezier, B-Spline. Các thu t toán này giúp cho sinh viên có th t thi t k v và tô màu m t mô hình h a. • N i dung th hai c p n các phép bi n i Affine, tìm giao các i tư ng, tô màu c a h a hai chi u. • N i dung th ba trình bày v quan sát, hi n th và bi n i Affine trên không gian ba chi u. Trong quá trình biên so n ch c không tránh kh i thi u sót, tôi xin trân tr ng nh n ư c s góp ý c a các quý ng nghi p và sinh viên giáo trình ngày càng ư c hoàn thi n hơn. Giáo trình H a Máy Tính 4 Ch ươ ng 1 GI I THI U V H A MÁY TÍNH N i dung chính T ng quan v h a máy tính. Các ng d ng c a h a máy tính. Các thành ph n cơ b n c a h h a máy tính. H t a th c và h t a h a. 1.1 T ng quan h a máy tính h a máy tính bao g m 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 n công vi c này bao g m: t o, lưu tr , thao tác trên các mô hình và các nh. Ngày nay, h u h t các chương trình so n th o, b ng tính s d ng h a trong giao di n v i ngư i dùng. S phát tri n c a h a máy tính ngày càng r ng rãi v i các ch h a hai chi u (2D) và 3 chi u (3D), và cao hơn, nó ph c v trong các lĩnh v c xã h i h c khác nhau như khoa h c, giáo d c, y h c, k thu t, thương m i và gi i trí. 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ó. h a máy tính ư c s d ng r t r ng rãi vì có n 80% các ng d ng liên quan n hình nh và ư c ng d ng trong nhi u lĩnh v c khác nhau như công nghi p, thương m i, qu n lý, giáo d c, gi i trí, …v.v. S lư ng các chương trình h a ng d ng r t l n và phát tri n liên t c. Sau ây là m t s ng d ng tiêu bi u c a h a trong th c t : • H tr thi t k - CAD/CAM (Computer-Aided Design/ Computer-Aided Manufacturing) : Các h th ng thi t k và ch t o v i s tr giúp c a máy tính ư c ng d ng trong các lĩnh v c như phân tích thi t k k t c u xây d ng, công nghi p i n t , công nghi p th i trang, các ngành công nghi p ch t o ôtô, máy bay, xe máy Giáo trình H a Máy Tính 5 • th và b n (Graphs and Charts) : ây là ng d ng ch y u trong lĩnh v c h a minh h a, ng d ng này cho phép hi n th các bi u d li u cũng như trong lĩnh v c bi u di n và x lý h a. M t trong s nh ng ng d ng hi n nay là h th ng thông tin a lí GIS (Geographical Information System).: • Gi i trí: V i s h tr h a hi n nay chúng ta có th s n xu t nhi u s n ph m ph c v cho lĩnh v c gi i trí c bi t là phim ho t hình và các trò chơi trên máy tính. Nhi u ph n m m và ngôn ng l p trình h tr ra i cho phép ta t o ra các hình nh ng g n v i v i cu c s ng th c. Trong giáo trình này chúng ta s làm quen v i công c OpenGL. • ng d ng mô ph ng và th c t i o (Simulation and Virtual Reality) : Bên c nh vi c h tr thi t k ki n trúc và trong s n xu t công nghi p, h a máy tính còn có ng d ng r t quan tr ng trong mô ph ng các công trình ki n trúc, các di s n văn hóa, trong gi ng d y các môn h c. ng d ng th c t i o là m c cao hơn c a mô ph ng. Th c t i o áp d ng các k thu t h ak th pv i các thi t b 3D t o ra các ng d ng mô ph ng gi ng như th c nhưng ư c th c hi n trên máy tính như lái máy bay, b n súng trong quân s , gi i ph u trong y khoa, …. • X lý nh (Image Processing) : Các kĩ thu t x lý và thay i m t b c nh có s n và ư c áp d ng trong nhi u lĩnh v c c a i s ng. Ví d ta có th s d ng ph n m m khôi ph c m t b c nh, phân tích các b c nh ư c ch p t v tinh • K ĩ thu t nh n d ng (Pattern Recognition) : ây là m t lĩnh v c c a kĩ thu t x lí nh, các chuyên gia s xây d ng m t thư vi n nh g c b ng cách áp d ng các thu t toán phân tích và ch n l c t nh ng nh m u có s n. D a trên thư vi n ó các chuyên gia có th phân tích và t h p nh • Giao di n h a ng ư i dùng (Graphical User Interface-GUI) : R t nhi u ph n m m ng d ng ngày nay cung c p GUI cho ngư i dùng. Thành ph n chính c a m t giao di n h a ó là chương trình qu n lí c a s cho phép ngư i s d ng hi n th nhi u c a s ngư i ta g i ó là các c a s hi n th . Nh có GUI mà ngư i s d ng có th d dàng thi t k giao di n cho các chương trình ng d ng. Giáo trình H a Máy Tính 6 1.2 Các thành ph n c ơ b n c a h h a máy tính phát tri n h th ng h a máy tính ta c n ph i trang b c ph n c ng l n ph n m m cũng như các ng d ng khác. Trong ó, các thi t b ph n c ng là tùy thu c vào t ng ng d ng h a c th mà có th c n thi t ho c không c n thi t. Ph n c ng • Thi t b thu nh n: l y d li u u vào cho ng d ng h a như bàn phím, chu t, máy quét, camera, • Thi t b hi n th : hi n th hình nh c a ng d ng h a như các lo i màn hình CRT, LCD, … • Thi t b tương tác: làm giao ti p trung gian gi a ngư i dùng và các ng d ng h a th c t i o, t o c m giác ngư i dùng gi ng như thao tác tr c ti p trong môi trư ng th gi i th c như găng tay, kính 3D, … Ph n m m Ph n m m h a có th phân thành 2 lo i: các công c l p trình và các trình ng d ng h a ph c v cho m t m c ích nào ó. Các công c l p trình cung c p m t t p các thư vi n h a có th ư c dùng trong các ngôn ng l p trình c p cao như Pascal, C/C++/C#, Java, … hay th m trí có c m t thư viên h a có th nhúng vào các ngôn ng l p trình c p b t kỳ như OpenGL, DirectX. Các hàm cơ s c a nó bao g m vi c t o các i tư ng cơ s c a hính nh như o n th ng, a giác, ư ng tròn, … thay i màu s c, ch n khung nhìn, bi n i affine, … phát tri n các ng d ng h a máy tính c n có các lo i ph n m m sau: • T o mô hình: 3DS Max, Maya, … • L p trình, phát tri n ng d ng: OpenGL, DirectX, … 1.3 H t a th gi i th c, h t a thi t b và h t a chu n M th h a bao g m 3 mi n như sau: • Mi n i u khi n : bao b c toàn b h th ng. Giáo trình H a Máy Tính 7 • Mi n th c : n m trong mi n i u khi n. Khi m t giá tr n m trong 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. • 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ó giá tr s nguyên m i n m trong mi n hi n th . Trong lĩnh v c k thu t h a, chúng ta ph i hi u ư c r ng th c ch t c a h a là làm th nào có th mô t và bi n i ư c các i tư ng trong th gi i th c trên máy tính. Các i tư ng trong th gi i th c ư c mô t b ng t a trong mi n th c. Trong khi ó, h t a thi t b l i s d ng h t a nguyên hi n th các hình nh. ây chính là v n cơ b n c n gi i quy t. Ngoài ra, còn có m t khó khăn khác n a là v i các thi t b khác nhau thì có các c trưng v thông s k thu t khác nhau. Do ó, c n có m t phương pháp chuy n i tương ng gi a các h t a và i tư ng có th mô t g n úng v i hình nh th c bên ngoài. Hai mô hình cơ b n c a ng d ng h a là d a trên m u s hóa và d a trên c trưng hình h c. Trong ng d ng h a d a trên m u s hóa thì các i tư ng h a ư c t o ra b i lư i các pixel r i r c. Các pixel này có th ư c t o ra b ng các chương trình v , máy quét, Các pixel này mô t t a xác nh v trí và giá tr m u. Thu n l i c a ng d ng này là d dàng thay i hình nh b ng cách thay i màu s c [...]... y =y0; Giáo trình H a Máy Tính glVertex2i(x, y); while (x 1: x = x – i+1 i y i+1 =y –1 i Hình 2.2 : Hai trư ng h p m >1 và 0 < m < 1 Cài t minh h a thu t toán DDA 12 void DDALine(int x0, int y0, int x1, int y1) { int x; float dx, dy, y, m; dx:= x1 – x0; dy:= y1 – y0; m:= dy/dx; y = y0; for (x=x0; x b2(x+1)) {Vùng 1} { Giáo trình H a Máy Tính If (d10) / {Vùng 2} { if (d2 . viên giáo trình ngày càng ư c hoàn thi n hơn. Giáo trình H a Máy Tính 4 Ch ươ ng 1 GI I THI U V H A MÁY TÍNH N i dung chính T ng quan v h a máy tính. Các . n cho các chương trình ng d ng. Giáo trình H a Máy Tính 6 1.2 Các thành ph n c ơ b n c a h h a máy tính phát tri n h th ng h a máy tính ta c n ph . ng d ng c a h a máy tính. Các thành ph n cơ b n c a h h a máy tính. H t a th c và h t a h a. 1.1 T ng quan h a máy tính h a máy tính bao g m t t c