Giáo trình Đồ họa máy tính - Võ Phương Bình
Đồ 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.
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.
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Đồ họa máy tính - Võ Phương Bình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- giao_trinh_do_hoa_may_tinh_vo_phuong_binh.pdf
Nội dung text: Giáo trình Đồ họa máy tính - Võ Phương Bình
- Ch ng 2 CÁC THU T TOÁN V I T NG H A CƠ B N N i dung chính Các thu t toán v o n th ng: DDA, Bresenham, MidPoint. Thu t toán MidPoint v ng tròn, ellipse. V ng cong tham s Bezier, B-Spline. 2.1 Thu t toán v o n th ng Hình 2.1: Các i m g n o n th ng th c Xét o n th ng có h s góc m (0, 1] và x > 0. V i các o n th ng d ng này, n u ( xi, yi) là i m ã c xác nh b c th i thì i m k ti p ( xi+ 1, yi+1 ) b c th i+1 s là m t trong hai i m sau: V n t ra là ch n i m v nh th nào o n th ng c v g n v i o n Giáo trình H a Máy Tính 11
- th ng th c nh t và t i u hóa v m t t c , th i gian th c. 2.1.1 Thu t toán DDA (Digital DifferentialAnalyzer) DDA (hay còn g i là thu t toán s gia) là thu t toán v o n th ng xác nh các i m d a vào h s góc c a ph ng trình ng th ng y = m.x + b. Trong ó, m = y/ x, y = yi+ 1 - yi , x = xi+ 1 - xi. Nh n th y trong hình v 2.1 thì t a c a i m x s t ng 1 n v trên m i i m v , còn vi c quy t nh ch n yi là yi + 1 hay yi s ph thu c vào giá tr sau khi làm tròn c a tung y. Tuy nhiên, n u tính tr c ti p giá tr th c c a y m i b c t ph ng trình y = m.x + b thì c n m t phép toán nhân và m t phép toán c ng s th c: yi+ 1 = m.xi+ 1 + b = m(xi + 1) + b = m.xi + b + m t i u t c , ng i ta kh phép nhân trên s th c. Ta có : yi = m.xi + b ⇒ yi+1 = y i + m • Tóm l i, khi 0 1: ch n b c t ng trên tr c y m t n v . xi+1 = x i + yi+ 1 = y i + 1 Hai tr ng h p này dùng v m t i m b t u t bên trái n i m cu i cùng bên ph i c a ng th ng (xem hình 2.2). N u i m b t u t bên ph i n i m cu i cùng bên trái thì xét ng c l i : • 0 < m 1: xi+ 1= x i – 1 Giáo trình H a Máy Tính 12
- yi+ 1:= y i - m • m > 1: xi+ 1 = xi – yi+ 1 = y i – 1 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 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 <= x1; x++) { glVertex2i(x, Round(y)); Giáo trình H a Máy Tính 13
- y = y+m } } T ng t , ta có th tính toán các i m v cho tr ng h p m 1. 2.1.2 Thu t toán Bresenham Hình 2.3 : Thu t toán Bresenham v o n th ng có 0 ≤ m ≤ 1. G i ( xi +1, yi +1 ) là i m thu c o n th ng (xem hình 2.3). Ta có y = m (xi +1) + b. t d1 = y i +1 - yi ; d2 = (yi +1) - yi +1 Vi c ch n i m ( xi +1 , yi +1 ) là P1 hay P2 ph thu c vào vi c so sánh d1 và d2 hay d u c a d1 - d2 : • N u d1 - d2 < 0 : ch n i m P1, t c là y i +1 = yi • N u d1 - d2 0 : ch n i m P2, t c là y i +1 = yi +1 Xét Pi = x(d1 - d2) Ta có : d1 - d2 = 2 yi+1 - 2yi - 1 = 2 m(xi+1) + 2b - 2yi - 1 Giáo trình H a Máy Tính 14
- ⇒ Pi = x(d1 - d2) = x[2 m(xi+1) + 2 b - 2yi - 1] = x[2( y/ x)(xi+1) + 2 b - 2yi - 1] = 2 y(xi+1) - 2 x.yi + x(2 b - 1) = 2 y.xi - 2 x.yi + 2 y + x(2.b - 1) V y C = 2 y + x(2 b - 1) = Const (h ng s ) ⇒ Pi = 2 y.xi - 2 x.yi + C Nh n xét r ng n u t i b c th i ta xác nh c d u c a Pi thì xem nh ta xác nh c i m c n ch n b c ( i + 1). Ta có : Pi +1 - Pi = (2 y.x i+1 – 2 x.y i+1 + C ) - (2 y.x i - 2 x.y i + C ) ⇔ Pi +1 = Pi + 2 y – 2 x( yi+1 - yi ) - N u Pi < 0 : ch n i m P1, t c là yi +1 = yi và Pi +1 = Pi + 2 y. - N u Pi 0 : ch n i m P2, t c là yi +1 = yi +1 và Pi +1 = Pi + 2 y – 2 x - Giá tr P0 c tính t i m v u tiên ( x0, y0) theo công th c : P0 = 2 y.x 0 – 2 x.y 0 + C Do (x0, y0) là i m nguyên thu c v o n th ng nên ta có : y0 = 2m.x 0 + b = x0 + b Th vào ph ng trình trên ta c : P0 = 2 y – x Cài t minh h a thu t toán Bresenham void Bresenham_Line (int x1,int y1,int x2,int y2) Giáo trình H a Máy Tính 15
- { int dx, dy, x, y, P, incre1, incre2; dx = x2 - x1; dy = y2 - y1; P = 2*dy - dx; incre1 = 2*dy ; incre2 = 2*(dy - dx) ; x= x1; y=y1; glVertex2i(x, y); while (x < x2 ) { x = x +1 ; if (P < 0) P = P + incre1 else { y = y+1 ; P = P + incre2 } glVertex2i(x, y); } } Giáo trình H a Máy Tính 16
- Nh n xét - Thu t toán Bresenham ch thao tác trên s nguyên và ch tính toán trên phép c ng và 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ày là 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 Pi +1 - Pi tính Pi b ng các phép toán n gi n trên s nguyên. - Tuy nhiên, vi c xây d ng tr ng h p t ng quát cho thu t toán Bresenham có ph c t p h n thu t toán DDA. 2.1.3 Thu t toán MidPoint Pitteway công b thu t toán MidPoint vào 1967, Van Aken c i ti n 1984. Xét h s góc thu c [0, 1]. Gi thi t r ng ã ch n P v , xác nh pixel ti p theo s là t i N hay NE (xem hình 2.4). Giao c a ng th ng v i Xp+1 t i Q, M là trung i m c a NE và E. Hình 2.4: Thu t toán MidPoint v o n th ng Ý t ng c a thu t toán MidPoint là xét i m M xem n m phía nào c a ng th ng, n u M n m phía trên ng th ng thì ch n E (t c là ng th ng g n v i E h n NE ), ng c l i ch n NE . Vì v y, ta c n xác nh v trí t ng i c a M so v i ng th ng ch a o n th ng c n v . • Phân tích thu t toán v o n th ng d a trên ph ng trình d ng t ng quát c a Giáo trình H a Máy Tính 17