Đồ 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_TỔNG QUAN VỀ ĐỒ HỌA MÁY TÍNH
14 p | 382 | 127
-
Đồ họa máy tính - Chương 1 Màn hình của máy tính - Bài 3
7 p | 183 | 24
-
Đề cương môn học: Đồ họa máy tính
6 p | 277 | 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 | 233 | 17
-
Bài giảng Đồ họa máy tính: Các phép biến đổi trong đồ họa hai chiều - TS. Đào Nam Anh
52 p | 135 | 13
-
Bài giảng Đồ họa máy tính: Giới thiệu đồ họa 3 chiều - TS. Đào Nam Anh
54 p | 110 | 12
-
Bài giảng Lập trình C nâng cao - Chương 4: Đồ họa máy tính
16 p | 111 | 11
-
Bài giảng Đồ họa máy tính: Các phép biến đổi trong đồ họa ba chiều - TS. Đào Nam Anh
28 p | 104 | 11
-
Bài giảng Đồ họa máy tính: Các đối tượng đồ họa cơ sở - TS. Đào Nam Anh
50 p | 101 | 10
-
Bài giảng Đồ họa máy tính: Bài 1 - Lê Tấn Hùng
11 p | 60 | 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 | 56 | 8
-
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 | 96 | 7
-
Bài giảng Tổng quan đồ họa máy tính
11 p | 120 | 7
-
Bài giảng Đồ họa máy tính: Giới thiệu đồ họa 3 chiều - TS. Đào Nam Anh (tt)
54 p | 92 | 6
-
Bài giảng Đồ họa máy tính: Giới thiệu môn học - Ma Thị Châu (2017)
22 p | 43 | 6
-
Bài giảng Đồ họa máy tính: Bài 3 - Lê Tấn Hùng
39 p | 75 | 5
-
Bài giảng Đồ họa máy tính: Chương 1 - ThS. Trần Thị Minh Hoàn
44 p | 108 | 5
-
Bài giảng Đồ họa máy tính: Đồ họa ba chiều - Ngô Quốc Việt
36 p | 27 | 4
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