Seu SlideShare está sendo baixado. ×

# Computer graphics lab assignment

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Computer graphics lab manual
Carregando em…3
×

1 de 24 Anúncio

# Computer graphics lab assignment

Computer graphics lab assignment

Computer graphics lab assignment

Anúncio
Anúncio

Anúncio

### Computer graphics lab assignment

1. 1. 1 Program 1 WRITE A C PROGRAM TO DRAW LINE BY USING DDA ALGORITHM. #include <graphics.h> #include <stdio.h> #include <math.h> int main( ) { float x,y,x1,y1,x2,y2,dx,dy,pixel; int i,gd,gm; printf("Enter the value of x1 : "); scanf("%f",&x1); printf("Enter the value of y1 : "); scanf("%f",&y1); printf("Enter the value of x2 : "); scanf("%f",&x2); printf("Enter the value of y1 : "); scanf("%f",&y2); detectgraph(&gd,&gm); initgraph(&gd,&gm,""); dx=abs(x2-x1); dy=abs(y2-y1); if(dx>=dy) pixel=dx; else pixel=dy; dx=dx/pixel; dy=dy/pixel; x=x1; y=y1; i=1; while(i<=pixel) { putpixel(x,y,1);
2. 2. 2 x=x+dx; y=y+dy; i=i+1; delay(100); } getch(); closegraph(); } OUTPUT:
3. 3. 3 Program 2 WRITE A C PROGRAM TO DRAW LINE BY USING BRESENHAM'S ALGORITHM. # include <stdio.h> # include <conio.h> # include <graphics.h> void main() { int dx,dy,x,y,p,x1,y1,x2,y2; int gd,gm; printf("nntEnter the co-ordinates of first point : "); scanf("%d %d",&x1,&y1); printf("nntEnter the co-ordinates of second point : "); scanf("%d %d",&x2,&y2); dx = (x2 - x1); dy = (y2 - y1); p = 2 * (dy) - (dx); x = x1; y = y1; detectgraph(&gd,&gm); initgraph(&gd,&gm,"e:tcbgi"); putpixel(x,y,WHITE); while(x <= x2) { if(p < 0) { x=x+1; y=y; p = p + 2 * (dy); } else {
4. 4. 4 x=x+1; y=y+1; p = p + 2 * (dy - dx); } putpixel(x,y,WHITE); } getch(); closegraph(); } OUTPUT:
5. 5. 5 Program 3 WRITE A C PROGRAM TO DRAW A RECTANGLE. #include<stdio.h> #include<graphics.h> #include<conio.h> int main(){ int gd = DETECT,gm; initgraph(&gd, &gm, "C:TCBGI"); /* Draw rectangle on screen */ rectangle(150, 50, 400, 150); /* Draw Bar on screen */ bar(150, 200, 400, 350); getch(); closegraph(); return 0; } OUTPUT:
6. 6. 6 Program 4 WRITE A C PROGRAM TO DRAW A CIRCLE. #include<stdio.h> #include<graphics.h> #include<conio.h> int main(){ int gd = DETECT,gm; int x ,y ,radius=80; initgraph(&gd, &gm, "C:TCBGI"); /* Initialize center of circle with center of screen */ x = getmaxx()/2; y = getmaxy()/2; outtextxy(x-100, 50, "CIRCLE Using Graphics in C"); /* Draw circle on screen */ circle(x, y, radius); getch(); closegraph(); return 0; } OUTPUT:
7. 7. 7 Program 5 WRITE A C PROGRAM TO DRAW A ELLIPSE. #include<graphics.h> #include<conio.h> main() { int gd = DETECT, gm; initgraph(&gd, &gm, "C:TCBGI"); ellipse(100, 100, 0, 360, 50, 25); getch(); closegraph(); return 0; } OUTPUT:
8. 8. 8 Program 6 WRITE A C PROGRAM TO DRAW A TORUS. #include <windows.h> #include <GL/glut.h> #include <stdlib.h> static void resize(int width, int height) { const float ar = (float) width / (float) height; glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity() ; } static void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3d(1,0,0); glPushMatrix(); glTranslated(0.0,1.5,-6); glRotated(-10, 1.0, 0.0, 0.0); glutSolidTorus(0.4, 0.8, 10, 50); glPopMatrix(); glPushMatrix(); glTranslated(0.0,-1.2,-6); glutWireTorus(0.4, 0.8, 10, 20); glPopMatrix(); glutSwapBuffers(); }
9. 9. 9 const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f }; const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f }; const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f }; const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f }; const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; const GLfloat high_shininess[] = { 100.0f }; /* Program entry point */ int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitWindowSize(640,480); glutInitWindowPosition(10,10); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("Programming Techniques - 3D Torus"); glutReshapeFunc(resize); glutDisplayFunc(display); glClearColor(1,1,1,1); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
10. 10. 10 glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); glutMainLoop(); return EXIT_SUCCESS; } OUTPUT:
11. 11. 11 Program 7 WRITE A C PROGRAM TO SCALE AN OBJECT. #include<stdio.h> #include<conio.h> #include<graphics.h> #include<process.h> #include<math.h> int x1,y1,x2,y2,x3,y3,mx,my; void draw(); void scale(); void main() { int gd=DETECT,gm; int c; initgraph(&gd,&gm," "); printf("Enter the 1st point for the triangle:"); scanf("%d%d",&x1,&y1); printf("Enter the 2nd point for the triangle:"); scanf("%d%d",&x2,&y2); printf("Enter the 3rd point for the triangle:"); scanf("%d%d",&x3,&y3); draw(); scale(); } void draw() { line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x3,y3,x1,y1); } void scale() { int x,y,a1,a2,a3,b1,b2,b3; int mx,my; printf("Enter the scalling coordinates"); scanf("%d%d",&x,&y); mx=(x1+x2+x3)/3;
12. 12. 12 my=(y1+y2+y3)/3; cleardevice(); a1=mx+(x1-mx)*x; b1=my+(y1-my)*y; a2=mx+(x2-mx)*x; b2=my+(y2-my)*y; a3=mx+(x3-mx)*x; b3=my+(y3-my)*y; line(a1,b1,a2,b2); line(a2,b2,a3,b3); line(a3,b3,a1,b1); draw(); getch(); } OUTPUT:
13. 13. 13 Program 8 WRITE A C PROGRAM TO ROTATE AN OBJECT. #include<stdio.h> #include<graphics.h> void main() { int gd=DETECT,gm; int x1,y1,x2,y2 ; float b1,b2; float t,deg; initgraph(&gd,&gm,”c:tc”); printf(“Enter the coordinates of Line n”); scanf(“%d%d%d%d”,&x1,&y1,&x2,&y2); setcolor(6); line(x1,y1,x2,y2); getch(); //cleardevice(); printf(“Enter the angle of rotation: “); scanf(“%f”,&deg); t=(22*deg)/(180*7); b1=abs((x2*cos(t))-(y2*sin(t))); b2=abs((x2*sin(t))+(y2*cos(t))); line(x1,y1,b1,b2); getch(); closegraph(); }
14. 14. 14 OUTPUT: Program 9 WRITE A C PROGRAM TO SHEAR AN OBJECT ABOUT X-SHEAR, Y-SHEAR. #include<stdio.h> #include<conio.h> #include<dos.h> #include<graphics.h> int main() { int poly[30],a[9][3],b[3][3],c[9][3],poly2[30]; int x=0,y=0,p,i,j,k,xc,yc,ch; int gd=DETECT,gm;
15. 15. 15 initgraph(&gd,&gm,"C:/TC/BGI"); xc=getmaxx()/2; yc=getmaxy()/2; setcolor(1); setbkcolor(15); setfillstyle(6,3); printf("n Enter number of points : "); scanf("%d",&p); j=0; for(i=0;i<p*2;i+=2) { printf("n Enter cordinate point x%d and y%d : ",j+1,j+1); scanf("%d",&poly[i]); scanf("%d",&poly[i+1]); j++; } poly[p*2]=poly[0]; poly[p*2+1]=poly[1]; for(i=0;i<p*2;i+=2) { poly2[i]=xc+poly[i]; poly2[i+1]=yc-poly[i+1]; } poly2[p*2]=poly2[0]; poly2[p*2+1]=poly2[1]; fillpoly(p+1,poly2); line(0,yc,xc*2,yc); line(xc,0,xc,yc*2); printf("n Shearing of : n 1. x n 2. y n 3. Bothn enter choice : "); scanf("%d",&ch); if(ch==1) { printf("n Enter x shear value : "); scanf("%d",&x); } if(ch==2) { printf("n Enter y shear value : "); scanf("%d",&y); }
16. 16. 16 if(ch==3) { printf("n Enter x shear value : "); scanf("%d",&x); printf("n Enter y shear value : "); scanf("%d",&y); } j=0; for(i=0;i<p;i++) { a[i][0]=poly[j]; a[i][1]=poly[++j]; a[i][2]=1; ++j; } if(ch==1) { for(i=0;i<3;i++) { for(j=0;j<3;j++) { b[i][j]=0; if(i==j) { b[i][j]=1; } } } b[1][0]=x; } else if(ch==2) { for(i=0;i<3;i++) { for(j=0;j<3;j++) { b[i][j]=0; if(i==j) { b[i][j]=1; } } }
17. 17. 17 b[0][1]=y; } else if(ch==3) { for(i=0;i<3;i++) { for(j=0;j<3;j++) { b[i][j]=0; if(i==j) { b[i][j]=1; } } } b[1][0]=x; b[0][1]=y; } for(i=0;i<p;i++) { for(j=0;j<3;j++) { c[i][j]=0; for(k=0;k<3;k++) { c[i][j]=c[i][j]+a[i][k]*b[k][j]; } } } printf("nnnnnt After Shearing : "); for(i=0,j=0;i<p;i++,j+=2) { poly[j] =xc+c[i][0]; poly[j+1]=yc-c[i][1]; } poly[j] =poly[0]; poly[j+1]=poly[1]; setfillstyle(9,2); fillpoly(p+1,poly); getch(); closegraph(); }
18. 18. 18 OUTPUT: X_SHEAR: Y-SHEAR:
19. 19. 19 Program 10 WRITE A PROGRAM TO DEMONSTRATE REFLECTION TRANSFORMATION ABOUT X- AXIS, Y-AXIS AND ORIGIN. #include<stdio.h> #include<conio.h> #include<dos.h> #include<graphics.h> int main() { int poly[30],a[9][3],b[3][3],c[9][3],poly2[30]; int x,y,p,i,j,k,xc,yc; int gd=DETECT,gm; initgraph(&gd,&gm,"C:/TC/BGI"); xc=getmaxx()/2; yc=getmaxy()/2; setcolor(1); setbkcolor(15); setfillstyle(6,3); printf("n Enter number of points : "); scanf("%d",&p); j=0; for(i=0;i<p*2;i+=2) { printf("n Enter cordinate point x%d and y%d : ",j+1,j+1); scanf("%d",&poly[i]); scanf("%d",&poly[i+1]); j++; } poly[p*2]=poly[0]; poly[p*2+1]=poly[1]; for(i=0;i<p*2;i+=2) { poly2[i]=xc+poly[i]; poly2[i+1]=yc-poly[i+1];
20. 20. 20 } poly2[p*2]=poly2[0]; poly2[p*2+1]=poly2[1]; fillpoly(p+1,poly2); line(0,yc,xc*2,yc); line(xc,0,xc,yc*2); printf("n Reflection about : n 1. x axisn 2. y axisn 3. originn enter choice : "); scanf("%d",&x); j=0; for(i=0;i<p;i++) { a[i][0]=poly[j]; a[i][1]=poly[++j]; a[i][2]=1; ++j; } if(x==1) { for(i=0;i<3;i++) { for(j=0;j<3;j++) { b[i][j]=0; if(i==j) { b[i][j]=1; } } } b[1][1]=-1; } else if(x==2) { for(i=0;i<3;i++) {
21. 21. 21 for(j=0;j<3;j++) { b[i][j]=0; if(i==j) { b[i][j]=1; } } } b[0][0]=-1; } else if(x==3) { for(i=0;i<3;i++) { for(j=0;j<3;j++) { b[i][j]=0; if(i==j) { b[i][j]=-1; } } } b[2][2]=1; } for(i=0;i<p;i++) { for(j=0;j<3;j++) { c[i][j]=0; for(k=0;k<3;k++) { c[i][j]=c[i][j]+a[i][k]*b[k][j]; } } } printf("nnnnnt Reflection : ");
22. 22. 22 for(i=0,j=0;i<p;i++,j+=2) { poly[j] =xc+c[i][0]; poly[j+1]=yc-c[i][1]; } poly[j] =poly[0]; poly[j+1]=poly[1]; setfillstyle(9,2); fillpoly(p+1,poly); getch(); closegraph(); } OUTPUT: REFELCTION ABOUT ORIGIN: