Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.07 MB, 39 trang )
Báo Cáo Thực Hành Đồ Họa Máy Tính
getch();
}
b. Chia miền xác định thành n đoạn bằng nhau, tính giá trị y lại các đầu mút
của các đoạn rồi dùng lệnh lineto(x,y) để vẽ :
#include
#include
#include
#include
#include
main(){
int gd = 0, gm=0,c;
float x,y;
initgraph(&gd,&gm,"");
setcolor(BLUE);
line(300,50,300,350);
line(100,200,500,200);
moveto(-180/1.5+300,200);
for(int x=-180;x<=180;){
y=20*sin(x*0.017);
lineto(x/1.5+300,y+200);
x=x+2;
setcolor(RED);
}
getch();
}
Kết quả Demo
Sinh viên thực hiện: Lê Long Bảo, Lớp: 12TLT.CNTT
Trang 6
Báo Cáo Thực Hành Đồ Họa Máy Tính
Câu a
Câu b
Sinh viên thực hiện: Lê Long Bảo, Lớp: 12TLT.CNTT
Trang 7
Báo Cáo Thực Hành Đồ Họa Máy Tính
Bài tập 2.
Các thuật toán cơ bản
Thuật toán :
Câu 1 :
Nhập các thông số cần thiết và tính ∆x, ∆y, m.
Xét các trường hợp :
- Nếu m>1 và m<-1 có điểm chung là thay ∆x, ∆y cho nhau.
- Nếu m<0 thì ∆y = -∆y.
Tính e(Ti), e(Si), e1.
Xét :
- Nếu m>1 hoặc m<-1 lặp điều kiện yA!=yB (y tăng chậm hơn).
o Putpixel(x,y,c).
o Nếu e<0 (ban đầu là e1) thì e+= e(Ti).
o Ngược lại e+=e(Si) và tăng x lên 1 đơn vị
- Nếu m>1 thì tăng y lên 1 và ngược lại giảm y 1 đơn vị.
o Lặp điều kiện xA!=xB (x tăng chậm hơn y).
o Putpixel(x,y,c).
o Nếu e<0 e+=e(Ti).
o Ngược lại e+=e(Si).
o m>0 tăng y.
o m<0 giảm y.
o Tăng x lên 1 đơn vị.
Câu 2 :
Nhập các số cần thiết và tính d.
Lặp nếu x<=y.
setviewport(xo,yo,xo+R,yo+R,0).
Putpixel 8 điểm đối xứng nhau qua tâm O
Nếu d<0 d+=4*x+6.
Ngược lại d+=4*(x-y)+10 và giảm y 1 đơn vị.
Tăng x lên 1 đơn vị.
Sinh viên thực hiện: Lê Long Bảo, Lớp: 12TLT.CNTT
Trang 8
Báo Cáo Thực Hành Đồ Họa Máy Tính
Chương trình nguồn :
Câu 1 :
#include
#include
#include
#include
#include
void bresline(int xa,int ya,int xb,int yb)
{int x,y,e,ekt,et,dx,dy,c;
float kt,dy1,dx1;
if(xa>xb) {
int t=xa;
int t1=ya;
xa=xb;
ya=yb;
xb=t;
yb=t1;
}
dx=xb-xa;dy=yb-ya;
dx1=float(dx);
dy1=float(dy);
kt=dy1/dx1;
if(kt>0&&kt<1){
ekt=dy+dy;e=ekt-dx;et=e-dx;
c=getcolor();y=ya;
for(x=xa;x<=xb;x++){
putpixel(x,y,c);
if(e<0) e=ekt+e;
Sinh viên thực hiện: Lê Long Bảo, Lớp: 12TLT.CNTT
Trang 9