Skip to main content

C Program to create a Teapot using OpenGL

 


C Program to create a Teapot using OpenGL
#include<stdio.h>
#include<GL/glut.h>
void wall(double thickness)
{
glPushMatrix();
glTranslated(0.5,0.5*thickness,0.5);
glScaled(1.0,thickness,1.0);
glutSolidCube(1.0);
glPopMatrix();
}

void tableLeg(double thick,double len)
{
glPushMatrix();
glTranslated(0,len/2,0);
glScaled(thick,len,thick);
glutSolidCube(1.0);
glPopMatrix();
}

void table(double topWid,double topThick,double legThick,double legLen)
{
glPushMatrix();
glTranslated(0,legLen,0);
glScaled(topWid,topThick,topWid);
glutSolidCube(1.0);
glPopMatrix();
double dist=0.95*topWid/2.0-legThick/2.0;
glPushMatrix();
glTranslated(dist,0,dist);
tableLeg(legThick,legLen);
glTranslated(0.0,0.0,-2*dist);
tableLeg(legThick,legLen);
glTranslated(-2*dist,0,2*dist);
tableLeg(legThick,legLen);
glTranslated(0,0,-2*dist);
tableLeg(legThick,legLen);
glPopMatrix();
}

void displaySolid(void)
{
GLfloat mat_ambient[]={0.7f,0.7f,0.7f,1.0f};
GLfloat mat_diffuse[]={0.5f,0.5f,0.5f,1.0f};
GLfloat mat_specular[]={1.0f,1.0f,1.0f,1.0f};
GLfloat mat_shininess[]={50.0f};

//The glMaterialfv function specifies material parameters for the lighting model.
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);
glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);
GLfloat lightIntensity[]={0.7f,0.7f,0.7f,0.7f};
GLfloat light_position[]={2.0f,6.0f,3.0f,0.0f};

//The glLightfv function returns light source parameter values.
glLightfv(GL_LIGHT0,GL_POSITION,light_position);
glLightfv(GL_LIGHT0,GL_DIFFUSE,lightIntensity);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
double winHt=1.0;
glOrtho(-winHt*64/48.0,winHt*64/48.0,-winHt,winHt,0.1,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(2.3,1.3,2.0,0.0,0.25,0.0,0.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

glPushMatrix();
glTranslated(0.4,0.4,0.6);
glRotated(45,0,0,1);
glScaled(0.08,0.08,0.08);
glPopMatrix();
glPushMatrix();
glTranslated(0.6,0.38,0.5);
glRotated(30,0,1,0);
glutSolidTeapot(0.08);
glPopMatrix();

glPushMatrix();
glTranslated(0.25,0.42,0.35);
glPopMatrix();
glPushMatrix();
glTranslated(0.4,0,0.4);
table(0.6,0.02,0.02,0.3);
glPopMatrix();

wall(0.02);
glPushMatrix();
glRotated(90.0,0.0,0.0,1.0); //draw second wall after rotating x axis by 90degre
wall(0.02);
glPopMatrix();
glPushMatrix();
glRotated(-90.0,1.0,0.0,0.0); //draw floor
wall(0.02);
glPopMatrix();
glFlush();
}

int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(640,480);
glutInitWindowPosition(100,100);
glutCreateWindow("Simple shaded scene consisting of a teapot");
glutDisplayFunc(displaySolid);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glShadeModel(GL_SMOOTH);//Specifies a symbolic value representing a shading technique. Accepted values are GL_FLAT and GL_SMOOTH.
glEnable(GL_DEPTH_TEST);
glEnable(GL_NORMALIZE);
glClearColor(0.1,0.1,0.1,0.0);
glViewport(0,0,640,480);
glutMainLoop();
}

Comments

Popular posts from this blog

Maxon Cinema 4D Studio R13.058 full Keygen Cracked Version | Mediafire Torrent Download Link

Download Maxon CINEMA 4D Studio Full Version With Keygen -Everything You Need for High-End 3D 32 and 64 bit MAXON CINEMA 4D STUDIO R13.058 (x86/x64) CINEMA 4D Studio is the very best that MAXON has to offer for professional 3D artists. If you want to create advanced 3D graphics but need a helping hand to ensure you create jaw-dropping graphics quickly and easily, then this is the choice for you.                     All You Ever Wanted This is our top-of-the-line product. It not only contains everything the other CINEMA 4D versions offer - it goes far beyond. CINEMA 4D Studio has all the tools you need to tackle even the most complex project. Minimum System Requirements Windows XP, Vista or 7 running on Intel or AMD CPU with SSE2-Support; Mac OS X 10.5.8 or higher running on an Intel-based Mac; 1024 MB free RAM, DVD ROM drive. Standard DVD installation can take up to 4 GB of disk space. Software must be registered for permanent use. SUPPORTED OPERATING SYS

C Program to add two matrices using pointers.

  #include<stdio.h> main() { int a[5][5],b[5][5],c[5][5],i,j,m,n; printf("\n Enter the Dimension of the Matrix:\n"); scanf("%d%d",&m,&n); printf("\nEnter the Elements of the first matix:"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { scanf("%d",(*(a+i)+j)); } } printf("\nEnter the elements of the second matrix:\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { scanf("%d",(*(b+i)+j)); } } for(i=0;i<m;i++) { for(j=0;j<n;j++) { *(*(c+i)+j)=*(*(a+i)+j)+ *(*(b+i)+j); } } printf("\nResultantMatrix:\n"); for(i=0;i<m;i++) { for(j=0;j<n;j++) { printf("%5d",*(*(c+i)+j)); } printf("\n"); } getch(); } Output:  Enter the Dimension of the Matrix: 2  2 Enter the Elements of the first matix: 1   2   3   4 Enter the elements of the second matrix: 9   8   7  6 ResultantMatrix: