Đồ họa máy tính - Chương 5 Tô màu, Font chữ - Bài 16
lượt xem 12
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Các thuật toán tô màu 1. Thuật toán tô màu hình thang cơ bản Giả sử cho hình thang cơ bản có dạng: (x4y4) (x3y3) (x1y1) Thuật toán nh- sau: (x2y2)
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Đồ họa máy tính - Chương 5 Tô màu, Font chữ - Bài 16
- Kü thuËt §å ho¹ m¸y tÝnh C¸c h×nh thang c¬ b¶n sÏ lµ c¸c h×nh giíi h¹n bëi c¸c ®o¹n th¼ng (P1,P2), (P3,P4) ......(P2n-1, P2m) vµ c¸c ®o¹n th¼ng thuéc c¸c c¹nh cña ®a gi¸c VÝ dô: Bµi tËp: W1 W8 W1 W5 1 2 2 3 3 W6 W2 4 W2 5 7 6 5 8 W7 W4 9 6 W4 W5 W3 W3 H·y diÔn ®¹t chÝnh x¸c thuËt to¸n trªn vµ lËp ch−¬ng tr×nh ph©n chia ®a gi¸c thµnh c¸c h×nh thang c¬ b¶n $16. C¸c thuËt to¸n t« mμu 1. ThuËt to¸n t« mµu h×nh thang c¬ b¶n Gi¶ sö cho h×nh thang c¬ b¶n cã d¹ng: (x3y3) ( x4 y4 ) (x1y1) (x2y2) ThuËt to¸n nh− sau: 1. §Æt ymin=y1; ymax=y3; m=ymax-ymin+1 2. tÝnh hÖ sè gãc Cl=(x4-x1)/(y4-y1) Cr=(x3-x2)/(y3-y2) 2. §Æt yi=ymin+(i-1) i = 1,m tÝnh x li = x 1 + (y i − y 1 ).C l x ir = x 2 + (y i − y 2 ).C r 89
- Kü thuËt §å ho¹ m¸y tÝnh 3. KÎ ®o¹n th¼ng (x li ,y i ) , (x ir ,y i ) b»ng mµu t« Chó ý 1. Khi h×nh thang c¬ b¶n biÕn d¹ng vÒ tam gi¸c ch¼ng h¹n x1=x2, y1=y2 (x4y4) (x3y3) (x1y1) khi ®ã: x li = x li−1 + C l x ir = x ir−1 + C r 2. T« mµu ®a gi¸c Dùa vµo kÕt qu¶ cña viÖc ph©n chia ®a gi¸c thµnh tæng c¸c h×nh thang c¬ b¶n ta suy ra ®Ó t« mµu mét ®a gi¸c bÊt kú, ta cÇn ph©n chia ®a gi¸c thµnh tæng c¸c h×nh thang c¬ b¶n vµ sau ®ã t« mµu c¸c h×nh thang ®· ®−îc chia 3. T« mµu mét vïng kÝn bÊt kú Cho mét tËp c¸c pixel tËp ®−îc gäi lµ liªn th«ng nÕu tõ mét pixel ta cã thÓ di chuyÓn ®Õn c¸c pixel bÊt kú thuéc tËp Cho mét tËp W c¸c ®iÓm ¶nh (Pixel) tËp W gäi lµ liªn th«ng cÊp 8 nÕu mçi pixel cã 8 ®iÓm l©n cËn thuéc tËp Cho mét tËp W c¸c ®iÓm ¶nh (pixel) tËp ®−îc gäi lµ liªn th«ng cÊp 4 nÕu mçi ®iÓm ¶nh thuéc tËp cã 4 ®iÓm l©n cËn thuéc tËp 90
- Kü thuËt §å ho¹ m¸y tÝnh Bµi to¸n t« mµu vïng bÊt kú Cho mét tËp W c¸c ®iÓm ¶nh liªn th«ng cÊp 4 ®−îc giíi h¹n bëi ®−êng biªn cã mÇu cb vµ mét ®iÓm ¶nh trong W h·y t« vïng W b»ng mµu Ct ý t−ëng cña thuËt to¸n ®¬n gi¶n nh− sau: XuÊt ph¸t tõ ®iÓm trong P cña vïng W kiÓm tra 4 ®iÓm l©n cËn cña P lµ P1,P2,P3,P4 nÕu ®iÓm Pi ( i = 1,4 ) kh«ng cã mÇu Cb th× t« Pi b»ng Ct vµ l¹i coi Pi lµ ®iÓm trong P cña W, qu¸ tr×nh ®−îc lÆp l¹i cho ®Õn khi gÆp mµu biªn Cb. ThuËt to¸n ng¾n gän trªn cã thÓ ®−îc gäi lµ thuËt to¸n vÕt dÇu loang. ThuËt to¸n ng¾n gän trªn cã thÓ m« t¶ b»ng thñ tôc ®Ö quy sau : Procedure Tomau(x,y,Cb,Ct: Integer); Begin If Color(x,y) Cb and Color(x,y)Ct Then Begin Putpixel (x,y,Ct); Tomau(x,y-1,Cb,Ct); Tomau(x,y+1,Cb,Ct); Tomau(x-1,y,Cb,Ct); Tomau(x+1,y,Cb,Ct); End; End; Chó ý : ThuËt to¸n trªn cã −u ®iÓm lµ ch−¬ng tr×nh ng¾n gän song do thñ tôc ®Ö quy nªn yªu cÇu bé nhí rÊt lín, nÕu miÒn W cã n ®iÓm ¶nh th× bé nhí cÇn n4 . V× vËy nÕu vïng W qu¸ lín sÏ dÉn ®Õn trµn bé nhí. §Ó kh¾c phôc nh−îc ®iÓm nµy ta cã thÓ c¶i tiÕn thuËt to¸n nh− sau: 1. X¸c ®Þnh Ymin, Ymax, Xmin, Xmax chøa vïng W 2. Tõ ®iÓm trong P di chuyÓn theo OX ®Ó t« c¸c ®iÓm cã cïng to¹ ®é Y. Sau ®ã l¹i dÞch chuyÓn theo OY Ch−¬ng tr×nh minh ho¹ : Y P X O 91
- Kü thuËt §å ho¹ m¸y tÝnh Program Flood_Fill; Uses Crt,Graph; Var Gd,Gm : Integer; Procedure To_Mau(a,b,mv,mt : Integer); (*------------------------------------*) Procedure Tm(x,y,mv,mt,u : Integer); Var a1,a2,b,t,k,t1,t2 : Integer; Procedure Tim(a1,a2,b,mv,u : Integer;Var x : Integer); Var i : Integer; Begin x:=0; While GetPixel(a1,b+u)=mv Do Inc(a1); While GetPixel(a2,b+u)=mv Do Dec(a2); For i:=a1 To a2 Do Begin If (GetPixel(i,b+u)=mv) Then Begin x:=i;Break;End; End; End; Procedure Tim1(a1,a2,b,mv,u : Integer;Var x : Integer); Var i : Integer; Begin x:=0; For i:=a1 To a2 Do Begin If (GetPixel(i,b+u)mv) Then Begin x:=i;Break;End; End; End; Begin SetColor(mt); b:=y; Repeat a1:=x;a2:=x;t:=0;k:=0;t1:=0;t2:=0; While GetPixel(a1-1,b)mv Do Begin If GetPixel(a1,b+u)mv Then t:=a1; Dec(a1); End; While GetPixel(a2+1,b)mv Do Begin 92
- Kü thuËt §å ho¹ m¸y tÝnh If GetPixel(a2,b+u)mv Then t:=a2; Inc(a2); End; Line(a1,b,a2,b); Tim(a1,a2,b,mv,1,k); If k0 Then Begin Tim1(k,a2,b,mv,1,t1); If (t10)And(GetPixel(t1,b+1)mt) Then Tm(t1,b+1,mv,mt,1); Tim1(a1,k,b,mv,1,t2); If (t20)And(GetPixel(t2,b+1)mt) Then Tm(t2,b+1,mv,mt,1); End; k:=0;t1:=0;t2:=0; Tim(a1,a2,b,mv,-1,k); If k0 Then Begin Tim1(a1,a2,b,mv,1,t1); If (t10)And(GetPixel(t1,b+1)mt) Then Tm(t1,b+1,mv,mt,1); t1:=0; Tim1(k,a2,b,mv,-1,t1); If (t10)And(GetPixel(t1,b-1)mt) Then Tm(t1,b-1,mv,mt,-1); Tim1(a1,k,b,mv,-1,t2); If (t20)And(GetPixel(t2,b-1)mt) Then Tm(t2,b-1,mv,mt,-1); End; b:=b+u; If t0 Then x:=t; Until T=0; End; (*------------------------------------*) Begin Tm(a,b,mv,mt,1); Tm(a,b,mv,mt,-1); End; (*------------------------------------*) Begin Gd:=0; Initgraph(Gd,Gm,'C:\Tp\Bgi'); RanDomize; Line(50,50,600,400); Line(600,400,350,100); Line(350,100,550,250); Line(550,250,550,200); Line(600,300,550,200); Line(600,300,600,50); Line(500,150,600,50); 93
- Kü thuËt §å ho¹ m¸y tÝnh Line(500,150,450,30); Line(400,80,450,30); Line(50,50,400,80); Repeat To_Mau(250,70,White,RanDom(14)+1); settextjustify(1,1); settextstyle(1,0,2); Outtextxy(320,400,'Press ESCAPE to Exit'); Repeat Until KeyPressed; Until (KeyPressed)And(ReadKey=#27); CloseGraph; End. $17. Xö lý ký tù trªn mμn h×nh §Ó biÓu diÔn c¸c ký tù trªn mµn h×nh ng−êi ta sö dông 2 byte cho 1 ký tù mét byte - m· (code) cña ký tù mét byte - thuéc tÝnh (attribute) cña ký tù. M· cña ký tù lµ mét sè trong tËp tõ 0-256 Byte thuéc tÝnh dïng ®Ó x¸c ®Þnh tÝnh chÊt hiÓn thÞ cña ký tù trªn mµn h×nh nh− mµu s¾c, chÕ ®é hiÖn nhÊp nh¸y (Blink)..... Mçi ký tù cã khu«n mÉu cña nã ng−êi ta gäi lµ shape hay pattern cña ký tù. Khu«n mÉu cña ký tù ®−îc l−u trong m¸y b»ng mét sè byte nµo ®ã tuú thuéc vµo khu«n mÉu cña ký tù. Trong m¸y tÝnh ng−êi ta dµnh 32 byte ®Ó l−u gi÷ khu«n mÉu cho mäi ký tù. Ng−êi ta t¹o c¸c byte biÓu diÔn khu«n mÉu cña mét ký tù theo nguyªn t¾c sau: ë chÕ ®é hép ký tù 8x8: ë chÕ ®é hép ký tù 8x14 94
CÓ THỂ BẠN MUỐN DOWNLOAD
-
GIÁO TRÌNH ĐỒ HỌA MÁY TÍNH_TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH
14 p |
391
|
127
-
Bài giảng môn Đồ họa máy tính - ĐH Kinh Tế Kỹ Thuật Công Nghiệp
39 p |
312
|
95
-
Câu hỏi về đồ họa máy tính kèm theo lời giải
29 p |
279
|
43
-
Giáo trình Đồ họa máy tính - Học viện Bưu chính Viễn Thông
201 p |
188
|
41
-
Bài giảng đồ họa máy tính - Ngô Quốc Việt
37 p |
227
|
39
-
Bài giảng Đồ họa máy tính - Ma Thị Châu
22 p |
289
|
28
-
Giáo trình Đồ họa máy tính: Phần 1
41 p |
197
|
26
-
Đề cương môn học: Đồ họa máy tính
6 p |
286
|
22
-
Bài giảng Đồ họa máy tính: Các thuật toán mành hóa - Ma Thị Châu
18 p |
251
|
17
-
Bài giảng Cơ sở đồ họa máy tính: Phần 2 - ĐH CNTT&TT
34 p |
108
|
14
-
Bài giảng Đồ họa máy tính: Phần 1
47 p |
119
|
14
-
Giáo trình Kỹ thuật đồ họa máy tính - ĐH Kinh Tế Kỹ Thuật Công Nghiệp
107 p |
57
|
9
-
Bài giảng Đồ họa máy tính: Bài 1 - Lê Tấn Hùng
11 p |
62
|
8
-
Bài giảng Đồ họa máy tính: Các khái niệm đồ họa máy tính - Ma Thị Châu (2017)
31 p |
66
|
8
-
Bài giảng Đồ họa máy tính: Phần 2
40 p |
108
|
8
-
Bài giảng Tổng quan đồ họa máy tính
11 p |
135
|
7
-
Bài giảng Đồ họa máy tính: Giới thiệu về đồ họa máy tính - TS. Đào Nam Anh
50 p |
109
|
7
-
Bài giảng Đồ họa máy tính: Bài 3 - Lê Tấn Hùng
39 p |
80
|
5
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn