BÀI TẬP LỚN MÔN ĐỒ HOẠ
Trang 1báo cáo bài tập lớn môn đồ hoạ
Đề tài II
I/ Giới thiệu đề tài:
Đ ồ hoạ máy tính là một trong các lĩnh vực mà ngành tin học quan tâm và đã đợc
đa vào chơng trình đào tạo chính khoá cho ngành tin học tại các trờng Đại học Nội dung chủ yếu của môn học là nghiên cứu các thuật toán, các kỹ thuật vẽ hình trên máy tính, giúp sinh viên có thể xây dựng các phần mềm về đồ hoạ máy tính.
Là sinh viên Cao đẳng tin học, chúng em cũng đợc tiếp xúc làm quen với một số
kỹ thuật đồ hoạ trên máy vi tính thông qua các bài giảng và giáo trình do Thày Dơng Viết Thắng biên soạn Với kiến thức còn nhiều hạn chế nên ở đề tài này mục tiêu của chúng em chủ yếu là vận dụng một số kiến thức học đợc đa vào vận dụng thực tế thông qua bài tập lớn.
Trong phần Những bài tập lớn Đồ hoạ, nhóm chúng em thực hiện đề II bao gồm
cả Đồ hoạ phẳng và Đồ hoạ không gian Nội dung đề tài cụ thể gồm:
1 Vẽ khối đa diện đều có phân biệt nét khuất.
Trong đề tài, có một số mục đánh dấu (*) chúng em không giải thích còn lại phần giải thích của chúng em kèm sau mỗi thủ tục của chơng trình Trong báo cáo này chúng em có mô tả các thủ tục vẽ bằng một số hình ảnh minh hoạ cho thêm phần sinh
động ( Hình ảnh minh hoạ ở cuối báo cáo).
Procedure Gwrite(Var c,h:Integer;St:String);
Procedure Gwriteln(Var c,h:Integer;St:String);
Procedure Gread(Var c,h:Integer;Var luu:String);
Procedure Greadln(Var c,h:Integer;Var luu:String);
Trang 2Procedure KGPutPixelP(x,y,z:real;color:byte);
Procedure KGLinetoP(x,y,z:real;Color:byte);
Procedure KGLineP(x1,y1,z1,x2,y2,z2:real;color:byte);
Procedure KG_WriteXYZP(X,Y,Z:real;St:String;color:byte); Procedure VetrucP(D:integer;Color:byte);
St:='Chuong trinh do nhom G2 thuc hien <-> ';
St1:='Giao vien huong dan: Duong Viet Thang <->';
Trang 3Chu_Bong(C1+90,h1+30,7,0,4,14,cyan,3,'BAI TAP LON MON');
Chu_Bong(C1+260,h1+80,7,0,4,14,cyan,3,'KY THUAT DO HOA');
Chu_Bong(C1+50,H1+170,4,0,4,10,lightred,3,'GIAO VIEN: DUONG VIETTHANG');
Chu_Bong(c1+10,h1+230,7,0,4,10,lightred,3,'THUC HIEN: NHOM G2'); Chu_Bong(C1+280,H1+250,15,0,4,14,cyan,2,'');
cuaso(c1+228,h1+280,c1+410,h1+412,15,8,lightblue,6);
SetColor(10);OutTextxy(C1+200,H1+430,'PRESS ENTER TO RETURN MAINMENU');
OutTextXY(C1+240,H1+300,'1.DAO VAN DAT (CAP)');
OutTextXY(C1+240,H1+320,'2.NGUYEN CAO DAI');
OutTextXY(C1+240,H1+340,'3.TRINH BUI CHUNG');
OutTextXY(C1+240,H1+360,'4.DINH MINH DUC');
OutTextXY(C1+240,H1+380,'5.TRUONG CONG CHUONG');
Trang 5Ten_Muc[1]:='Do thi bac3/bac1';
Ten_Muc[2]:='Do thi tham so';
Ten_Muc[3]:='Do thi do cuc';
Trang 6(* -Chieu song song -*)
Procedure ProjecP(x,y,z:real;Var XProj,YProj:real);
Trang 7KgMovetoP(0,0,0);KgLinetoP(0,D,0,color);KG_WritexyzP(0,D,0,'Y',white);
KgMovetoP(0,0,0);KgLinetoP(0,0,D,color);KG_WritexyzP(0,0,D,'Z',white); End;
{*******************Het*Unit**************}
End
Trang 8Dgoc:=2*Pi/n; {Delta goc}
ggoc:=goc/180*Pi; {Doi goc thanh Radian}
For i:=1 to n+1 do
begin
x2[i]:=R2*cos(ggoc+(i-1)*DGoc);
Trang 9#43: Begin Kx:=Kx+0.1;Ky:=Ky+0.1; End;
#45: Begin Kx:=Kx-0.1;Ky:=Ky-0.1; End;
Trang 10if Y<Min then Min:=Y;
if Y>Max then Max:=Y;
Trang 11+ Thủ tục:
1 Procedure MinMaxF(Alpha,beta:real;Var Min,Max:Real);
Var X,Y,dx:Real;
Thủ tục có 2 đối số truyền vào là Alpha, Beta là 2 số thực, 2 biến ra là Min, Max
và 3 biến địa phơng là X,Y,dx thủ tục thực hiện việc truyền vào 2 đối số Alpha và Beta
là khoảng mà trên đó giá trị hàm số biến thiên dx:=(beta-alpha)/640; là số gia tỷ lệ
với số Pixel ( Rộng ) của màn hình đồ hoạ Với mỗi giá trị X:=X+dx ( Khởi đầu
X:=Alpha ) thì Y sẽ nhận đợc một giá trị Y:=F(x); Sau khi Y nhận đợc mỗi giá trị, lấy
Y so sánh với Min, nếu giá trị của Y <Min thì thực hiện gán Min:=Y Tơng tự nh Min
sau khi đối chiếu với các giá trị biến thiên của Y trên khoảng Alpha, Beta ta tìm đợc 2 giá trị Max của hàm số Đây cũng chính là mục tiêu của thủ tục và 2 giá trị này sau khi tìm đợc, đợc lu vào 2 biến là Min Và Max.
đồ thị trên đó Các đối số này đợc truyền vào khi ta gọi thủ tục trong chơng trình chính
Các biến địa phơng bao gồm: Min, Max 2 biến dùng lu giá trị Min, Max của hàm số biến thiên trong khoảng Alpha, Beta; Kx, Ky là 2 biến thực biểu diễn hệ số co dãn hình, Kx là hệ số co dãn bề ngang, Ky là hệ số co dãn bề dọc và đợc tính theo công thức
sau:
Kx:=(C2-C1)/(beta-alpha);
Ky:=(H2-H1)/(Max-Min);
X,Y là 2 biến thực biểu diễn giá trị biến thiên của Y theo X.
Dx là số gia tỷ lệ ( Đã nói ở phần trên); So Là mã trả về của chuỗi St khi ta thực hiện
việc đổi chuỗi sang số, số sau khi đổi đợc lu vào biến Mau ( Biến toàn cục ) Khi thủ tục
đợc gọi nó thông báo cho phép nhập màu cần vẽ qua 2 thủ tục đợc gọi trong UnitDt2 gồm:
Procedure Gwrite(Var c,h:Integer;St:String);
Trang 12if ham>max then Max:=ham;
if ham<min then Min:=ham
Trang 13if ham>max then max:=ham;
if ham<min then min:=ham
Trang 14st[6,1]:=0; st[6,2]:=a; st[6,3]:=a; {Dinh 6}
st[7,1]:=a; st[7,2]:=a; st[7,3]:=a; {Dinh 7}
st[8,1]:=a; st[8,2]:=a; st[8,3]:=0; {Dinh 8}
Trang 15If Not Net_Khuat then
Trang 16OutTextXY(20,30,#24#25' Tang giam Phi');
OutTextXY(20,50,#27#26' Tang giam Theta');
OutTextXY(20,70,'+/- Tang giam DE ');
Trang 172:Begin
Beep;
Ve_Do_Thi_Tham_so(c1,h1,c2,h2); End;
3:Begin
Beep;
Ve_Doc_cuc(c1,h1,c2,h2,Mau); End;
Trang 18OutTextXY(c1+5,H2-60,#26#27+': Move left/Right');
OutTextXY(c1+5,H2-40,#24#25+': Move Up/Down');
OutTextXY(c1+5,H2-20,'Enter: thuc hien');
SetColor(14);
Chu_Bong(70,150,8,0,5,10,Lightred,6,'TRUONG DHBK HA NOI');Chu_Bong(200,200,7,0,5,10,Lightred,6,'KHOA CNTT');
Trang 202.Menu chÝnh cña ch¬ng tr×nh:
3.§å thÞ bËc ba/ bËc nhÊt:
Trang 214.Đồ thị hàm số theo tham số:
5 Đồ thị độ cực:
6.Sao quay :
Trang 227.Khèi ®a diÖn cã nÐt khuÊt:
IV Tµi liÖu tham kh¶o:
1 §å ho¹ m¸y tÝnh ( Computer Graphics )
T¸c gi¶: D¬ng ViÕt Th¾ng
2 Mét sè ch¬ng tr×nh mÉu
Hµ Néi, Th¸ng 10 n¨m 2002