Full Giáo Trình Đồ Họa Hướng Dẫn Đầy Đủ

146 270 0
Full Giáo Trình Đồ Họa Hướng Dẫn Đầy Đủ

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giáo trình Đồ họa máy tính 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; PrenticeHall, 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

Trường Đại học Khoa học Huế Khoa CNTT  Giáo trình Huãú, thaïng 9 nàm 2011 Trang 1 Chương I: Các yếu tố cơ sở của đồ hoạ I. Các khái niệm cơ bản I.1. Thiết bị đồ hoạ và điểm ảnh (Pixel) Các thiết bị đồ hoạ thông dụng như màn hình máy tính, máy in,… cho phép chúng ta biểu diễn các hình vẽ trên đó. Các thiết bị đồ hoạ này tạo ra mặt phẳng, đó là một tập hữu hạn các điểm mà mỗi điểm được đánh một cặp chỉ số nguyên gọi là toạ độ, thông thường mặt phẳng đồ hoạ do thiết bị tạo ra là một ma trận điểm, mỗi điểm gọi là một Pixel có các thành phần toạ độ là x và y. Hình I-1. Minh họa việc hiển thị hình ảnh đồ họa trên thiết bị I.2. Điểm và Đoạn thẳng trong mặt phẳng Về mặt toán học thì một đoạn thẳng bao gồm một tập vô hạn các điểm trong mặt phẳng với cặp toạ độ thực. Song do đặc điểm của các thiết bị hiển thị nên khi biểu diễn trên thiết bị hiển thị của máy tính (như màn hình, máy in,…) thì được nguyên hoá thành một tập hữu hạn các cặp toạ độ nguyên (Hình I.1). Chổồng 1: Caùc yóỳu tọỳ cồ sồớ cuớa õọử hoỹa - Nguyóựn Hổợu Taỡi Trang 2 II. Cỏc thut toỏn v on thng Phng trỡnh tng quỏt ca mt ng thng c vit di dng: y=a*x+b vi a: l h s gúc hay cũn gi l dc, nú phn ỏnh mi tng quan gia 2 bin s x v y. b: l khong chn trờn trc honh Phng trỡnh ng thng i qua 2 im A(x a ,y a ) v B(x b ,y b ) l: ab a ab a xx xx yy yy (II.a) (vi x a <>x b v y a <>y b . Khi x a =x b thỡ phng trỡnh l x=x a cũn khi y a =y b phng trỡnh l y=y a ) t ab ab yyy xxx thỡ (II.a) tr thnh aa yx x y x x y y baxy vi aa yaxb x y a (II.b) II.1. V on thng da vo phng trỡnh Khi bit c phng trỡnh ca mt ng chỳng ta hon ton cú th v c ng biu din cho ng ú nh vo cỏc tớnh toỏn trờn phng trỡnh. õy ng m ta cn biu din l mt on thng AB vi A(x a ,y a ) v B(x b ,y b ). Phng trỡnh biu din c cho bi (II.b) vi baba yyyxxx ,;, Quy trỡnh cú th túm tt nh sau: Nu xy : ngha l bin s x bin thiờn nhanh hn bin s y, lỳc ny m bo tớnh liờn tc ca cỏc im v ta cho bin s x thay i tun t v tớnh bin s y qua phng trỡnh. C th nh sau: Chæång 1: Caïc yãúu täú cå såí cuía âäö hoüa - Nguyãùn Hæîu Taìi Trang 3 Cho x nhận các giá trị nguyên lần lượt từ x a đến x b , với mỗi giá trị x ta thực hiện:  Tính y=ax+b thông qua phương trình  Vẽ điểm (x,Round(y)). Ở đây điểm trên đoạn thẳng có toạ độ là (x,y) song ta không thể vẽ điểm đó vì giá trị y là một giá trị thực, mà như đã nói ở mục I là các hệ thống biểu diễn đồ hoạ chỉ có hữu hạn điểm và mỗi điểm có toạ độ nguyên, Vì thể ta buột phải minh hoạ cho điểm (x,y) trên đường thẳng thực bởi một điểm trên hệ thống thiết bị đồ hoạ gần với nó nhất đó là điểm có toạ độ (x,round(y)).  Ngược lại: nghĩa là biến số y biến thiên nhanh hơn biến số x, lúc này để đảm bảo tính liên tục của các điểm vẽ ta cho biến số y thay đổi tuần tự và tính biến số x qua phương trình. Cụ thể như sau: Cho y nhận các giá trị nguyên lần lượt từ y a đến y b , với mỗi giá trị y ta thực hiện:  Tính x= a by  (hay aa xy y x y y x x        )  Vẽ điểm (Round(x),y).  Ví dụ: Cho A(5,4) đến B(10,7) để vẽ đoạn thẳng AB ta thực hiện các bước sau: Tính 347 5510   ab ab yyy xxx           1 5 3 aa yaxb x y a Vì xy  nên ta thực hiện theo cách 1 là cho x nhận các giá trị nguyên lần lượt từ x a đến x b , với mỗi giá trị x ta thực hiện:  Tính y=ax+b thông qua phương trình  Vẽ điểm (x,Round(y)). Cụ thể như sau: Khi x = x a = 5: => y = ax+b = 4; Vẽ điểm (5,4) Chæång 1: Caïc yãúu täú cå såí cuía âäö hoüa - Nguyãùn Hæîu Taìi Trang 4 Khi x = 6: => y = 23/5 = 4.6; Vẽ điểm (6,5) Khi x = 7: => y = 26/5 = 5.2; Vẽ điểm (7,5) Khi x = 8: => y = 29/5 = 5.8; Vẽ điểm (8,6) Khi x = 9: => y = 32/5 = 6.4; Vẽ điểm (9,6) Khi x = 10: => y = 7; Vẽ điểm (10,7) Kết quả ta có hình vẽ đoạn thẳng AB có thể minh họa như sau: Hình I-2. Ảnh minh họa một đoạn thẳng từ A(5,4) đến B(10,7) II.2. Vẽ đoạn thẳng dựa vào thuật toán Bresenham Từ quy trình vẽ đoạn thẳng trên (II.1) ta thấy đoạn thẳng AB có thể được vẽ một cách dễ dàng. Song số phép tính cần phải thực hiện trong mỗi bước vẽ còn lớn, cụ thể là ta còn phải tính 1 phép nhân và 1 phép cộng trên trường số thực và một phép tính làm tròn (Round). Cũng với tư tưởng như trên song thuật toán Bresenham hướng tới một sự phân tích bài toán sâu sắc hơn để tìm ra một quy trình vẽ được các điểm song ít tính toán hơn. 5 6 7 8 9 10 4 5 6 7 Chổồng 1: Caùc yóỳu tọỳ cồ sồớ cuớa õọử hoỹa - Nguyóựn Hổợu Taỡi Trang 5 Trong phn ny ta ch trỡnh by gii thut trong trng hp h s gúc ca on thng 1,0a . Cỏc trng hp cũn li ca h s gúc nh ,1a ; 1,a ; 0,1a chỳng ta cú th ly i xng on thng qua cỏc ng phõn giỏc, OX, hay OY quy v trng hp 1,0a . Rừ rng l vỡ 1,0a nờn quy trỡnh õy l cho x nhn cỏc giỏ tr nguyờn ln lt t x a n x b , vi mi giỏ tr x ta cn phi tỡm ra mt giỏ tr y nguyờn (x,y) chớnh l to ca im cn minh ho trờn thit b, song giỏ tr y tỡm ra õy phi thụng qua ớt phộp tớnh toỏn hn quy trỡnh II.1. Gi thit vi hai im u mỳt A(x a ,y a ) v B(x b ,y b ) cú to nguyờn v x a <x b . Rừ rng im u tiờn cn biu din trờn thit b ú l im cú to (x a ,y a ). Nu gi im chn c u tiờn l (x 0 ,y 0 ) thỡ (x 0 ,y 0 )= (x a ,y a ) theo lp lun quy np ta: Gi thit rng n bc th i ta ó chn c im th i, hay núi cỏch khỏc l im chn th i l (x i ,y i ) ó c xỏc nh giỏ tr. Vy n bc tip theo (i+1) ta s chn im no? Hay núi cỏch khỏc l im chn th (i+1) l (x i+1 ,y i+1 ) s cú to bng bao nhiờu. (Chỳ ý: x i ,y i l tờn gi ca to im chn th i, vớ d nh (x 0 ,y 0 ) l tờn gi ca im chn u tiờn (i=0) v nú cú giỏ tr l (x a ,y a )) tr li cõu hi ny ta cn da vo mt s lp lun sau: Nh trờn ó trỡnh by thỡ im chn th i+1 s phi cú honh x bng honh ca im trc ú cng thờm 1: Hay x i+1 =x i +1 Gi M l im thuc AB sao cho x M =x i+1 =x i +1 thỡ y M = ax M +b=a(x i +1)+b= (ax i +b)+a vy im tip theo thuc on thng m ta cn tỡm minh ho trờn thit b l M(x i +1, (ax i +b)+a). Cõu hi t ra l ta s chn im no trong 2 im P(x i +1,y i ) v Q(x i +1,y i +1) minh ho cho M trờn thit b ho. Chæång 1: Caïc yãúu täú cå såí cuía âäö hoüa - Nguyãùn Hæîu Taìi Trang 6 Hình I-3. Minh họa việc chọn lựa điểm P hay Q dựa vào các tham số Để trả lời câu hỏi này ta đi xét một biểu thức trung gian: Đặt d 1 =y M -y P ; và d 2 =y Q -y M Xét biểu thức: d 1 -d 2 =(y M -y P )-( y Q -y M )=2y M -(y P +y Q ) =         2 2 QP M yy y Nếu gọi I là trung điểm của QP thì:   IM yydd  2 21 Rõ ràng là:  Nếu d 1 -d 2 <0 thì điểm y M <y I , suy ra P gần điểm M hơn Q, vậy ta sẽ chọn điểm P là điểm minh họa cho M trên thiết bị đồ hoạ  Nếu d 1 -d 2 >0 thì điểm y M >y I , suy ra Q gần điểm M hơn P, vậy ta sẽ chọn điểm Q là điểm minh họa cho M trên thiết bị đồ hoạ  Nếu d 1 -d 2 =0 thì điểm y M =y I , suy ra khả năng lựa chọn P và Q là như nhau, song ta phải quyết định chọn một điểm. Trong tình huống này ta quyết định chọn điểm Q. Vậy để tìm được điểm minh hoạ tiếp theo ta cần xét dấu của biểu thức d 1 -d 2 . Song ta thấy biểu thức d 1 -d 2 còn khá phức tạp và phải thực hiện tính toán trên trường số thực do trong đó có xuất hiện phép chia: y M =(ax i +b)+a x y yx x y x x y ayaxax aaiaai          ))(( (*) Để tránh tính biểu thức d 1 -d 2 trên trường số thực người ta hướng tới một biểu thức tương đương về dấu đó là )( 21 ddxP i  d 2 d 1 x i y i +1 y i x i +1 P Q M I Chæång 1: Caïc yãúu täú cå såí cuía âäö hoüa - Nguyãùn Hæîu Taìi Trang 7 Việc đưa x vào nhằm loại bỏ mẫu số trong biểu thức (d 1 -d 2 ) để thu được biểu thức P i tính trên trường số nguyên. Thật vậy: xxyxyP yyxyyyxyyyxddxP iMi iMiiMQPMi   22 )122())1(2())(2()( 21 Thay y M bởi giá trị ở (*) ta được: xyxyyxxyyx xxyyxyyxyxP aaii iaaii   22222 22222 (a) Ta thấy biểu thức P i được xác lập từ toạ độ của điểm chọn thứ i là (x i ,y i ). Vậy P i+1 sẽ được xác lập từ điểm chọn thứ i+1 là (x i+1 ,y i+1 ) như sau: xyxyyxxyyxP aaiii   22222 111 (b) Vì dấu của P i và dấu của (d 1 -d 2 ) là tương đương nên có thể tóm tắt quy tắc chọn điểm tiếp theo như sau:  Nếu P i <0: Thì chọn điểm P làm điểm minh họa cho M trên thiết bị đồ hoạ Hay nói cách khác là điểm chọn thứ i+1 là (x i+1 ,y i+1 ) sẽ có giá trị bằng P Nghĩa là: (x i+1 ,y i+1 )=(x i +1,y i ) Thay vào (b) ta có: yP xyxyyxxyxyP i aaiii    2 2222)1(2 1  Nếu 0 i P : Thì chọn điểm Q là điểm minh họa cho M trên thiết bị đồ hoạ Hay nói cách khác là điểm chọn thứ i+1 là (x i+1 ,y i+1 ) sẽ có giá trị bằng Q Nghĩa là: (x i+1 ,y i+1 )=(x i +1,y i +1) Thay vào (b) ta có: xyP xyxyyxyxxyP i aaiii    22 222)1(2)1(2 1 Khi i=0 thì ta có (x 0 ,y 0 )=(x a ,y a ) thay vào (a) ta có: xy xyxyyxxyyxP aa   2 22222 000 Chæång 1: Caïc yãúu täú cå såí cuía âäö hoüa - Nguyãùn Hæîu Taìi Trang 8 Vậy từ đây ta thấy được quy trình chọn ra các điểm trên thiết bị để minh hoạ cho đoạn thẳng AB theo thuật toán Bresenham như sau:  Điểm chọn đầu tiên (i=0) là (x 0 ,y 0 )=(x a ,y a ) và giá trị xyP  2 0  Dựa vào giá trị của P 0 là âm hay dương mà ta lại chọn được điểm tiếp theo (x 1 ,y 1 ) và tính được giá trị P 1  Dựa vào giá trị của P 1 là âm hay dương mà ta lại chọn được điểm tiếp theo (x 2 ,y 2 ) và tính được giá trị P 2  Cứ như vậy ta tìm ra được tập các điểm trên thiết bị đồ hoạ để minh hoạ cho đoạn thẳng AB. II.2.a. Tóm tắt thuật toán Bresenham:  Bước 1: Tính ∆x;∆y Const1=2∆y; Const2=2∆y-2∆x P 0 =2∆y-∆x; (x 0 , y 0 ) = (x a , y a ) Vẽ điểm (x 0 , y 0 )  Bước 2: Với mỗi giá trị i (i=0,1,2,…) ta xét dấu P i  Nếu P i <0: thì chọn điểm tiếp theo là (x i+1 ,y i+1 )=(x i +1,y i ) P i+1 =P i +Const1  Ngược lại (tức Pi ≥ 0): thì chọn điểm tiếp theo là (x i+1 ,y i+1 )=(x i +1,y i +1) P i+1 =P i +Const2 Vẽ điểm (x i+1 ,y i+1 ) vừa tìm được  Bước 3: Lặp lại bước 2 với những giá trị i tiếp theo, cho đến khi điểm tìm được trùng với B, nghĩa là x i+1 =x b thì thuật toán kết thúc. II.2.b. Ví dụ: Cho đoạn thẳng AB với A(5,6) và B(10,10). Sử dụng thuật toán Bresenham chúng ta có thể tìm được các Pixel cần vẽ để biểu diễn đoạn AB trên màn hình như sau: Bước 1: ∆x = 10-5 = 5; ∆y = 10-6 = 4; . Trường Đại học Khoa học Huế Khoa CNTT  Giáo trình Huãú,. im P s gn vi ng trũn hn im Q, do ú ta s chn im P lm im biu din (v). Khi P i = circle (I) >0 thỡ im I nm ngoi ng trũn, vỡ th im Q s gn vi ng trũn hn im P, do ú ta s chn im Q lm im biu. Khi P i <0: thỡ im P s gn vi ng trũn hn im Q, do ú ta s chn im P lm im biu din (v). Khi P i >0: thỡ im Q s gn vi ng trũn hn im P, do ú ta s chn im Q lm im biu din. Khi P i =0:

Ngày đăng: 19/04/2015, 01:56

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan