Đồ họa máy tính - Bài 1: Các thuật toán vẽ đường
Số trang: 8
Loại file: pdf
Dung lượng: 144.06 KB
Lượt xem: 21
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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 ...
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 ...
Tìm kiếm theo từ khóa liên quan:
đồ họa máy tính thuật toán vẽ đường bài tập toán vẽ đường thực hành toán vẽ đường tự học các thuật toán vẽ đườngTài liệu có liên quan:
-
vray for sketchup vietnamese PHẦN 3
10 trang 248 0 0 -
Giáo trình CorelDRAW dành cho người mới học
48 trang 162 0 0 -
Giáo trình CorelDraw 10 - Tham khảo toàn diện: Phần 2
528 trang 143 0 0 -
Bài giảng Đồ họa máy tính: Khử mặt khuất - Ngô Quốc Việt
28 trang 133 0 0 -
Giáo trình môn học Lý thuyết thông tin
136 trang 75 0 0 -
Bài giảng Đồ họa máy tính: Lập trình 3D với OpenGL - Ngô Quốc Việt
55 trang 64 0 0 -
Bài giảng Đồ họa máy tính: Chương 3 - ThS. Trần Thị Minh Hoàn
29 trang 60 0 0 -
Lecture Computer graphics - Lecture 32
35 trang 49 0 0 -
Mô hình hóa cơ thể bằng kỹ thuật đồ họa máy tính
9 trang 46 0 0 -
Lecture Computer graphics - Lecture 9
17 trang 46 0 0