计算机图形程序实例

编写一个程序来绘制基本的图形构造, 如直线, 圆, 弧, 椭圆和矩形。

#include< graphics.h> #include< conio.h> void main(){ intgd=DETECT, gm; initgraph (& gd, & gm, "c:\\tc\\bgi"); setbkcolor(GREEN); printf("\t\t\t\n\nLINE"); line(50, 40, 190, 40); printf("\t\t\n\n\n\nRECTANGLE"); rectangle(125, 115, 215, 165); printf("\t\t\t\n\n\n\n\n\n\nARC"); arc(120, 200, 180, 0, 30); printf("\t\n\n\n\nCIRCLE"); circle(120, 270, 30); printf("\t\n\n\n\nECLIPSE"); ellipse(120, 350, 0, 360, 30, 20); getch(); }

输出量
计算机图形程序实例

文章图片
编写程序以使用填充有不同颜色和图案的递增圆形绘制动画。
#include< graphics.h> #include< conio.h> void main(){ intgd=DETECT, gm, i, x, y; initgraph(& gd, & gm, "C:\\TC\\BGI"); x=getmaxx()/3; y=getmaxx()/3; setbkcolor(WHITE); setcolor(BLUE); for(i=1; i< =8; i++){setfillstyle(i, i); delay(20); circle(x, y, i*20); floodfill(x-2+i*20, y, BLUE); } getch(); closegraph(); }

输出量
计算机图形程序实例

文章图片
程序制作屏幕保护程序, 以显示在随机位置填充不同颜色的不同尺寸的圆圈。
#include< stdio.h> #include< conio.h> #include"graphics.h"#include"stdlib.h"void main(){ intgd=DETECT, gm, i=0, x, xx, y, yy, r; //Initializes the graphics system initgraph(& gd, & gm, "c:\\tc\\bgi"); x=getmaxx(); y=getmaxy(); while(!kbhit()) {i++; // setfillstyle(random(i), random(30)); circle(xx=random(x), yy=random(y), random(30)); setfillstyle(random(i), random(30)); floodfill(xx, yy, getmaxcolor()); delay(200); } getch(); }

输出量
计算机图形程序实例

文章图片
编写一个程序, 以使用内置功能制作移动彩色汽车。
#include< graphics.h> #include< conio.h> int main(){ intgd=DETECT, gm, i, maxx, cy; initgraph(& gd, & gm, "C:\\TC\\BGI"); setbkcolor(WHITE); setcolor(RED); maxx = getmaxx(); cy = getmaxy()/2; for(i=0; i< maxx-140; i++){cleardevice(); line(0+i, cy-20, 0+i, cy+15); line(0+i, cy-20, 25+i, cy-20); line(25+i, cy-20, 40+i, cy-70); line(40+i, cy-70, 100+i, cy-70); line(100+i, cy-70, 115+i, cy-20); line(115+i, cy-20, 140+i, cy-20); line(0+i, cy+15, 18+i, cy+15); circle(28+i, cy+15, 10); line(38+i, cy+15, 102+i, cy+15); circle(112+i, cy+15, 10); line(122+i, cy+15 , 140+i, cy+15); line(140+i, cy+15, 140+i, cy-20); rectangle(50+i, cy-62, 90+i, cy-30); setfillstyle(1, BLUE); floodfill(5+i, cy-15, RED); setfillstyle(1, LIGHTBLUE); floodfill(52+i, cy-60, RED); delay(10); } getch(); closegraph(); return 0; }

输出量
计算机图形程序实例

文章图片
计算机图形程序实例

文章图片
在C的控制台输出上编写程序以印地文脚本打印你的姓名。
#include< stdio.h> #include< conio.h> #include< graphics.h> #include< dos.h> void main(){ int gd=DETECT, gm; initgraph(& gd, & gm, "c:\\tc\\bgi"); setbkcolor(9); line(100, 100, 370, 100); line(120, 100, 120, 170); arc(143, 100, 0, 180, 23); line(165, 100, 165, 155); arc(150, 155, 100, 0, 15); line(180, 100, 180, 170); circle(210, 140, 10); line(210, 130, 250, 130); circle(280, 140, 10); line(280, 130, 330, 130); line(330, 100, 330, 170); line(345, 100, 345, 170); ellipse(337, 100, 0, 180, 9, 18); getch(); }

输出量
计算机图形程序实例

文章图片
使用箭头键编写一个程序控制球。
#include< graphics.h> #include< stdio.h> void main(){ intgd=DETECT, gm, x, y, r=40; charch; initgraph(& gd, & gm, "C:/TURBOC3/BGI"); setbkcolor(3); x=getmaxx()/2; y=getmaxy()/2; setfillstyle(1, RED); circle(x, y, r); floodfill(x, y, getmaxcolor()); while((ch=getch())!=13){switch(ch){case 75: if(x> =r+1){cleardevice(); circle(x-=10, y, r); floodfill(x, y, getmaxcolor()); }break; case 72: if(y> =r+1){cleardevice(); circle(x, y-=10, r); floodfill(x, y, getmaxcolor()); }break; case 77: if(x< =(getmaxx()-r-10)){cleardevice(); circle(x+=10, y, r); floodfill(x, y, getmaxcolor()); }break; case 80: if(y< =(getmaxy()-r-10)){cleardevice(); circle(x, y+=10, r); floodfill(x, y, getmaxcolor()); }} } getch(); }

【计算机图形程序实例】输出量
计算机图形程序实例

文章图片
编写程序以实现数字时钟。
#include< stdio.h> #include< conio.h> #include< graphics.h> #include< dos.h> struct time t; void display(int, int, int); void main(){ int i=0, gd=DETECT, gm, hr, min, sec; clrscr(); initgraph(& gd, & gm, "c:\\turboc3\\bgi"); setcolor(GREEN); settextstyle(4, 0, 7); while(!kbhit()) {gettime(& t); hr=t.ti_hour; min=t.ti_min; sec=t.ti_sec; i++; display(100, 100, hr); display(200, 100, min); display(300, 100, sec); sound(400); delay(30); nosound(); delay(930); cleardevice(); } getch(); }void display(int x, int y, int num){char str[3]; itoa(num, str, 10); settextstyle(4, 0, 7); outtextxy(180, 100, ":"); outtextxy(280, 100, ":"); outtextxy(x, y, str); rectangle(90, 90, 380, 200); rectangle(70, 70, 400, 220); outtextxy(90, 250, "Digital Clock"); }

输出量
计算机图形程序实例

文章图片
编写程序制作益智游戏。
#include< iostream.h> #include< dos.h> #include< conio.h> #include< graphics.h> #include< stdio.h> int a[5][5]; int t[16]={0, 4, 11, 12, 7, 1, 15, 5, 13, 6, 10, 3, 2, 14, 8, 9}; int test[16]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; struct pos{int h, v; } p[4][4]; int row=4, col=4; void game(int); //MOVEMENTvoid rec(); //DRAWING RECTANGLEvoid pri(); //PRINTING NUMBERS INITIALLYint getkey(); // TO TRACE KEY PRESSEDinline void space() {cout< < ""; }inline void print(int r, int c) { cout< < a[r][c]; }void init(); //TO STORE CO-ORDINATESint stop(); // STOPING CRITERIONvoid gopr(int, int); //TO PRINT NUMBER IN GAME void main(){int gm=DETECT, gd=DETECT; initgraph(& gm, & gd, "c:\\turboc3\\bgi"); int d, cr=1; init(); rec(); print(); while(cr!=16){d=getkey(); game(d); cr=stop(); }settextstyle(10, 0, 1); outtextxy(400, 300, "You are winner!"); getch(); }void rec(){setcolor(5); for(int i=0; i< 200; i+=50){for(int j=0; j< 240; j+=60)rectangle(j+100, i+100, j+50, i+60); }}void pri(){int k=1; for(int x=0, i=6; x< 4; x++, i+=3){for(int y=0, j=10; y< 4& & k< 16; y++, j+=7, k++){gotoxy(p[x][y].h, p[x][y].v); cout< < a[x][y]; }}}int getkey(){union REGS i, o; while(!kbhit()); i.h.ah=0; int86(22, & i, & o); return(o.h.ah); } void init() {int k=1; for(int x=0, i=6; x< 4; x++, i+=3){for(int y=0, j=10; y< 4; y++, j+=7){p[x][y].h=j; p[x][y].v=i; a[x][y]=t[k++]; }}}void game(int s){int r=row-1; int c=col-1; if(s==77 & & c!=0)//right{col--; a[r][c]=a[r][c-1]; gopr(r, c-1); space(); gopr(r, c); print(r, c-1); }if(s==80 & & r!=0)//down{row--; a[r][c]=a[r-1][c]; gopr(r-1, c); space(); gopr(r, c); print(r-1, c); }if(s==75 & & c!=3)//left{a[r][c]=a[r][c+1]; col++; gopr(r, c+1); space(); gopr(r, c); print(r, c+1); }if(s==72 & & r!=3)//up{a[r][c]=a[r+1][c]; row++; gopr(r+1, c); space(); gopr(r, c); print(r+1, c); } } void gopr(int x, int y){gotoxy(p[x][y].h, p[x][y].v); }int stop(){int k=0, d=1; for(int x=0; x< 4; x++){for(int y=0; y< 4; y++){if(a[x][y]==test[k])d++; k++; }}return d; }

输出量
计算机图形程序实例

文章图片
计算机图形程序实例

文章图片
编写程序以使用正弦波形实现弹跳球。
#include< stdio.h> #include< graphics.h> #define HEIGHT getmaxy()#define WIDTH getmaxx()#define GROUND 450#define MAXHEIGHT 420 void main(){int x, y=0, t=MAXHEIGHT, c=1; int gd=DETECT, gm; initgraph(& gd, & gm, "C:\\T urboC3\\BGI"); for(x=40; x< =getmaxx(); x=x+2) {//Draw Groundrectangle (0, MAXHEIGHT, getmaxx(), MAXHEIGHT+5); floodfill (5, MAXHEIGHT+3, WHITE); //Draw Ballpieslice(x, y, 0, 360, 20); //floodfill(x, y, RED); delay(100); if(y> MAXHEIGHT-20){c=0; t=t-40; }if(y< =(MAXHEIGHT-t)){c=1; }if(t> =40)y=y+(c? 15:-15); cleardevice(); //Exit upon keypressif(kbhit())break; }getch(); }

输出量
计算机图形程序实例

文章图片
编写一个程序来实现垂直方向的弹跳球。
#include < stdio.h> #include < conio.h> #include < graphics.h> #include < dos.h> int main() {int gd = DETECT, gm; int i, x, y, flag=0; initgraph(& gd, & gm, "C:\\TC\\BGI"); x = getmaxx()/2; y = 30; while (!kbhit()) {if(y > = getmaxy()-30 || y < = 30)flag = !flag; /* draws the gray board */setcolor(RED); setfillstyle(SOLID_FILL, RED); circle(x, y, 30); floodfill(x, y, RED); delay(50); cleardevice(); if(flag){y = y + 5; } else{y = y - 5; }} getch(); closegraph(); return 0; }

输出量
计算机图形程序实例

文章图片
使用复合转换编写一个平移, 旋转和缩放的程序。
#include< stdio.h> #include< conio.h> #include< graphics.h> #include< math.h> int x1, y1, x2, y2, x3, y3, a, b; void draw(); void rotate(); int main(void){int gd=DETECT, gm; initgraph(& gd, & gm, "C:\\TC\\BGI"); printf("Enter first co-ordinate value for triangle:"); scanf("%d%d", & x1, & y1); printf("Enter second co-ordinatevalues for triangle:"); scanf("%d%d", & x2, & y2); printf("Enter third co-ordinate valuesfor triangle:"); scanf("%d%d", & x3, & y3); draw(); getch(); rotate(); getch(); return 0; }void draw(){line(x1, y1, x2, y2); line(x2, y2, x3, y3); line(x3, y3, x1, y1); } void rotate() { int a1, a2, a3, b1, b2, b3; float angle; printf("Enter the rotation angle co-ordinates:"); scanf("%f", & angle); cleardevice(); angle=(angle*3.14)/180; a1=a+(x1-a)*cos(angle)-(y1-b)*sin(angle); b1=b+(x1-a)*sin(angle)+(y2-b)*cos(angle); a2=a+(x2-a)*cos(angle)-(y1-b)*sin(angle); b2=b+(x2-a)*sin(angle)+(y2-b)*cos(angle); a3=a+(x3-a)*cos(angle)-(y1-b)*sin(angle); b3=b+(x3-a)*sin(angle)+(y2-b)*cos(angle); printf("ROTATION"); printf("\n Changed coordinates\n"); printf("%d %d\n%d %d\n%d %d", a1, b1, a2, b2, a3, b3); line(a1, b1, a2, b2); line(a2, b2, a3, b3); line(a3, b3, a1, b1); }

输出量
计算机图形程序实例

文章图片
计算机图形程序实例

文章图片
编写程序以使用中点实现方法绘制圆。
#include< stdio.h> #include< graphics.h> void drawcircle(int x0, int y0, int radius){int x = radius; int y = 0; int err = 0; while (x > = y){ putpixel(x0 + x, y0 + y, 7); putpixel(x0 + y, y0 + x, 7); putpixel(x0 - y, y0 + x, 7); putpixel(x0 - x, y0 + y, 7); putpixel(x0 - x, y0 - y, 7); putpixel(x0 - y, y0 - x, 7); putpixel(x0 + y, y0 - x, 7); putpixel(x0 + x, y0 - y, 7); if (err < = 0) {y += 1; err += 2*y + 1; } if (err > 0) {x -= 1; err -= 2*x + 1; }}} void main(){ int gdriver=DETECT, gmode, error, x, y, r; initgraph(& gdriver, & gmode, "c:\\turboc3\\bgi"); printf("Enter radius of circle: "); scanf("%d", & r); printf("Enter co-ordinates of center(x and y): "); scanf("%d%d", & x, & y); drawcircle(x, y, r); getch(); }

输出量
计算机图形程序实例

文章图片
编写程序以绘制贝塞尔曲线。
#include < stdio.h> #include < stdlib.h> #include < graphics.h> #include < math.h> void bezier (int x[4], int y[4]){int gd = DETECT, gm; int i; double t; initgraph (& gd, & gm, "C:\\tc\\bgi"); for (t = 0.0; t < 1.0; t += 0.0005){ double xt = pow (1-t, 3) * x[0] + 3 * t * pow (1-t, 2) * x[1] +3 * pow (t, 2) * (1-t) * x[2] + pow (t, 3) * x[3]; double yt = pow (1-t, 3) * y[0] + 3 * t * pow (1-t, 2) * y[1] +3 * pow (t, 2) * (1-t) * y[2] + pow (t, 3) * y[3]; putpixel (xt, yt, WHITE); }for (i=0; i< 4; i++) putpixel (x[i], y[i], YELLOW); getch(); closegraph(); return; }void main(){int x[4], y[4]; int i; printf ("Enter the x- and y-coordinates of the four control points.\n"); for (i=0; i< 4; i++)scanf ("%d%d", & x[i], & y[i]); bezier (x, y); }

输出量
计算机图形程序实例

文章图片
计算机图形程序实例

文章图片
程序围绕其中点旋转矩形
#include< iostream.h> #include < stdio.h> #include< conio.h> #include< graphics.h> #include< stdlib.h> #define pi 3.14class arc{ float x[10], y[10], theta, h1, k1, r[0][10], ang; float p[10][10], p1[10][10], x1[10], y1[10], xm, yx; int i, k, j, n; public: void get(); void cal(); void map(); void graph(); void plot(); void plot1(); }; void arc::get(){ cout "< < "\n ENTER ANGLE OF ROTATION "; cin> > ang; n = 4; cout< < "\n ENTER"; for (i=0; i< n; i++){cout< < "\n x["< i< < "] and y["< < i< < "]"; cin> > x[i]> > y[i]; }h1=x [0] + (([1]-x[0])/2); k1=y[0]+(([3]-y[0])/2); cout< < "\n MIDPOINT OF RECTANGLE IS--"< < h1< < "\t"< < k1; theta=(ang*pi)/180?; r[0][0]=cos (theta); r[0][1]= -sin?(theta); r[0][2]=(-h1*cos(theta))+(k1*sin(theta)+h1; r[1][0]=sin (theta); r [1][1]=cos (theta); r [1][2]=(-h1*sin(theta))+(-k1*cos(theta)+k1; r[2][0]=0; r[2][1]=0; r[2][2]=1; }void arc ::cal(){ for(i=0; i< n; i++) {p[0][i]=x[i]; p[1][i]=y[i]; p[2][i]=1; } for(i=0; i< 3; i++) {for(j=0; j< n; j++){p1[i][j]=0; for (k=0; k< 3; k++){p1[i][j]+=r[i][k]*p[k][j]; }} } for(i=0; i< n; i++) {x1[i]=p1[0][i]; y1[i]=p[1][i]; }}void arc::map(){ int gd=DETECT, gm; initgraph (& gd, & gm, ""); int errorcode = graphresult(); /*an error occurred */if (errorcode!=grOK) {printf("Graphics error: %s \n", grapherrormsg (errorcode)); printf("Press and key to halt: "); getch(); exit(1); /* terminate with an error code */}}void arc::graph(){ xm=getmaxx()/2; ym=getmaxy()/2; line (xm, 0, xm, 2 * ym); line (0, ym, 2 * xm, ym); }void arc :: plot 1(){ for (i=0; i< n-1; i++) {circle (x1[i]+xm, (-y1[i]+ym), 2); line (x1[i]+xm, (-y1[i]+ym), x[i+1] xm, (-y1[0]+ym)); } line (x1[n-1] +xm, (-y1[n-1]+ym), x1[0]+xm, (-y1[0]+ym)); getch(); }void arc :: plot (){ for (i=0; i< n-1; i++) {circle (x[i]+xm, (-y[i]+ym), 2); line (x[i]+xm, (-y[i]+ym), x[i+1] xm, (-y[i+1]+ym)); } circle (x[n-1]+xm, (-y[n-1]+ym), 2); line (x[n-1]+xm, (-y[n-1]+ym), x[0]+xm, (-y[0]+ym)); getch(); }void main (){ class arc a; clrscr(); a.map(); a.graph(); a.get(); a.cal(); a.plot(); a.plot1(); getch(); }

输出量
计算机图形程序实例

文章图片
程序使用Liang Barsky方法剪切线
#include< iostream.h> #include < stdio.h> #include< conio.h> #include< graphics.h> #include< process.h> class liang{ float x1, x2, y1, y2, u1, u2, dx, dy, xm, ym; float xmin, ymin, xmax, ymax, p[4], q[4], r[5], r[5]; int gd, gm, test, s, k; public: void clipliang(); void get(); void map(); void graph(); }; void liang :: map(){ gd=DETECT; initgraph (& gd, & gm, ""); int errorcode = graphresult(); /*an error occurred */if (errorcode!=grOK) {printf("Graphics error: %s \n", grapherrormsg (errorcode)); printf("Press and key to halt: "); getch(); exit(1); /* terminate with an error code */}}void liang::graph(){ xm=getmaxx()/2; ym=getmaxy()/2; line (xm, 0, xm, 2 * ym); line (0, ym, 2 * xm, ym); }void liang :: get(){ cout< < "\n ENTER WINDOW COORDINATES xwmin, ywmin, xwmax, ywmax"; cin> > xmin> > ymin> > xmax> > ymax> > ; rectangle (xmin+xm, -ymin+ym, xmax+xm, -ymax+ym); //rectangle (320+xwmin, 240-ywmax, 320+xwmax, 240-ywmin); cout< < "\n ENTER END POINTS OF LINE (x1, y1)(x2, y2) "; cin> > x1> > y1> > x2> > y2; line (x1+xm, -y1+ym, x2+xm, -y2+ym); getch(); }// line (x1, y1, x2, y2); void liang :: clipliang(){ float x=0, y=1; dx=x2-x1; dy=y2-y1; p[0]=-dx; p[1]=dx; p[2]=-dy; p[3]=dy; q[0]=x1-xmin; q[1]=xmax-x1; q[2]=y1-ymin; q[3]=ymax-y1; for (k=0; k< 4; k++) {if (p[k]==0& & q[k]< 0){cout< < "\n OUTSIDE"; getch(); exit(0); }if (p[k]< 0){r[k]=q[k]/p[k]; if (r1[k]< y)y=r1[k]; u2=y; } }if (u1> u2){cout< < "\n COMPLETE OUTSIDE WINDOW"; getch(); exit(0); }void main (){ liang1; clrscr(); l.map(); l.graph(); l.get(); l.clipliang(); getch(); }

输出量
计算机图形程序实例

文章图片
用于实现3维标准透视投影的程序。
#include< iostream.h> #include< conio.h> #include< graphics.h> #include< math.h> #include< stdio.h> #include< stdlib.h> #define pi 3.14class per{ float x[10], y[10], z [10], d; float x1 [10], y1[10], xm, ym, z1 [10]; int i, k, j, n; public: void get(); void perpro(); void map(); void graph(); void plot1(); }void per::get(){ cout< < "\n ENTER OF VERTICES"; cin> > n; cout< < "\n ENTER"; for (i=0; i< n; i++) {cout< < "\n x["?i< < "], y["< < i< < "] and z ["< < i< < "]"; cin> > x[i]> > y[i]> > z[i]; }cout< < "\n ENTER WIDTH FOR Z-AXIS-d"; cin> > d; }void per:: perpro(){ for(i=0; i< n; i++) {x1[i]=(d*x[i])/(z[i]+d); y1[i]=(d*y[i])/(z[i]+d); z1[i]=0; } cout< < "\n ENTER PROJECTION, VERTICES OF POLYGON ARE--"; for(i=0; i< n; i++) {cout< < "x?["< < i< < "]="< < x1[i]< < "\t"; cout< < "y?["< < i< < "]="< < y1[i]< < "\t"; cout< < "z?["< < i< < "]="< < z1[i]< < "\t"; cout< < "\n"; }}void per :: map(){ int gd=DETECT; initgraph (& gd, & gm, ""); int errorcode = graphresult(); /*an error occurred */if (errorcode!=grOK) {printf("Graphics error: %s \n", grapherrormsg (errorcode)); printf("Press and key to halt: "); getch(); exit(1); /* terminate with an error code */}}void per::graph(){ xm= get maxx()/2; ym=get maxy()/2 line (xm, 0, xm, 2 * ym); line (0, ym, 2 * xm, ym); }void per::plot1(){ for(i=0; i< n-1; i++) {line(x1[i]*100+xm, (-y1[i]*100+ym), x1[i+1]*100+xm, (-y1[i+1]*100+ym)); }line(x1[n-1]*100+xm, (-y1[n-1]*100+ym), x1[0]*100+xm, (-y1[0]*100+ym)); getch(); }void main(){ class per a; clrscr(); a.map(); a.graph(); a.get(); a.perpro(); a.graph(); a.plot1(); getch(); }

输出量
计算机图形程序实例

文章图片
实现3维平行投影的程序。
#include< iostream.h> #include< conio.h> #include< graphics.h> #include< math.h> #include< stdio.h> #include< stdlib.h> #define pi 3.14class per{ float x[10], y[10], z [10], d, m[10], q1[10], r1[10], m1[10]; float x1 [10], y1[10], xm, ym, z1 [10], cav[4] [4], p[10] [10]; float p1[10] [10]; float a, b, c, ang, theta, f; int i, k, j, n; public: void get(); void par_v(); void par_vnr0(); void map(); void graph(); void project(float m[], float q[], float r[]); }; void per:: perproject(float m[], float q[], float r[]){ cout< < "\n ENTER WIDTH FOR Z-AXIS d"; cin> > d; cout< < "\n AFTER PROJECTION, VERTICES OF POLYGON ARE--"; for(i=0; i< n; i++) {cout< < "x?["< < i< < "]="< < x1[i]< < "\t"; cout< < "y?["< < i< < "]="< < y1[i]< < "\t"; cout< < "z?["< < i< < "]="< < z1[i]< < "\t"; cout< < "\n"; } getch(); clearviewport(); graph(); for(i=0; i< n-1; i++) {line(m[i]*100+xm, (-q[i]*100+ym), m[i+1]*100+xm, (-n1[i+1]*100+ym)); } line(m[n-1]*100+xm, (-q[n-1]*100+ym), m[0]*100+xm, (-q[0]*100+ym)); getch(); }void per::get(){ cout< < "\n ENTER OF VERTICES"; cin> > n; cout< < "\n ENTER"; for (i=0; i< n; i++) {cout< < "\n x["?i< < "], y["< < i< < "] and z ["< < i< < "]"; cin> > x[i]> > y[i]> > z[i]; }cout< < "\n ENTER WIDTH FOR Z-AXIS-d"; cin> > d; int ch=100; do{cout< < "\n 1-> orthographic projection"; cout< < "\n 2-> oblique projection"; cout< < "\n 0-> exit"; cout< < "\n enter ch"; cin> > ch; switch (ch){case1:int ch1=100; do{cout< < "\n 1-> for xy viewplane"; cout< < "\n 2-> for yz viewplane"; cout"\n 3-> for zx viewplane"; cout< < "\n 0-> exit"; cout< < "\n enter ch1"; cin> > ch1; switch(ch1){case1:x1[i]=x[i]; y1[i]=y[i]; z1[i]=0; project(x1, y1, z1); break; case2:x1[i]=0; y1[i]=0; z1[i]=z[i]; project(x1, y1, z1); break; case3:x1[i]=x[i]; y1[i]=0; z1[i]=z[i]; project(x1, y1, z1); break; }}while (ch!=0)break; case2:ch1=100; do{cout< < "\n 1-> on xy plane"; cout< < "\n 2-> cavalier"; cout< < "\n 0-> exit"; cout< < "\n enter ch1"; cin> > ch1; switch(ch1){case1:par_v(); break; case2:par_vnr0(); break(); }while(ch!=0); break; }while(ch!=0)} void per::par_v() {cout< < "\n enter v (a, b, c) " ; cin> > a> > b> > c; for(i=0; i< n; i++){x1[i]=x[i]-((a*z[i]/c); y1[i]=y[i]-((b*z[i]/c); project(x1, y1, z1); }}void per::par_vnr0(){cout< < "\n enter f"; cin> > f; cout< < "\n enter angle"; cin> > angle; theta= ((pi/180)* ang); for(i=0; i< 4; i++){for(j=0; j< 4; j++){if(i==j)cav[i] [j]=1; elsecav[i] [j]=0; }}cav[0] [2]=f*cos(theta); cav[1][2]=f*sin (theta); cav[2][2]=0; for(i=0; i< n; i++){p[0][i]=x[i]; p[1][i]=y[i]; p[2][i]=z[i]; p[3][i]=1; }for(i=0; i< 4; i++){for(j=0; j< n; j++){p1[i][j]=0; for(k=0; k< 4; k++){p1[i][j]+=cav[i][k]*p[k][j]; }}}for(i=0; i< n; i++){x1[i]=p1[0][i]; y1[i]=p1[1][i]; z1[i]=p1[i]; }project(x1, y1, z1); }void per :: map(){ int gd=DETECT; initgraph (& gd, & gm, ""); int errorcode = graphresult(); /*an error occurred */if (errorcode!=grOK) {printf("Graphics error: %s \n", grapherrormsg (errorcode)); printf("Press and key to halt: "); getch(); exit(1); /* terminate with an error code */}}void per::graph(){ xm= get maxx()/2; ym=get maxy()/2 line (xm, 0, xm, 2 * ym); line (0, ym, 2 * xm, ym); }void main(){ class per a; clrscr(); a.map(); a.get(); getch(); }

输出量
计算机图形程序实例

文章图片
绘制正弦, 余弦和正切曲线的程序
#include< iostream.h> #include< conio.h> #include< graphics.h> #include< math.h> #include< stdio.h> #include< stdlib.h> #define pi 3.14class arc{ float x, y, a, xm, ym; int i, ch; public: void get(); void map(); void sine(); void cosine(); void tangent(); }; void arc::get(){ cout< < "\n ENTER THE MAXIMUM VALUE FOR Y"; cin> > y; cout< < "\n MENU IS---------"; cout< < "\n 1-> SINE CURVE"; cout< < "\n 2-> COSINE CURVE"; cout< < "\n 3-> TANGENT CURVE"; cout< < "\n 4-> EXIT"; cout< < "\n ENTER YOUR CHOICE"; cin> > ch; switch(ch){case1:sine(); break(); case2:cosine(); case3:tangent(); case4:exit(0); }}void arc::sine(){ cleardevice(); xm=getmaxx()/2; ym=getmaxy()/2; line(xm, 0, xm, 2*ym); line(0, ym, 2 *xm, ym); outtextxy(0, ym, "X-AXIS"); outtextxy(xm, 0, "Y-AXIS"); for(x=-300; x< =300; x=x+0.5) {y=a*sin((pi*x)/180); putpixel(x+(320), -y+240, RED); }}void arc::cosine(){ cleardevice(); xm=getmaxx()/2; ym=getmaxy()/2; line(xm, 0, xm, 2*ym); line(0, ym, 2 *xm, ym); outtextxy(0, ym, "X-AXIS"); outtextxy(xm, 0, "Y-AXIS"); for(x=-300; x< =300; x=x+0.5) {y=a*cos((pi*x)/180); putpixel(x+(320), -y+240, RED); }}void arc :: map(){ int gd=DETECT, gm; initgraph (& gd, & gm, ""); int errorcode = graphresult(); /*an error occurred */if (errorcode!=grOK) {printf("Graphics error: %s \n", grapherrormsg (errorcode)); printf("Press and key to halt: "); getch(); exit(1); /* terminate with an error code */}}void main(){ class arc a; clrscr(); a.map(); a.get(); getch(); }

输出量
计算机图形程序实例

文章图片

    推荐阅读