Tài liệu Đồ 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

Thảo luận trong 'Kế Toán - Kiểm Toán' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    167
    Điểm thành tích:
    0
    Xu:
    0Xu
    ĐỀ 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

    BÁ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 tŕ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 tŕ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:

    Đồ hoạ phẳng:
    1. Vẽ đồ thị hàm bậc ba / bậc nhất lên cửa sổ (c1,h1,c2,h2).
    2. Vẽ đồ thị hàm số theo tham sè x=f1(t), y=f2(t) lên cửa sổ (c1,h1,c2,h2). (*)
    3. Vẽ đồ thị hàm số độc cực r=f(j) lên cửa sổ (c1,h1,c2,h2). (*)
    4. Vẽ h́nh sao n cánh tự quay quanh tâm lên cửa sổ (c1,h1,c2,h2). (*)

    Đồ hoạ không gian:
    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 tŕ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).

    II/ Unit chương tŕnh:

    Unit UnitDT2;
    Interface
    Var c,h,d,C1,h1,c2,m,h2,Co,Ho,Xn,Yn,R2,R1,mau,goc:Integer;
    X0,DE,Y0,x2,x1,y2,y1:Real;
    XA,YA,ZA, XB,YB,ZB, XC,YC,ZC, XD,YD,ZD,Xe,Ye,Ze,Xf,Yf,Zf,Xg,Yg,Zg,Xh,Yh,Zh:REAL;
    Phi,Theta,t,Tmax,Rho,Kx,Ky,R3,RR3,a,b,cx,E,Anfa,Beta,ax,bx:Real;
    ch:char;
    stv ,Td:String;
    Procedure MhDoHoa;
    Procedure Chu_Bong(c,h,Font,Huong,KThuoc,Mauc,Maub,v:Integer;Tde:string);
    Procedure Beep;
    Procedure Chu_Chay;
    Procedure About;
    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);
    Procedure Cuaso(C1,H1,C2,H2,Mau_tr,Mau_d,Mau_n,V:Integer);
    Procedure Menu_doc(K:Integer);
    Procedure Menu_Ngang(K:Integer);
    Procedure Projec(x,y,z:real;Var XProj,YProj:real);
    Procedure KGMoveto(x,y,z:real);
    Procedure KGPutPixel(x,y,z:real;color:byte);
    Procedure KGLineto(x,y,z:real;Color:byte);
    Procedure KGLine(x1,y1,z1,x2,y2,z2:real;color:byte);
    Procedure KG_WriteXYZ(X,Y,Z:real;St:String;color:byte);
    Procedure Vetruc(D:integer;Color:byte);
    Procedure ProjecP(x,y,z:real;Var XProj,YProj:real);
    Procedure KGMovetoP(x,y,z:real);
    Procedure 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);

    Implementation
    Uses Crt,graph;

    Procedure MhDoHoa;
    var Gd,Gm,ktra:integer;
    Path:String;

    Begin
    Path:='c:TpBgi';
    Repeat
    Gd:=detect; InitGraph(Gd,Gm,Path);
    Ktra:=GraphResult;
    If Ktra <> 0 then
    Begin
    Write('Loi do hoa! Go lai Path, Neu quen thi Enter!');
    Readln(Path);
    if Path='' then Halt(1);
    end;
    Until Ktra=0;
    end;
    {**********************}
    Procedure Chu_Bong(c,h,Font,Huong,KThuoc,Mauc,Maub,v:Integer;Tde:string);
    Var I:Integer;
    Begin
    SetTextStyle(Font,Huong,Kthuoc);
    SetColor(Maub);
    for i:=1 to v do
    OutTextXY(C+i,H-i,Tde);
    SetColor(Mauc);OutTextXY(c,h,Tde);
    end;

    {******************************}
    Procedure Beep;
    Begin
    Sound(450);
    Delay(100);
    Nosound;
    end;
    {***********************************}
    Procedure Chu_Chay;
    var cc,cc1:Integer;
    St,st1:String;
    Ch:Char;
    Begin
    Cc:=1;Cc1:=cc-340;
    St:='Chuong trinh do nhom G2 thuc hien <-> ';
    St1:='Giao vien huong dan: Duong Viet Thang <->';
    Repeat
    SetColor(15);
    OutTextXY(cc,470,St);
    SetColor(10);
    OutTextXY(cc1,470,St1);
    Delay(100);
    SetColor(0);
    OutTextXY(cc,470,St);
    OutTextXY(cc1,470,St1);
    Cc:=Cc+5;
    Cc1:=Cc1+5;
    If Cc>= 640 then Cc:=1;
    If Cc1>= 640 then Cc1:=1;
    Until KeyPressed;
    end;
    {***********************************}
    Procedure AboutNen;
    Begin
    C1:=10;H1:=10;H2:=470;
    Cuaso(c1,h1,C1+620,H1+450,15,7,9,5);
    { Chu_Bong(c1+50,h1,8,0,5,Lightred,cyan,5,'TRUONG DHBK HA NOI');
    Chu_Bong(C1+190,h1+50,8,0,4,Lightred,cyan,4,'KHOA CNTT');}
    Chu_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 VIET THANG');
    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');
    End;
    {**********************************}
    Procedure About;
    Begin
    ClearDevice;
    SetBkColor(0);
    Beep;
    Delay(50);
    Beep;
    AboutNen;
    Chu_Chay;
    Readln;
    ClearDevice;
    end;
    {*****************************}
    Procedure Gwrite(Var c,h:Integer;St:String);
    Begin
    OutTextxy(c,h,st);
    C:=c+TextWidth(st);
    end;
    {*************************************}
    Procedure Gwriteln(Var c,h:Integer;St:String);
    Var L:Integer;
    Begin
    L:=10;
    OutTextxy(c,h,st);
    c:=L;
    h:=h+TextHeight('A')+10;
    end;
    {*********************************}
    Procedure Gread(Var c,h:Integer;Var luu:String);
    Var ch:char;
    Begin
    Ch:=' ';
    Luu:=' ';
    repeat
    Ch:=readkey;
    If ch<> #13 then
    begin
    Gwrite(c,h,ch);
    luu:=luu+ch;
    end;
    Until ch=#13;
    End;
    {*********************************}
    Procedure Greadln(Var c,h:Integer;Var luu:String);
    Var ch:char;
    Begin
    Ch:=' ';
    Luu:=' ';
    repeat
    Ch:=readkey;
    If ch<> #13 then
    begin
    Gwrite(c,h,ch);
    luu:=luu+ch;
    end;
    Until ch=#13;
    C:=10;
    h:=h+10;
    end;
    {*********************************}
    Procedure Cuaso(C1,H1,C2,H2,Mau_tr,Mau_d,Mau_n,V:Integer);
    Var I:integer;
    Begin
    For I:=1 to v do
    Begin
    SetColor(Mau_tr);
    Line(C1+i,H1+i,C2-i,H1+i);
    Line(C1+i,H1+i,C1+i,H2-i);
    SetColor(Mau_d);
    Line(C1+i,H2-i,C2-i,H2-i);
    Line(C2-i,H2-i,C2-i,H1+i);
    end;
    {Ve Nen }
    setFillStyle(1,Mau_n);
    Bar(C1+v,H1+V,C2-V,H2-V);
    End;
    {**************************}

    Procedure Menu_Ngang(K:Integer);
    Var Ten_Muc:array[1 3] of string;
    I,Rong,Cao,a,b:integer;
    Begin
    Ten_Muc[1]:=' Program';
    Ten_Muc[2]:=' About ';
    Ten_Muc[3]:=' Quit';
    a:=20;b:=20;Rong:=200;Cao:=30;
    For i:=1 to 3 do
    Begin
    If i=k then CuaSo(a+(i-1)*Rong,b,a+i*rong,b+Cao,8,15,7,4)
    Else CuaSo(a+(i-1)*Rong-1,b,a+i*Rong,b+Cao,15,8,7,4);
    SetColor(14);
    OutTextxy(a+(i-1)*rong+10,b+10,Ten_Muc);
    End;
    End;
    {*******************************}
    Procedure Menu_doc(K:Integer);
    Var Ten_Muc:array[1 6] of string;
    I,Rong,Cao,a,b:integer;
    Begin
    Ten_Muc[1]:='Do thi bac3/bac1';
    Ten_Muc[2]:='Do thi tham so';
    Ten_Muc[3]:='Do thi do cuc';
    Ten_Muc[4]:='Round Star';
    Ten_Muc[5]:='Da dien deu';
    a:=20;b:=50;Rong:=150;Cao:=30;
    For i:=1 to 5 do
    Begin
    If i=k then CuaSo(a,b+(I-1)*Cao,a+Rong,b+i*Cao,8,white,3,4)
    Else CuaSo(a,b+(i-1)*Cao-1,a+Rong,b+i*Cao,15,8,9,4);
    SetColor(10);
    OutTextxy(a+10,b+(i-1)*Cao+10,Ten_Muc);
    End;
    End;


    Procedure Projec(x,y,z:real;Var XProj,YProj:real);
    Var Xobs,Yobs,Zobs:real;
    Aux1,Aux2,Aux3,Aux4,Aux5,Aux6,Aux7,Aux8:real;
    th,ph:real;

    Begin
    th:=Pi*theta/180;
    Ph:=Pi*Phi/180;
    Aux1:=sin(th);
    Aux2:=sin(ph);
    Aux3:=cos(th);
    Aux4:=cos(ph);
    Aux5:=Aux3*Aux2;
    Aux6:=Aux1*Aux2;
    Aux7:=Aux3*Aux4;
    Aux8:=Aux1*Aux4;
    XObs:=-x*Aux1+Y*Aux3;
    YObs:=-x*Aux5-Y*Aux6+Z*Aux4;
    ZObs:=-x*Aux7-Y*Aux8-Z*Aux2+Rho;
    If ZObs<>0 then
    begin
    XProj:=DE*XObs/ZObs;
    YProj:=DE*YObs/ZObs;
    end else
    begin
    XProj:=DE*XObs/0.000001;
    YProj:=DE*YObs/0.000001;
    end
    End;
    (*-----------------------------------*)
    Procedure KGMoveto(x,y,z:real);
    Var Xp,Yp:Real;c,h:integer;
    Begin
    Projec(x,y,z,Xp,Yp);
    C:=CO+round(Xp*Kx);
    H:=HO-round(Yp*Ky);
    moveto(C,H);
    End;

    Procedure KGPutPixel(x,y,z:real;color:byte);
    Var Xp,Yp:Real;c,h:integer;
    Begin
    Projec(x,y,z,Xp,Yp);
    C:=Co+round(Xp*Kx);
    H:=Ho-round(Yp*Ky);
    PutPixel(C,H,color);
    End;

    Procedure KGLineto(x,y,z:real;Color:byte);
    Var Xp,Yp:Real;c,h:integer;
    Begin
    SetColor(color);
    Projec(x,y,z,Xp,Yp);
    C:=Co+round(XP*Kx);
    H:=Ho-round(YP*Ky);
    lineto(C,H);
    End;

    Procedure KGLine(x1,y1,z1,x2,y2,z2:real;color:byte);
    Begin
    KgMoveto(x1,y1,z1);
    KgLineto(x2,y2,z2,color);
    End;

    Procedure KG_WriteXYZ(X,Y,Z:real;St:String;color:byte);
    Var Xp,Yp:Real;c,h:integer;
    Begin
    Projec(x,y,z,Xp,Yp);
    C:=Co+round(XP*Kx);
    H:=Ho-round(YP*Ky);
    SetColor(color);
     
Đang tải...