1. Trang chủ
  2. » Luận Văn - Báo Cáo

code_ đồ họa máy tính_bản chuẩn

43 6,4K 35

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 43
Dung lượng 139 KB

Nội dung

tổng hợp code đồ họa máy tính cho sinh viên

1 ********************************** DDA_line //trường hợp tổng quát k theo m #include<graphics.h> #define Round(a)(int )(a+0.5) #define DELAY 10 Int color = RED; Void DDA_line(int x1,int y1,int x2,int y2) { int x,dx,dy; float y; x=1; y=y1; dx=x2-x1; dy=y2-y1; float m=(float)dy/dx; putpixel(x,Round(y),color); while(x<x2) { DELAY(10); x++; y+=m; putpixel(x,Round(y),color); } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); int xA,xB,yB,yA; cout<<"nhap diem A\n "; cout<<"xA= ";cin>>xA; //50 cout<<"yA= ";cin>>yA; //100 cout<<"nhap diem B \n"; cout<<"xB= ";cin>>xB; //130 cout<<"yB= ";cin>>yB; //200 DDA_line (xA,yA, xB, yB); getch(); closegraph(); } 2 1.1 Cho điểm A có tọa độ (100,50) và điểm B có tọa độ (200,130). - Trình bày thuật toán DDA tương ứng để vẽ đoạn thẳng AB (trình bày trường hợp hệ số góc 0<|m|<1). - Viết hàm tương ứng để vẽ đoạn thẳng AB với màu bất kỳ. - Viết hàm main() để kiểm nghiệm. #include <conio.h> #include <graphics.h> #include <math.h> #include <iostream.h> #include <stdio.h> #include <math.h> #include <stdlib.h> #define Round(a) long(a+0. 005) // lam tron so void DDA(int x1, int y1, int x2, int y2, int C) { int x,y,dx,dy; Randomize(); y=y1; dx = x2 - x1; dy = y2 - y1; float m = float (y2 - y1)/(x2 - x1); //Ve doan thang co HSG 0<m<1 if(0 <= m && m <= 1) { for(int i = 1; i < abs(x2 - x1); i++) { x++; y += m; putpixel(x, Round(y), random(7)); } cout<<"m1= "<<m; } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); DDA(100,50,200,130,random(7)); getch(); closegraph(); } 3 1. 2Cho điểm A có tọa độ (50,100) và điểm B có tọa độ (130,200). - Trình bày thuật toán DDA tương ứng để vẽ đoạn thẳng AB (trình bày trường hợp hệ số góc |m|≥1). - Viết hàm tương ứng để vẽ đoạn thẳng AB với màu bất kỳ. Viết hàm main() để kiểm nghiệm. #include <conio.h> #include <graphics.h> #include <math.h> #include <iostream.h> #include <stdio.h> #include <math.h> #include <stdlib.h> #define Round(a) long(a+0. 005) void DDA(int x1, int y1, int x2, int y2, int C) { int x,y,dx,dy; Randomize(); y=y1; dx = x2 - x1; dy = y2 - y1; float m = float (y2 - y1)/(x2 - x1); //Ve doan thang co HSG |m|>=1 if(abs(m) >= 1) { for(int i = 1; i < abs(y2 - y1); i++) { y++; x += 1/m; putpixel(x, round(y), random(7)); } cout<<"m2= "<<m; } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); DDA(50,100,130,200,random(7)); getch(); closegraph(); } 1.3. Viết chương trình gồm: 4 - Hàm vẽ đoạn thẳng AB với màu bất kỳ theo thuật toán DDA ứng với trường hợp hệ số góc m của đường thẳng đi qua A, B thỏa mãn |m|≥1. - Hàm nhập tọa độ 2 điểm A, B trên màn hình sao cho đường thẳng đi qua A, B có hệ số góc m với |m|≥1. - Hàm main() nhập màu nét vẽ và vẽ đoạn thẳng AB với màu vừa nhập. #include <conio.h> #include <graphics.h> #include <math.h> #include <iostream.h> #include <stdio.h> #include <math.h> #define round(a) long(a+0. 005) void DDA(int x1, int y1, int x2, int y2, int C) { int x,y,dx,dy; y=y1; dx = x2 - x1; dy = y2 - y1; float m = float (y2 - y1)/(x2 - x1); //Ve doan thang co HSG |m|>=1 if(abs(m) >= 1) { for(int i = 1; i < abs(y2 - y1); i++) { y++; x += 1/m; putpixel(x, round(y), 7); } cout<<"m2= "<<m; } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); int xA,xB,yB,yA; cout<<"nhap diem A\n "; cout<<"xA= ";cin>>xA; //50 cout<<"yA= ";cin>>yA; //100 cout<<"nhap diem B \n"; cout<<"xB= ";cin>>xB; //130 cout<<"yB= ";cin>>yB; //200 DDA(xA,yA, xB, yB, 7); getch(); closegraph(); } 1.4. Viết chương trình gồm: 5 - Hàm vẽ đoạn thẳng AB với màu bất kỳ theo thuật toán DDA ứng với trường hợp hệ số góc m của đường thẳng đi qua A, B thỏa mãn 0<|m|<1. - Hàm nhập tọa độ 2 điểm A, B trên màn hình sao cho đường thẳng đi qua A, B có hệ số góc m với 0<|m| <1. - Hàm main() nhập màu nét vẽ và vẽ đoạn thẳng AB. #include <conio.h> #include <graphics.h> #include <math.h> #include <iostream.h> #include <stdio.h> #include <math.h> #define round(a) long(a+0. 005) void DDA(int x1, int y1, int x2, int y2, int C) { int x,y,dx,dy; y=y1; dx = x2 - x1; dy = y2 - y1; float m = float (y2 - y1)/(x2 - x1); //Ve doan thang co HSG 0<m<1 if(0 <= m && m <= 1) { for(int i = 1; i < abs(x2 - x1); i++) { x++; y += m; putpixel(x, round(y), C); } cout<<"m1= "<<m; } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); int xA,xB,yB,yA,mt; cout<<"nhap diem A\n "; cout<<"xA= ";cin>>xA; //100 cout<<"yA= ";cin>>yA; //50 cout<<"nhap diem B \n"; cout<<"xB= ";cin>>xB; //200 cout<<"yB= ";cin>>yB; //130 cout<<”nhap mau ve”; cin>>mt; DDA(xA,yA, xB, yB, mt); getch(); closegraph(); } 6 ****************************************** BR_ line // trường hợp tổng quát k theo m #include <conio.h> #include <graphics.h> #include <math.h> #include <iostream.h> #include <stdio.h> #include <math.h> #define Round(a) long(a+0. 005) // lam tron so void Bre_line(int x1, int y1, int x2, int y2, int color) { int x,y,dx,dy,p; y=y1; dx = x2 - x1; dy = y2 - y1; p=-dy-2*dx; for(x=x1; x<=x2;x++) { putpixel(x,Round(y),7); if(p>=0) { p+=-2*dy-2*dx; x ; } else { p+=-2*dx; } } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); int xA,xB,yB,yA; cout<<"nhap diem A\n "; cout<<"xA= ";cin>>xA; cout<<"yA= ";cin>>yA; cout<<"nhap diem B \n"; cout<<"xB= ";cin>>xB; cout<<"yB= ";cin>>yB; Bre_line(xA,yA, xB, yB, 7); getch(); closegraph(); } 7 1.5. Cho điểm A có tọa độ (100,50) và điểm B có tọa độ (200,130). - Trình bày thuật toán Bresenham tương ứng để vẽ đoạn thẳng AB (trình bày trường hợp hệ số góc 0<|m| <1). - Hãy tính tọa độ của 15 điểm đầu tiên khi vẽ đoạn thẳng AB - Viết hàm tương ứng để vẽ đoạn thẳng AB với màu bất kỳ. - Viết hàm main() để kiểm nghiệm. #include <conio.h> #include <graphics.h> #include <math.h> #include <iostream.h> #include <stdio.h> #include <math.h> #define Round(a) long(a+0. 005) void Bre_line(int x1, int y1, int x2, int y2, int color) { int x,y,dx,dy,p; y=y1; dx = x2 - x1; dy = y2 - y1; p=2*dy-dx; // vẽ đường thẳng với 0<m<1 for(x=x1; x<=x2;x++) { putpixel(x,Round(y),7); if(p>=0) { p+=2*dy-2*dx; y++; } else { p+=2*dy; } } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); Bre_line(100,50, 200,130, 7); getch(); closegraph(); } 8 1.6. Cho điểm A có tọa độ (50,100) và điểm B có tọa độ (130,200). - Trình bày thuật toán Bresenham tương ứng để vẽ đoạn thẳng AB (trình bày trường hợp hệ số góc |m|≥1). - Hãy tính tọa độ của 15 điểm đầu tiên khi vẽ đoạn thẳng AB - Viết hàm tương ứng để vẽ đoạn thẳng AB với màu bất kỳ. - Viết hàm main() để kiểm nghiệm. #include <conio.h> #include <graphics.h> #include <math.h> #include <iostream.h> #include <stdio.h> #include <math.h> #define Round(a) long(a+0. 005) void Bre_line(int x1, int y1, int x2, int y2, int color) { int x,y,dx,dy,p; y=y1; dx = x2 - x1; dy = y2 - y1; p=dy-2*dx; // vẽ đường thẳng với m>1 for(x=x1; x<=x2;x++) { putpixel(x,Round(y),7); if(p<=0) { p+=2*dy-2*dx; x++; } else { p+=-2*dx; } } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); Bre_line(50,100, 130,200, 7); getch(); closegraph(); } 9 1. 7. Viết chương trình gồm: - Hàm vẽ đoạn thẳng AB với màu bất kỳ theo thuật toán Bresenham ứng với trường hợp hệ số góc m của đường thẳng đi qua A, B thỏa mãn |m|≥1. - Hàm nhập tọa độ 2 điểm A, B trên màn hình sao cho đường thẳng đi qua A, B có hệ số góc m với |m|≥1. - Hàm main() nhập màu nét vẽ và vẽ đoạn thẳng AB với màu vừa nhập. #include <conio.h> #include <graphics.h> #include <math.h> #include <iostream.h> #include <stdio.h> #include <math.h> #define Round(a) long(a+0. 005) void Bre_line(int x1, int y1, int x2, int y2, int color) { int x,y,dx,dy,p; y=y1; dx = x2 - x1; dy = y2 - y1; p=dy-2*dx; // vẽ đường thẳng với m>1 for(x=x1; x<=x2;x++) { putpixel(x,Round(y),color); if(p<=0) { p+=2*dy-2*dx; x++; } else { p+=-2*dx; } } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); int xA,xB,yB,yA, mt; cout<<"nhap diem A\n "; cout<<"xA= ";cin>>xA; cout<<"yA= ";cin>>yA; cout<<"nhap diem B \n"; cout<<"xB= ";cin>>xB; cout<<"yB= ";cin>>yB; cont<<”nhap mau ve”; cin>>mt; Bre_line(xA,yA,xB,yB,mt); getch(); closegraph(); } 1. 8. Viết chương trình gồm: 10 - Hàm vẽ đoạn thẳng AB với màu bất kỳ theo thuật toán Bresenham ứng với trường hợp hệ số góc m của đường thẳng đi qua A, B thỏa mãn 0<|m|<1. - Hàm nhập tọa độ 2 điểm A, B trên màn hình sao cho đường thẳng đi qua A, B có hệ số góc m với 0<|m| <1. - Hàm main() nhập màu nét vẽ và vẽ đoạn thẳng AB. #include <conio.h>#include <graphics.h>#include <math.h> #include <iostream.h>#include <stdio.h>#include <math.h> #define Round(a) long(a+0. 005) void Bre_line(int x1, int y1, int x2, int y2, int color) { int x,y,dx,dy,p; y=y1; dx = x2 - x1; dy = y2 - y1; p=2*dy-dx; // vẽ đường thẳng với 0<m<1 for(x=x1; x<=x2;x++) { putpixel(x,Round(y),color); if(p>=0) { p+=2*dy-2*dx;y++; } else { p+=2*dy; } } } void main() { int gd,gm=0; gd=DETECT; initgraph(&gd,&gm,"C://TC//BGI"); setbkcolor(GREEN); int xA,xB,yB,yA, mt; cout<<"nhap diem A\n "; cout<<"xA= ";cin>>xA; //100 cout<<"yA= ";cin>>yA; //50 cout<<"nhap diem B \n"; cout<<"xB= ";cin>>xB; //200 cout<<"yB= ";cin>>yB; //130 cont<<”nhap mau ve”; cin>>mt; //7 Bre_line(xA,yA,xB,yB,mt); getch(); closegraph(); } ***************************************** [...]... tomauloang(200,200,30,15); getch(); 22 5.không gian 2D 5.2 Trên mặt phẳng tọa độ thực Oxy, cho hàm số y=2x+3 Giả sử cần vẽ đồ thị của hàm số trên đoạn [5,5] lên màn hình với khung nhìn (50,10)x(120,70) - Hãy tính tọa độ của gốc tọa độ O trên màn hình trong trường hợp này - Vẽ đồ thị hàm số trên cùng với hệ trục tọa độ Oxy -#include "iostream.h" #include "stdio.h" . Bresenham tương ứng để vẽ đoạn thẳng AB (trình bày trường hợp hệ số góc 0<|m| <1). - Hãy tính tọa độ của 15 điểm đầu tiên khi vẽ đoạn thẳng AB - Viết hàm tương ứng để vẽ đoạn thẳng AB với. thuật toán Bresenham tương ứng để vẽ đoạn thẳng AB (trình bày trường hợp hệ số góc |m|≥1). - Hãy tính tọa độ của 15 điểm đầu tiên khi vẽ đoạn thẳng AB - Viết hàm tương ứng để vẽ đoạn thẳng AB với. toán Midpoint tương ứng để vẽ đoạn thẳng AB (trình bày trường hợp hệ số góc 0<|m|<1). - Hãy tính tọa độ của 15 điểm đầu tiên khi vẽ đoạn thẳng AB - Viết hàm tương ứng để vẽ đoạn thẳng AB với

Ngày đăng: 11/06/2014, 20:10

TỪ KHÓA LIÊN QUAN

w