Đồ họa máy tính
Lời nói đầu
Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu
về cơ sở toán học, các thuật toán cũng như các kĩ thuật cho phép tạo, hiển
thị và điều khiển hình ảnh trên màn hình máy tính. Đồ họa máy tính liên
quan ít nhiều đến một số lĩnh vực như đại số, hình học giải tích và hình học
họa hình, quang học…… và kĩ thuật máy tính và đặc biệt là chế tạo phần
cứng ( các loại màn hình, các thiết bị nhập xuất, các vi mạch đồ họa).
Nghiên cứu các phép biến đổi hình học trong không gian ba chiều là
một trong những nội dung quan trọng.
Do quá trình tìm hiểu còn nhiều thiếu sót nên chương trình còn nhiều
hạn chế, nhóm thực hiện rất mong nhận được ý kiến đóng góp từ phía cô
giáo và các bạn để phần mềm được hoàn thiện hơn.
Hà Nội, ngày 26 tháng 2 năm 2013
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
1
Đồ họa máy tính
MỤC LỤC
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
2
Đồ họa máy tính
CHƯƠNG I: KHẢO SÁT
I. Mục đích nghiên cứu
Vẽ khối cầu và lăng trụ trong không gian . Hiện thị trên màn hình
. Vị trí quan sát xuất phát từ 1 điểm được gọi là phối cảnh .
II. Đối tượng nghiên cứu
Khối cầu và lăng trụ .
III. Hướng giải quyết
Quan sát các khối cầu và hình khối lăng trụ . Từ đó chúng ta sẽ có
cách nhìn thực tế của khối cầu và lăng trụ . Tìm hiểu các phương
trình của khối cầu . Từ đó chúng ta sẽ vẽ đc nó như mong muốn.
{ if (phepchieu==1)
{ xp=d*x/z; yp=d*y/z;}
else { xp=x; yp=y;}
}
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
5
Đồ họa máy tính
II Khối cầu
Chiều cao và rộng của khối cầu :
D1=200
D2 =100
D1=100
D2 =200
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
6
Đồ họa máy tính
III .Lăng trụ tam giác
Lăng trụ đứng .
Lăng trụ nằm ngang .
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
7
Đồ họa máy tính
IV . Lăng trụ tứ giác .
Lăng trụ đứng .
Lăng trụ nằm ngang .
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
8
Đồ họa máy tính
CHƯƠNG III . Chương trình
#include<graphics.h>
//xây d?ng các th? t?c ph? tr?
void chuyenhqs(float x, float y, float z, float &x1, float &y1,float &z1)
{ x1=-x*sin(teta)+y*cos(teta);
y1=-x*cos(teta)*sin(phi)-y*sin(teta)*sin(phi)+z*cos(phi);
z1=-x*sin(teta)*cos(phi)-y*cos(teta)*sin(phi)-z*sin(phi)+r;
}
void chieu3D_2D(float x, float y, float z, float &xp, float &yp)
{ if (phepchieu==1)
{ xp=d*x/z; yp=d*y/z;}
else { xp=x; yp=y;}
}
void chuyenmh(float x, float y, int &xm, int &ym)
{ xm=(int)(tlx*x+xo);
ym=(int)(-tly*y+yo);
}
void chuyenden(float x, float y, float z)
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
10
Đồ họa máy tính
{ float x1, y1, z1, xp, yp;
int xm,ym;
chuyenhqs(x,y,z,x1,y1,z1);
chieu3D_2D(x1,y1,z1,xp,yp);
chuyenmh(xp,yp,xm,ym);
moveto(xm,ym);
}
void veden(float x, float y, float z)
{ float x1, y1, z1, xp, yp;
int xm,ym;
chuyenhqs(x,y,z,x1,y1,z1);
chuyenden(0,5,0);
int i=1;
while(i<n)
{
veden(x,y,z);
veden(x1,y1,z1);
chuyenden(x,y,z);
if(i%2==0)
{
x1=x1;
z1=z1-2;
}
else
{
x1=x1+4 ;
z1=z1-2;
}
if(i%2==0)
{
x=x;
z=z-2;
}
else
{
x=x+4 ;
z=z-2;
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
12
Đồ họa máy tính
int n,x=5,y=0,z=5,x1=5,y1=0,z1=0,x2=5,y2=0,z2=0;
printf("\nNhap vao so dinh o day lang tru : ");
scanf("%d",&n);
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
13
Đồ họa máy tính
int i=1;
chuyenden(0,0,5);
while(i<n)
{
veden(x,y,z);
veden(x1,y1,z1);
chuyenden(x,y,z);
if(i%2==0)
{
y1=y1;
x1=x1-2;
}
else
{
y1=y1+4 ;
x1=x1-2;
}
if(i%2==0)
{
y=y;
x=x-2;
}
else
veden(0,0,0);
getch();
}
void E(int xc,int yc,int xradius,int yradius, int color)
{
int xcenter,ycenter;
xcenter=(int)(tlx1*(xc-xw1)+xv1);
ycenter=(int)(tly1*(yw2-yc)+yv1);
int x,y; float c,p;
x=0; y=yradius;
c=(float)yradius/xradius;
c=c*c; p=2*c-2*yradius+1;
while (c*x<=y)
{
putpixel(xcenter+x,ycenter+y,color);
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
15
Đồ họa máy tính
putpixel(xcenter-x,ycenter+y,color);
putpixel(xcenter+x,ycenter-y,color);
putpixel(xcenter-x,ycenter-y,color);
if (p<0) p += 2*c*(2*x+3);
else
{
p +=4*(1-y)+2*c*(2*x+3);
y ;
}
x++;
}
scanf(" %d",&dy);
dx1=dx;
while(dx>=1)
{
E(0,0,dx,dy,14);
dx=dx-7;
}
while(dy>=1)
{
E(0,0,dx1,dy,14);
dy=dy-15;
}
getch();
}
int main()
{ int gd=0, gm=0;
int chon,chon1;
initgraph(&gd,&gm,"");
khoitaohqs();
do
{
system("cls");
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
17
Đồ họa máy tính
printf("\n1. KHOI CAU");
printf("\n2. LANG TRU DUNG");
printf("\n3. LANG TRU NAM NGANG");
printf("\n4. THOAT");
Đồ họa máy tính
Nhóm 26-KHMT3-K5 ĐH Công Nghiệp Hà Nội
19