Bài 1 :Mục tiêu: Bài thực hành cho biêt cách dùnghàm InitGraph khởi tạo chế độ đồ họa.hàm closegraph ngưng làm việc trên chế độ đồ họa.hàm putpixel(x,y,color) vẽ một điểm tại vị trí x, y, z với màu colorhàm getpixel(x,y) trả về giá trị màu sắc tại vị trí x, y
Nội dung trích xuất từ tài liệu:
Đồ họa máy tính - Bài 1: Các thuật toán vẽ đườngTH- ð H A MÁY TÍNH 1 GVHD: Huynh Duc Nghia CÁC THU T TOÁN V ðƯ NGBài 1 :M c tiêu : Bài th c hành cho bi t cách dùng hàm InitGraph kh i t o ch ñ ñ h a hàm closegraph ngưng làm vi c trên ch d ñ h a hàm putpixel(x,y,color) v m t ñi m nh t i v trí x, y v i màu color hàm getpixel(x,y) tr v giá tr màu s c t i v trí x, yXây d ng hàm kh i t o ch ñ ñ h a#include void InitGraph(){ int gd=DETECT,gm; //Khai báo 2 bi n gd và gm ki u s nguyên initgraph(&gd,&gm,C:\NGHIA\THUCHANH\DOHOA\TC\BGI); // Goi hàm kh i t o ñha}C u trúc m t chương trình ñ h a thông thư ngvoid main (){Inputdata(); // Nh p d li u cho chương trình – T a ñ c a m t ñi m, bán kínhInitGraph(); // Khoi tao che do do hoaDraw(); // Các thao tác ñ h aclosegraph(); // Ng ng ch ñ làm vi c c a ñ h a}* Chương trình v b u tr i sao nh p nháy minh h a các hàm v a nêu trên#include #include #include viod DrawSky(){ int x,y,color; randomize(); //khoi tao random (stdlib.h) while(!kbhit()) // int kbhit() = 0 Neu bo dem ban phim rong (conio.h) { x = random(640); y = random(480); color = random(16); if(getpixel(x,y) != color) //Lay gia ti mau tai vi tri x,y so sanh voi mau se ve putpixel(x,y,color); // Ve mau khac neu khong phai la mau da ve else putpixel(x,y,1); //Ve lai gia tri mau nen BLACK }}void main(){ InitGraph(); DrawSky(); closegraph()TH- ð H A MÁY TÍNH 2 GVHD: Huynh Duc Nghia}Bài 2: Vi t hàm main() v hình ch nh t và hình tròn G i ý : Dùng hàm line() ho c rectangle() và circle() do chương trình C cung c p. ðư ng th ng, hình vuông, hình tròn ñư c v như th nào?Bài 3: Cài ñ t gi i thu t v ñư ng th ng b ng thu t toán thô, v ñư ng th ng có các t a ñ x1 = 150, y1 =150, x2 = 250, y2 = 200 và màu tùy ý. G i ý: t o hàm DT(x1,y1,x2,y2,Color) - V ñi m ñ u tiên (x1,y1) - Tính h s góc m và h s b - ði m ti p theo cho ñ n ñi m (x2,y2) , dùng: for (int x=x1; xTH- ð H A MÁY TÍNH 3 GVHD: Huynh Duc Nghia#define Round(a) int(a+0.5) //ð nh nghĩa hàm làm tròn s a nguyênvoid LineDDA (int x1, int y1, int x2, int y2, int Color){ int x = x1; float y = y1; float m = float(y2-y1)/(x2-x1); putpixel(x, Round(y), Color); for(int i=x1; i1, v ñư ng th ng, có các t a ñ x1 = 100, y1 = 100, x2 = 200, y2= 300 và màu tùy ý (ð i x ng TH v i 0TH- ð H A MÁY TÍNH 4 GVHD: Huynh Duc Nghia N u 01 => g i hàm LineBres2(); N u -1TH- ð H A MÁY TÍNH 5 GVHD: Huynh Duc Nghia p = 3 – 2*R; while (x < y) { x++; if (p < 0) p += 4*x + 6; else { y--; p += 4*(x -y) + 10; } Put8Pixel(x, y,WHITE); }} // CircleBresYêu c u: - Dùng gi i thu t trên v ñư ng tròn. - V ñư ng tròn tâm xc,yc b t kỳ. T cài ñ t chương trình: v ellipse, parabol, và m t s ñư ng cong khác,… CÁC THU T TOÁN TÔ MÀUTô màu d a theo ñư ng biênBài 1 : Cài ñ t gi i thu t tô màu v i lân c n 4.Cài ñ t gi i thu t:void FloodFill4(int x, int y, int bc, int nc) //bc: back color, nc: new color{ int color= getpixel(x,y); if ((color != bc) && (color != nc)) { putpixel(x,y,nc); delay(30); FloodFill4(x-1,y,bc,nc); FloodFill4(x+1,y,bc,nc); FloodFill4(x,y-1,bc,nc); FloodFill4(x,y+1,bc,nc); }}Chương tình minh h a#include #include #include #include #include #define Round(a) int(a+0.5)int Color = WHITE;void FloodFill4(int x, int y, int bc, int nc){ int color= getpixel(x,y); if ((color != bc) && (color != nc)) {TH- ð H A MÁY TÍNH 6 GVHD: Huynh Duc Nghia putpixel(x,y,nc); //delay(30); FloodFill4(x-1,y,bc,nc); FloodFill4(x+1,y,bc,nc); FloodFill4(x,y-1,bc,nc); FloodFill4(x,y+1,bc,nc); }}void RecTangle(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4){ line(x1,y1,x2,y2); line(x4,y4,x3,y3); line(x1,y1,x4,y4); line(x2,y2,x3,y3);}void InitGraph(){ int gd=DETECT,gm; initgraph(&gd,&gm,C:\TC\BGI);}void main(){ InitGraph(); RecTangle(100,100,100,120,150,120,150,100); FloodFill4(12 ...