Đồ họa máy tính - Bài 1: Các thuật toán vẽ đường
lượt xem 108
download
Bà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ế độ đồ họa. hàm putpixel(x,y,color) vẽ một điểm tại vị trí x, y, z với màu color hàm getpixel(x,y) trả về giá trị màu sắc tại vị trí x, y
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Đồ họa máy tính - Bài 1: Các thuật toán vẽ đường
- TH- ð H A MÁY TÍNH 1 GVHD: Huynh Duc Nghia CÁC THU T TOÁN V ðƯ NG Bà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, y Xâ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ư ng void main () { Inputdata(); // Nh p d li u cho chương trình – T a ñ c a m t ñi m, bán kính InitGraph(); // Khoi tao che do do hoa Draw(); // Các thao tác ñ h a closegraph(); // 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; x
- TH- ð 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ên void 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 0
- TH- ð H A MÁY TÍNH 4 GVHD: Huynh Duc Nghia N u 01 => g i hàm LineBres2(); N u -1
- TH- ð 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); } } // CircleBres Yê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ÀU Tô màu d a theo ñư ng biên Bà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(125,110,Color,RED); getch(); closegraph(); }// End programing Bài 2 : Cài ñ t gi i thu t tô màu v i lân c n chéo. Cài ñ t gi i thu t void FloodFillD(int x, int y, int bc, int nc) { int color= getpixel(x,y); if ((color != bc) && (color != nc)) { putpixel(x,y,nc); delay(30); FloodFillD(x+1,y+1,bc,nc); FloodFillD(x+1,y-1,bc,nc); FloodFillD(x-1,y-1,bc,nc); FloodFillD(x-1,y+1,bc,nc); } } Bài 3 : Cài ñ t gi i thu t tô màu v i lân c n 8. Cài ñ t gi i thu t void FloodFill8(int x, int y, int bc, int nc) { int color= getpixel(x,y); if ((color != bc) && (color != nc)) { putpixel(x,y,nc);
- TH- ð H A MÁY TÍNH 7 GVHD: Huynh Duc Nghia delay(30); FloodFill4(x,y,bc,nc); // lan can 4 FloodFillD(x,y,bc,nc); // va lan can cheo } } Yêu c u: V và tô ñư ng tròn, tam giác, ½, ¼ ñư ng tròn v i các màu khac nhau. T làm: v và tô ellipse, prarabol, và m t s ñư ng cong khác Tô màu d a theo dòng quét Bài 1: Tô màu hình ch nh t Cài ñ t gi i thu t void ScanLineFillR(int l, int r, int t, int b, int color) { for (int y= t; y
- TH- ð H A MÁY TÍNH 8 GVHD: Huynh Duc Nghia Bài 3: Tô màu tam giac t ng quát Hư ng d n: Bư c 1: S p x p l i th t các ñi m, sao cho: y1>y2>y3 Bư c 2: N u y2 = y3: g i hàm tô màu tam giác ñáy ph ng N u y1= y2: g i hàm tô màu tam giác ñ nh ph ng Ngư c l i (y1#y2#y3): g i c 2 hàm ñáy ph ng và ñ nh ph ng. T làm: Tô màu ña giác l i, t giác
CÓ THỂ BẠN MUỐN DOWNLOAD
-
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
-
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 Đồ họa máy tính: Phần 1
47 p | 112 | 14
-
Bài giảng Cơ sở đồ họa máy tính: Phần 2 - ĐH CNTT&TT
34 p | 102 | 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 Cơ sở đồ họa máy tính: Phần 1 - ĐH CNTT&TT
47 p | 119 | 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
-
Bài giảng Đồ họa máy tính: Phần 1 - ĐH Sư phạm kỹ thuật Nam Định
128 p | 37 | 6
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