Đồ họa máy tính - Chương 5 Tô màu, Font chữ - Bài 16
lượt xem 12
download
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 kỹ thuật đồ họa máy tính
159 p | 3376 | 1320
-
Giáo trình đồ họa máy tính
159 p | 1330 | 400
-
Bài giảng Vẽ đồ họa máy tính - Bài 1: Giới thiệu
27 p | 990 | 208
-
Thiết kế đồ họa máy tính
159 p | 576 | 207
-
Một số ứng dụng của đồ họa máy tính
0 p | 647 | 131
-
GIÁO TRÌNH ĐỒ HỌA MÁY TÍNH_TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH
14 p | 380 | 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 | 306 | 95
-
Câu hỏi về đồ họa máy tính kèm theo lời giải
29 p | 272 | 42
-
Bài giảng Đồ họa máy tính - Ma Thị Châu
22 p | 279 | 28
-
Giáo trình Đồ họa máy tính: Phần 1
41 p | 197 | 26
-
Giáo trình Đồ họa máy tính (98tr)
98 p | 139 | 23
-
Bài giảng Cơ sở đồ họa máy tính: Phần 2 - ĐH CNTT&TT
34 p | 102 | 14
-
Bài giảng Đồ họa máy tính: Phần 1
47 p | 112 | 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 | 55 | 9
-
Bài giảng Đồ họa máy tính: Phần 2
40 p | 102 | 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 | 53 | 8
-
Bài giảng Tổng quan đồ họa máy tính
11 p | 117 | 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 | 87 | 7
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