void displayObjects(void)
{
	GLfloat torus_diffuse[] = { 0.7, 0.7, 0.0, 1.0 };
	GLfloat cube_diffuse[] = { 0.0, 0.7, 0.7, 1.0 };
	GLfloat sphere_diffuse[] = { 0.7, 0.0, 0.7, 1.0 };
	GLfloat octa_diffuse[] = { 0.7, 0.4, 0.4, 1.0 };
	glPushMatrix();
	glRotatef(30.0, 1.0, 0.0, 0.0);
	glPushMatrix();
	glTranslatef(-0.80, 0.35, 0.0);
	glRotatef(100.0, 1.0, 0.0, 0.0);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, torus_diffuse);
	glutSolidTorus(0.275, 0.85, 16, 16);
	glPopMatrix();
	glPushMatrix();
	glTranslatef(-0.75, -0.50, 0.0);
	glRotatef(45.0, 0.0, 0.0, 1.0);
	glRotatef(45.0, 1.0, 0.0, 0.0);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, cube_diffuse);
	glutSolidCube(1.5);
	glPopMatrix();
	glPushMatrix();
	glTranslatef(0.75, 0.60, 0.0);
	glRotatef(30.0, 1.0, 0.0, 0.0);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, sphere_diffuse);
	glutSolidSphere(1.0, 16, 16);
	glPopMatrix();
	glPushMatrix();
	glTranslatef(0.70, -0.90, 0.25);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, octa_diffuse);
	glutSolidOctahedron();
	glPopMatrix();
	glPopMatrix();
}
void displayFcn(void) {
	glClear(GL_COLOR_BUFFER_BIT);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	gluLookAt(x0, yO, z0, 0, 0, 0, 0, 1, 0);
	glColor3f(color[0], color[1], color[2]);

	if (toggle)
		glRotatef(rotTheta += 3, 0.0, 1.0, 0.0);
	glScalef(scale, scale, scale);

	if (solid) {
		switch (poly) {
		case 1:
			glutSolidCube(1.0);
			break;
		case 2:
			glutSolidDodecahedron();
			break;
		case 3:
			glutSolidTetrahedron();
			break;
		case 4:
			glutSolidOctahedron();
			break;
		case 5:
			glutSolidIcosahedron();
			break;
		case 6:
			glutSolidIcosahedron();
			break;
		}
	}
	else {
		switch (poly) {
		case 1:
			glutWireCube(1.0);
			break;
		case 2:
			glutWireDodecahedron();
			break;
		case 3:
			glutWireTetrahedron();
			break;
		case 4:
			glutWireOctahedron();
			break;
		case 5:
			glutWireIcosahedron();
			break;
		case 6:
			glutWireIcosahedron();
			break;
		}
	}
	glPopMatrix();
	glutSwapBuffers();
	glFlush();
}
예제 #3
0
void cene_octa(){
    glPushMatrix();
        glColor3d(1,1,0.5);
        glTranslated(-4,-2,-4);
        glRotated(-20, 0, 5, 0);
        glutSolidOctahedron();
    glPopMatrix();
}
예제 #4
0
void drawFossil(float x,float y,float z,float angle,float color[3])
{	
    glPushMatrix();
    glColor3f(color[0],color[1],color[2]);
    glTranslatef(x,y,z);
    glRotatef(angle,0.0,1.0,0.0);
    glutSolidOctahedron();
    glPopMatrix();
}
예제 #5
0
// Called to draw scene objects
void DrawModels(GLboolean drawBasePlane)
{
    if (drawBasePlane)
    {
        // Draw plane that the objects rest on
        glColor3f(0.0f, 0.0f, 0.90f); // Blue
        glNormal3f(0.0f, 1.0f, 0.0f);
        glBegin(GL_QUADS);
            glVertex3f(-100.0f, -25.0f, -100.0f);
            glVertex3f(-100.0f, -25.0f, 100.0f);
            glVertex3f(100.0f,  -25.0f, 100.0f);
            glVertex3f(100.0f,  -25.0f, -100.0f);
        glEnd();
    }

    // Draw red cube
    glColor3f(1.0f, 0.0f, 0.0f);
    glutSolidCube(48.0f);

    // Draw green sphere
    glColor3f(0.0f, 1.0f, 0.0f);
    glPushMatrix();
    glTranslatef(-60.0f, 0.0f, 0.0f);
    glutSolidSphere(25.0f, 50, 50);
    glPopMatrix();

    // Draw yellow cone
    glColor3f(1.0f, 1.0f, 0.0f);
    glPushMatrix();
    glRotatef(-90.0f, 1.0f, 0.0f, 0.0f);
    glTranslatef(60.0f, 0.0f, -24.0f);
    glutSolidCone(25.0f, 50.0f, 50, 50);
    glPopMatrix();

    // Draw magenta torus
    glColor3f(1.0f, 0.0f, 1.0f);
    glPushMatrix();
    glTranslatef(0.0f, 0.0f, 60.0f);
    glutSolidTorus(8.0f, 16.0f, 50, 50);
    glPopMatrix();

    // Draw cyan octahedron
    glColor3f(0.0f, 1.0f, 1.0f);
    glPushMatrix();
    glTranslatef(0.0f, 0.0f, -60.0f);
    glScalef(25.0f, 25.0f, 25.0f);
    glutSolidOctahedron();
    glPopMatrix();
}
예제 #6
0
파일: npglut.c 프로젝트: openantz/antz
//------------------------------------------------------------------------------
void npGlutPrimitive (int primitive)
{
	switch (primitive)
	{
	case kNPgeoCubeWire :
		glScalef (0.6f, 0.6f, 0.6f); 
		glutWireCube(2.0f);
		glScalef (1.666667f, 1.666667f, 1.666667f);
		break;
	case kNPgeoCube :
		glScalef (0.6f, 0.6f, 0.6f);
		glutSolidCube(2.0f);
		glScalef (1.666667f, 1.666667f, 1.666667f);
		break;
	case kNPgeoSphereWire : glutWireSphere( 1.0f, 24, 12); break;//15, 15 ); break;
	case kNPgeoSphere : glutSolidSphere( 1.0f, 24, 12 ); break;

	case kNPgeoConeWire : glutWireCone( 1.0f, 2.0f, 24, 1 ); break;
	case kNPgeoCone : glutSolidCone( 1.0f, 2.0f, 24, 1 ); break;

	case kNPgeoTorusWire : glutWireTorus(kNPtorusRadius * 0.1f, kNPtorusRadius, 7, 16); break;
	case kNPgeoTorus : glutSolidTorus(kNPtorusRadius * 0.1f, kNPtorusRadius, 7, 16); break;

	case kNPgeoDodecahedronWire :
		glScalef (0.6f, 0.6f, 0.6f);
		glutWireDodecahedron();
		glScalef (1.666667f, 1.666667f, 1.666667f);
		break;
	case kNPgeoDodecahedron :
		glScalef (0.6f, 0.6f, 0.6f);
		glutSolidDodecahedron();
		glScalef (1.666667f, 1.666667f, 1.666667f);
		break;
	case kNPgeoOctahedronWire : glutWireOctahedron(); break;
	case kNPgeoOctahedron : glutSolidOctahedron(); break;
	case kNPgeoTetrahedronWire : glutWireTetrahedron(); break;
	case kNPgeoTetrahedron : glutSolidTetrahedron(); break;
	case kNPgeoIcosahedronWire : glutWireIcosahedron(); break;
	case kNPgeoIcosahedron : glutSolidIcosahedron(); break;

//	case kNPglutWireTeapot : glutWireTeapot( 2.0f ); break;
//	case kNPglutSolidTeapot : glutSolidTeapot( 2.0f ); break;

	default : glutWireTetrahedron(); break;
	}
}
예제 #7
0
void C3D::displayObjects ()
{
  //## begin C3D::displayObjects%40E215A503B4.body preserve=yes
 
   GLfloat torus_diffuse[] = { 0.7f, 0.7f, 0.0f, 1.0f };
   GLfloat cube_diffuse[] = { 0.0f, 0.7f, 0.7f, 1.0f };
   GLfloat sphere_diffuse[] = { 0.7f, 0.0f, 0.7f, 1.0f };
   GLfloat octa_diffuse[] = { 0.7f, 0.4f, 0.4f, 1.0f };
    
   glPushMatrix ();
   glTranslatef (0.0, 0.0, -5.0); 
   glRotatef (30.0, 1.0, 0.0, 0.0);

   glPushMatrix ();
   glTranslatef (-0.80f, 0.35f, 0.0f); 
   glRotatef (100.0f, 1.0f, 0.0f, 0.0f);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, torus_diffuse);
   glutSolidTorus (0.275f, 0.85f, 16, 16);
   glPopMatrix ();

   glPushMatrix ();
   glTranslatef (-0.75, -0.50, 0.0); 
   glRotatef (45.0, 0.0, 0.0, 1.0);
   glRotatef (45.0, 1.0, 0.0, 0.0);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, cube_diffuse);
   glutSolidCube (1.5);
   glPopMatrix ();

   glPushMatrix ();
   glTranslatef (0.75f, 0.60f, 0.0f); 
   glRotatef (30.0, 1.0, 0.0, 0.0);
   glMaterialfv(GL_FRONT, GL_DIFFUSE, sphere_diffuse);
   glutSolidSphere (1.0, 16, 16);
   glPopMatrix ();

   glPushMatrix ();
   glTranslatef (0.70f, -0.90f, 0.25f); 
   glMaterialfv(GL_FRONT, GL_DIFFUSE, octa_diffuse);
   glutSolidOctahedron ();
   glPopMatrix ();

   glPopMatrix ();

  //## end C3D::displayObjects%40E215A503B4.body
}
예제 #8
0
파일: g.c 프로젝트: Svtter/workspace
void Display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);  //用当前背景色填充窗口
    glMatrixMode(GL_MODELVIEW);  //制定设置模型视图变换参数
    glLoadIdentity();   //消除以前的变换
    glRotatef(xRot,1.0f,0.0f,0.0f);   //绕X轴旋转图形
    glRotatef(yRot,0.0f,1.0f,0.0f);  //绕y轴旋转图形
    switch(iMode)
    {
        case 1:
            glutWireTetrahedron();break;   //绘制线框正四面体
        case 2:
            glutSolidTetrahedron();break;  //绘制实体正四面体

        case 3:
            glutWireOctahedron();break; //绘制线框正八面体
        case 4:
            glutSolidOctahedron();break;//绘制实体正八面体

        case 5:
            glutWireSphere(1.0f,15,15);break;  //绘制线框球
        case 6:
            glutSolidSphere(1.0f,15,15);break;//绘制实体球

        case 7:
            glutWireTeapot(1.0f);break;   //绘制线框茶壶
        case 8:
            glutSolidTeapot(1.0f);break;//绘制实体茶壶

        case 9:
            gluSphere(obj,1.0f,15,15);break;  //绘制二次曲面(球)

        case 10:
            gluCylinder(obj,1.0f,0.0f,1.0f,15,15);break;//绘制二次曲面(圆锥)

        case 11:
            gluPartialDisk(obj,0.3f,0.8f,15,15,30.0f,260.0f);break;  //绘制二次曲面(圆环)

        default: 
            break;
    }

}
예제 #9
0
파일: diamond.cpp 프로젝트: bkzl/cottages
void Diamond::draw() {
	glPushMatrix();
	
	float mat_ambient[] = {0.17, 0.01, 0.01, 0.55};
	float mat_diffuse[] = {0.61, 0.04, 0.04, 0.55};
	float mat_specular[] = {0.72, 0.62, 0.62, 0.55};
	float high_shininess[] = {0.55};
	
	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, high_shininess);
	
	glColor3f(0, 0, 1);
	glTranslatef(0, 1, 0);
	glutSolidOctahedron();
	
	glPopMatrix();
	glFlush();
}
예제 #10
0
파일: simple.cpp 프로젝트: RamboWu/openglex
void DrawObjects()
{
  glPushMatrix();
    glColor3f(1.0f, 0.0f, 0.0f);
    glutSolidCube(3.0);

    glColor3f(0.0f, 0.0f, 1.0f);
    glTranslatef(-10.0f, 0.0f, 0.0f);
    glutSolidTorus(1.0, 3.0, 20, 20);

    glColor3f(1.0f, 1.0f, 0.0f);
    glTranslatef(20.0f, 0.0f, 0.0f);
    glutSolidTeapot(3.0);

    glColor3f(1.0f, 0.0f, 1.0f);
    glTranslatef(-10.0f, 0.0f, -10.0f);
    glutSolidSphere(3.0, 20, 20);

    glColor3f(0.0f, 1.0f, 1.0f);
    glTranslatef(0.0f, 0.0f, 20.0f);
    glScalef(3.0f, 3.0f, 3.0f);
    glutSolidOctahedron();
  glPopMatrix();
}
예제 #11
0
// Draw our world
void display_1(void)
{
char *p;
 
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  //Clear the screen
 
glMatrixMode (GL_PROJECTION);  // Tell opengl that we are doing project matrix work
glLoadIdentity();  // Clear the matrix
glOrtho(-8.0, 8.0, -8.0, 8.0, 0.0, 30.0);  // Setup an Ortho view
glMatrixMode(GL_MODELVIEW);  // Tell opengl that we are doing model matrix work. (drawing)
glLoadIdentity(); // Clear the model matrix
 
 
glColor3f(1.0, 1.0, 1.0);
if (shape == 0) Sprint(-3, -7 ,"Solid Cube");
if (shape == 1) Sprint(-3, -7 ,"Solid Cone");
if (shape == 2) Sprint(-3, -7 ,"Solid Sphere");
if (shape == 3) Sprint(-3, -7 ,"Solid Torus");
if (shape == 4) Sprint(-3, -7 ,"Solid Dodecahedron");
if (shape == 5) Sprint(-3, -7 ,"Solid Octahedron");
if (shape == 6) Sprint(-3, -7 ,"Solid Tetrahedron");
if (shape == 7) Sprint(-3, -7 ,"Solid Icosahedron");
if (shape == 8) Sprint(-3, -7 ,"Solid Teapot");
 
// Setup view, and print view state on screen
if (view_state == 1)
	{
    glColor3f( 1.0, 1.0, 1.0);
    Sprint(-2, 4, "Perspective view");
    glMatrixMode (GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60, 1, 1, 30);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }else
	{
	glColor3f( 1.0, 1.0, 1.0);
    Sprint(-2, 4, "Ortho view");
    }
 
glColor3f( 0.0, 0.0, 1.0);  // Cube color
 
// Lighting on/off
if (light_state == 1)
	{
	glDisable(GL_LIGHTING);  // Turn off lighting
    glDisable(GL_COLOR_MATERIAL); // Turn off material, which needs lighting to work
    }else
	{
    glEnable(GL_LIGHTING); // Turn on lighting
    glEnable(GL_COLOR_MATERIAL); // Turn on material settings
    glColorMaterial(GL_FRONT, GL_AMBIENT);
    glColor4f(0.65, 0.65, 0.65, 0.4);
    glColorMaterial(GL_FRONT, GL_EMISSION);
    glColor4f(0.10, 0.10, 0.10, 0.0);
    glColorMaterial(GL_FRONT, GL_SPECULAR);
    glColor4f(0.5, 0.5, 0.5, 0.4);
    glColorMaterial(GL_FRONT, GL_DIFFUSE);
    glColor4f(0.85, 0.85, 0.85, 0.4);
    }
 
gluLookAt( 0, 0, 20, 0, 0, 0, 0, 1, 0);
 
//glRotatef( 45, 1.0, 1.0, 0.0); // rotate cube
glRotatef( spin++, 1.0, 1.0, 1.0); // spin cube
 
if (shape == 0) glutSolidCube(10); // Draw a cube
if (shape == 1) glutSolidCone(5,10, 16,16);  // Draw a Cone
if (shape == 2) glutSolidSphere(5, 16,16 );  // Draw a Sphere
if (shape == 3) glutSolidTorus( 2.5, 5, 16, 16);
if (shape == 4)
   {
	glScalef( 3.5, 3.5, 3.5);
	glutSolidDodecahedron();
   }
 
if (shape == 5)
   {
	glScalef( 5.0, 5.0, 5.0);
	glutSolidOctahedron();
   }
if (shape == 6)
   {
	glScalef( 5.0, 5.0, 5.0);
	glutSolidTetrahedron();
   }
 
if (shape == 7)
   {
	glScalef( 5.0, 5.0, 5.0);
	glutSolidIcosahedron();
   }
if (shape == 8) glutSolidTeapot( 5 );
 
glutSwapBuffers();
}
예제 #12
0
파일: Shapes.c 프로젝트: HintonBR/scratch
// Called to draw scene
void RenderScene(void)
	{
	// Clear the window
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


    // Save matrix state and do the rotation
	glPushMatrix();
	glRotatef(xRot, 1.0f, 0.0f, 0.0f);
	glRotatef(yRot, 0.0f, 1.0f, 0.0f);

    switch(iShape)
        {
        case 1:
            glutWireSphere(1.0f, 25, 25);
            break;

        case 2:
            glutWireCube(1.0f);
            break;

        case 3:
            glutWireCone(0.30f, 1.1f, 20, 20);
            break;

        case 4:
            glutWireTorus(0.3f, 1.0f, 10, 25);
            break;

        case 5:
            glutWireDodecahedron();
            break;

        case 6:
            glutWireOctahedron();
            break;

        case 7:
            glutWireTetrahedron();
            break;

        case 8:
            glutWireIcosahedron();
            break;

        case 9:
            glutWireTeapot(1.0f);
            break;

        case 11:
            glutSolidSphere(1.0f, 25, 25);
            break;

        case 12:
            glutSolidCube(1.0f);
            break;

        case 13:
            glutSolidCone(0.30, 1.1f, 20, 20);
            break;
    
        case 14:
            glutSolidTorus(0.3f, 1.0f, 10, 25);
            break;

        case 15:
            glutSolidDodecahedron();
            break;

        case 16:
            glutSolidOctahedron();
            break;

        case 17:
            glutSolidTetrahedron();
            break;

        case 18:
            glutSolidIcosahedron();
            break;

        default:
            glutSolidTeapot(1.0f);
            break;
        }


	// Restore transformations
	glPopMatrix();

	// Flush drawing commands
	glutSwapBuffers();
	}
예제 #13
0
static void hugsprim_glutSolidOctahedron_6(HugsStackPtr hugs_root)
{
    glutSolidOctahedron();
    
    hugs->returnIO(hugs_root,0);
}
예제 #14
0
/*
 * These one-liners draw particular objects, fetching appropriate
 * information from the above globals.  They are just thin wrappers
 * for the FreeGLUT objects.
 */
static void drawSolidTetrahedron(void)         { glutSolidTetrahedron ();                        }
static void drawWireTetrahedron(void)          { glutWireTetrahedron ();                         }
static void drawSolidCube(void)                { glutSolidCube(orad);                            }  /* orad doubles as size input */
static void drawWireCube(void)                 { glutWireCube(orad);                             }  /* orad doubles as size input */
static void drawSolidOctahedron(void)          { glutSolidOctahedron ();                         }
예제 #15
0
파일: lua_glut.c 프로젝트: lubyk/glut
/** SolidOctahedron () -> None
 */
static int glut_solid_octahedron(lua_State *L) {
  glutSolidOctahedron();
}
예제 #16
0
파일: part.cpp 프로젝트: yezhizhen/OpenGL
void drawWindHouse(void){

DiskObj = gluNewQuadric(); //New an object
DiskObj1 = gluNewQuadric(); //New an object

glColor4f(0.9, 0.8, 1, 1); //rice white
glTranslatef(0, 50, 0);
gluCylinder(DiskObj, 9, 7, 40, 8, 20);
glTranslatef(0, 0, 40);
gluDisk(DiskObj1, 0, 7, 8, 20 );

glColor4f(0.2, 0.1, 0, 1); //dark grey
glutSolidSphere(6, 20, 20);

glTranslatef(0, -7, 0);
glutSolidSphere(2, 20, 20);

glPushMatrix();
	if (fanAngle >= 360){ //rotate the fan
		fanAngle = 0;
	}
	else{
		fanAngle = fanAngle + fanSpeed;
	}
	glRotated(fanAngle, 0, 1, 0);

	glTranslatef(12, -1, 0); //draw the fan
	glPushMatrix();
	glScalef(20, 1, 5);
	glutSolidCube(1);
	glPopMatrix();

	glTranslatef(-24, 0, 0);
	glPushMatrix();
	glScalef(20, 1, 5);
	glutSolidCube(1);
	glPopMatrix();

	glTranslatef(12, 0, 12);
	glPushMatrix();
	glScalef(5, 1, 20);
	glutSolidCube(1);
	glPopMatrix();

	glTranslatef(0, 0, -24);
	glPushMatrix();
	glScalef(5, 1, 20);
	glutSolidCube(1);
	glPopMatrix();

	glTranslatef(0, 0, 12);
glPopMatrix();

glTranslatef(0, -42, -40);// after draw the fan, back to center point

glPushMatrix();
	glTranslatef(20, 10, 0); //begin to draw the house
	glRotated(45, 0, 0, -1);

	glPushMatrix();
		glColor4f(0.9, 0.8, 1, 1);
		glScalef(20, 40, 20);
		glutSolidCube(1);
	glPopMatrix();

	glPushMatrix(); // draw the door
	glColor4f(0.2, 0.1, 0, 1);
	glTranslatef(0, -16, 3);
	glutSolidCube(10);
	glPopMatrix();

	glPushMatrix(); // draw the window
	glColor4f(0.22, 0.22, 0.22, 1);
	glTranslatef(10, -10, 5);
	glPushMatrix();
	glScalef(2, 10, 5);
	glutSolidCube(1);
	glPopMatrix();
	glTranslatef(0, 20, 0);
	glScalef(2, 10, 5);
	glutSolidCube(1);
	glPopMatrix();

	glTranslatef(0, 0, 10); //draw the roof
	glColor4f(0.2, 0.1, 0, 1);
	glScalef(15, 29, 15);
	glRotated(45, 0, 0, -1);
	glutSolidOctahedron();

glPopMatrix();

}
예제 #17
0
void Display(void)
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    gluLookAt(X,Y,Z, 0,0,0, 0,1,0);
    float verticies[300];
    int i, j, k;
    float x=0,y=0,z=0;
    for(i=0; i<10; i++)
    {
        for (j=0; j<10; j++)
        {
            k = ( i*10 + j ) * 3;
            z= sqrt(x) + sqrt(y);
            verticies[k]= x;
            verticies[k + 1] = z;
            verticies[k + 2] = y;
            x+=1;
        }
        x = 0;
        y+=1;
    }
    //индексы вершин для построения прямоугольников
    int index = 0;
    int quards[324];
    for(i=0; i<10; i++)
    {
        for (j=0; j<9; j++)
        {
            k = i*9 + j;
            if (k%10 == 9) 	continue;
            quards[index] =  k;
            quards[index + 1] = k+1;
            quards[index + 2] = k+11;
            quards[index + 3] = k+10;
            index += 4;
        }
    }
    glNewList(1,GL_COMPILE);
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    glutWireDodecahedron();
    
    glTranslated(6,0,0);
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    glutSolidOctahedron();
    
    glColor3ub(0,0,100);
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    glutSolidOctahedron();
    
    glEndList();
    
    glNewList(2,GL_COMPILE);
    
    glTranslated(4,0,0);
    //оси
    glBegin(GL_LINES);
    glVertex3f(0,0,0);
    glVertex3f(10,0,0);
    glVertex3f(0,0,0);
    glVertex3f(0,2,0);
    glVertex3f(0,0,0);
    glVertex3f(0,0,10);
    glEnd();
    
    glEnableClientState(GL_VERTEX_ARRAY);
    glVertexPointer(3, GL_FLOAT, 0, verticies);
    //сначала сплошного заданного цвета
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    glDrawElements(GL_QUADS, 324, GL_UNSIGNED_INT, quards);
    //затем грани
    glColor3ub(0,0,100);
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    glDrawElements(GL_QUADS, 324, GL_UNSIGNED_INT, quards);
    //завершение построения
    glDisableClientState(GL_VERTEX_ARRAY);
    glEndList();
    
    glPushMatrix();
    glTranslated(-10,10,0);
    glColor3ub(242,178,103);
    glCallList(1);
    glColor3ub(242,178,103);
    glCallList(2);
    glPopMatrix();
    
    glPushMatrix();
    glTranslated(-10,3,0);
    glScalef(1.2,1.2,1.2);
    glColor3ub(242,178,103);
    glCallList(1);
    glColor3ub(242,178,103);
    glCallList(2);
    glPopMatrix();
    
    glPushMatrix();
    glTranslated(-10,-5,0);
    glScalef(1.5,1.5,1.5);
    glColor3ub(242,178,103);
    glCallList(1);
    glColor3ub(242,178,103);
    glCallList(2);
    glPopMatrix();
    
    glFlush();
}
예제 #18
0
void
displayFunc(void)
{
  static int shape = 1;

  fprintf(stderr, " %d", shape);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  switch (shape) {
  case 1:
    glutWireSphere(1.0, 20, 20);
    break;
  case 2:
    glutSolidSphere(1.0, 20, 20);
    break;
  case 3:
    glutWireCone(1.0, 1.0, 20, 20);
    break;
  case 4:
    glutSolidCone(1.0, 1.0, 20, 20);
    break;
  case 5:
    glutWireCube(1.0);
    break;
  case 6:
    glutSolidCube(1.0);
    break;
  case 7:
    glutWireTorus(0.5, 1.0, 15, 15);
    break;
  case 8:
    glutSolidTorus(0.5, 1.0, 15, 15);
    break;
  case 9:
    glutWireDodecahedron();
    break;
  case 10:
    glutSolidDodecahedron();
    break;
  case 11:
    glutWireTeapot(1.0);
    break;
  case 12:
    glutSolidTeapot(1.0);
    break;
  case 13:
    glutWireOctahedron();
    break;
  case 14:
    glutSolidOctahedron();
    break;
  case 15:
    glutWireTetrahedron();
    break;
  case 16:
    glutSolidTetrahedron();
    break;
  case 17:
    glutWireIcosahedron();
    break;
  case 18:
    glutSolidIcosahedron();
    break;
  default:
    printf("\nPASS: test16\n");
    exit(0);
  }
  glutSwapBuffers();
  shape += 1;
  sleep(1);
  glutPostRedisplay();
}
예제 #19
0
void duduk(){
     GLUquadric *quadric = gluNewQuadric();
     glPushMatrix();
        glColor3f(1.0,1.0,1.0);
       //tempat duduk
            glPushMatrix();
            glColor3f(1.0,0.3,2.0);
                glTranslatef(5,0,0);
                glRotatef(angl,0,0,1);
                glRotatef(270,1,0,0);
                gluCylinder(quadric, 0.5, 0.5, 1, 20, 20);
                glTranslatef(0,0,0.75);
                glutSolidOctahedron(); 
            glPopMatrix();
             glPushMatrix();
             glColor3f(0.3,1.0,0.5);
                glTranslatef(-5,0,0);
                glRotatef(angl,0,0,1);
                glRotatef(270,1,0,0);
                gluCylinder(quadric, 0.5, 0.5, 1, 20, 20);
                glTranslatef(0,0,0.75);
                glutSolidOctahedron(); 
            glPopMatrix();  
             glPushMatrix();
             glColor3f(0.1,1.0,0.4);
                glTranslatef(0,5,0);
                glRotatef(angl,0,0,1);
                glRotatef(270,1,0,0);
                gluCylinder(quadric, 0.5, 0.5, 1, 20, 20);
                glTranslatef(0,0,0.75);
                glutSolidOctahedron(); 
            glPopMatrix();
             glPushMatrix();
             glColor3f(1.0,0.5,1.0);
                glTranslatef(0,-5,0);
                glRotatef(angl,0,0,1);
                glRotatef(270,1,0,0);
                gluCylinder(quadric, 0.5, 0.5, 1, 20, 20);
                glTranslatef(0,0,0.75);
                glutSolidOctahedron(); 
            glPopMatrix();
           glPushMatrix();
           glColor3f(1.0,0.0,0.0);
                glTranslatef(3.5,3.5,0);
                glRotatef(angl,0,0,1);
                glRotatef(270,1,0,0);
                gluCylinder(quadric, 0.5, 0.5, 1, 20, 20);
                glTranslatef(0,0,0.75);
                glutSolidOctahedron(); 
            glPopMatrix();
            glPushMatrix();
            glColor3f(0.8,0.5,0.0);
                glTranslatef(-3.5,3.5,0);
                glRotatef(angl,0,0,1);
                glRotatef(270,1,0,0);
                gluCylinder(quadric, 0.5, 0.5, 1, 20, 20);
                glTranslatef(0,0,0.75);
                glutSolidOctahedron(); 
            glPopMatrix();
            glPushMatrix();
            glColor3f(6.0,0.5,0.0);
                glTranslatef(3.5,-3.5,0);
                glRotatef(angl,0,0,1);
                glRotatef(270,1,0,0);
                gluCylinder(quadric, 0.5, 0.5, 1, 20, 20);
                glTranslatef(0,0,0.75);
                glutSolidOctahedron(); 
            glPopMatrix();
             glPushMatrix();
             glColor3f(0.5,0.7,1.0);
                glTranslatef(-3.5,-3.5,0);
                glRotatef(angl,0,0,1);
                glRotatef(270,1,0,0);
                gluCylinder(quadric, 0.5, 0.5, 1, 20, 20);
                glTranslatef(0,0,0.75);
                glutSolidOctahedron(); 
            glPopMatrix();
        glPopMatrix();
angl-=1;
}
예제 #20
0
//-------------------------------------------------------------------------
//  Draws our object.
//-------------------------------------------------------------------------
void drawObject ()
{
    //  Draw the object only if the Draw check box is selected
    if (draw)
    {
        //  Push the current matrix into the model view stack
        glPushMatrix ();

        //  Apply the translation
        glTranslatef (translate_xy[0], translate_xy[1], -translate_z);

        //  Apply the rotation matrix
        glMultMatrixf (rotation_matrix);

        //  Apply the scaling
        glScalef (scale, scale, scale);

        //  Get the id of the selected object
        int selected_object = (radiogroup_item_id * 2) + 1 - wireframe;

        switch (selected_object)
        {
            //  draw glut wire cube
            case GLUT_WIRE_CUBE:
                
                glutWireCube (0.5);

                break;
            //  draw glut solid cube
            case GLUT_SOLID_CUBE:
                
                glutSolidCube (0.5);

                break;
            //  draw glut wire sphere
            case GLUT_WIRE_SPHERE:

                glutWireSphere (0.5, 50, 50);

                break;
            //  draw glut solid sphere
            case GLUT_SOLID_SPHERE:

                glutSolidSphere (0.5, 50, 50);

                break;
            //  draw glut wire Cone
            case GLUT_WIRE_CONE:

                glutWireCone (0.5, 0.5, 50, 50);

                break;
            //  draw glut solid cone
            case GLUT_SOLID_CONE:

                glutSolidCone (0.5, 0.5, 50, 50);

                break;
            //  draw glut wire Torus
            case GLUT_WIRE_TORUS:
                
                glutWireTorus (0.15, 0.25, 20, 20);

                break;
            ///  draw glut solid Torus
            case GLUT_SOLID_TORUS:

                glutSolidTorus (0.15, 0.25, 20, 20);

                break;
            //  draw a wire dodecahedron.. The reason why I'm dividing
            //  by 2 * radical (3) when I'm scaling it because I want to fit
            //  the dodecahedron which is centered at the modeling 
            //    coordinates origin with a radius of radical (3).
            case GLUT_WIRE_DODECAHEDRON:
                
                glScalef (1 / sqrt (12), 1 / sqrt (12), 1 / sqrt (12));
                glutWireDodecahedron ();

                break;
            //  draw a solid dodecahedron
            case GLUT_SOLID_DODECAHEDRON:
                glScalef (1 / sqrt (12), 1 / sqrt (12), 1 / sqrt (12));
                glutSolidDodecahedron ();

                break;
            //  draw a wire octahedron.. The reason why I'm dividing
            //  by 2 when I'm scaling is because I want to fit
            //  the octahedron which is centered at the modeling 
            //    coordinates origin with a radius of 1.
            case GLUT_WIRE_OCTAHEDRON:
                
                glScalef (0.5, 0.5, 0.5);
                glutWireOctahedron ();

                break;
            //  draw a solid tetrahedron
            case GLUT_SOLID_OCTAHEDRON:
                glScalef (0.5, 0.5, 0.5);
                glutSolidOctahedron ();

                break;
            //  draw a wire tetrahedron.. 
            case GLUT_WIRE_TETRAHEDRON:
                
                glScalef (1 / sqrt(6), 1 / sqrt(6), 1 / sqrt(6));
                glutWireTetrahedron ();

                break;
            //  draw a solid tetrahedron
            case GLUT_SOLID_TETRAHEDRON:
                glScalef (1 / sqrt(6), 1 / sqrt(6), 1 / sqrt(6));
                glutSolidTetrahedron ();

                break;
            //  draw a wire icosahedron.. The reason why I'm dividing
            //  by 2 when I'm scaling is because I want to fit
            //  the icosahedron which is centered at the modeling 
            //    coordinates origin with a radius of 1.
            case GLUT_WIRE_ICOSAHEDRON:
                
                glScalef (0.5, 0.5, 0.5);
                glutWireIcosahedron ();

                break;
            //  draw a solid icosahedron
            case GLUT_SOLID_ICOSAHEDRON:
                glScalef (0.5, 0.5, 0.5);
                glutSolidIcosahedron ();

                break;
            //  draw Wire Teapot
            case GLUT_WIRE_TEAPOT:
                
                glutWireTeapot (0.5);

                break;
            //  draw a solid Teapot
            case GLUT_SOLID_TEAPOT:

                glutSolidTeapot (0.5);

                break;
            //  Do Nothing
            default:
                break;
        }

        //  Pop our matrix from the model view stack after we finish drawing
        glPopMatrix ();
    }
}
예제 #21
0
/*
 * Class:     gruenewa_opengl_GLUT__
 * Method:    glutSolidOctahedron
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_gruenewa_opengl_GLUT_00024_glutSolidOctahedron
  (JNIEnv * jenv, jobject jobj) {
   glutSolidOctahedron(); 
}
예제 #22
0
파일: tes01.cpp 프로젝트: adofsauron/vsproj
//显示回调函数
void renderScreen(void){
	//将窗口颜色清理为黑色
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
	//将模板缓冲区值全部清理为1
	glClearStencil(1);
	//使能模板缓冲区
	glEnable(GL_STENCIL_TEST);
	//把整个窗口清理为当前清理颜色:黑色。清除深度缓冲区、模板缓冲区
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
	//将当前Matrix状态入栈
	glPushMatrix();
	//坐标系绕x轴旋转xRotAngle
	glRotatef(xRotAngle, 1.0f, 0.0f, 0.0f);
	//坐标系绕y轴旋转yRotAngle
	glRotatef(yRotAngle, 0.0f, 1.0f, 0.0f);
	//进行平滑处理 
	glEnable(GL_POINT_SMOOTH);
	glHint(GL_POINT_SMOOTH, GL_NICEST);
	glEnable(GL_LINE_SMOOTH);
	glHint(GL_LINE_SMOOTH, GL_NICEST);
	glEnable(GL_POLYGON_SMOOTH);
	glHint(GL_POLYGON_SMOOTH, GL_NICEST);

	//白色绘制坐标系
	glColor3f(1.0f, 1.0f, 1.0f);
	glBegin(GL_LINES);
	glVertex3f(-9.0f, 0.0f, 0.0f);
	glVertex3f(9.0f, 0.0f, 0.0f);
	glVertex3f(0.0f, -9.0f, 0.0f);
	glVertex3f(0.0f, 9.0f, 0.0f);
	glVertex3f(0.0f, 0.0f, -9.0f);
	glVertex3f(0.0f, 0.0f, 9.0f);
	glEnd();

	glPushMatrix();
	glTranslatef(9.0f, 0.0f, 0.0f);
	glRotatef(90.0f, 0.0f, 1.0f, 0.0f);
	glutSolidCone(0.3, 0.6, 10, 10);
	glPopMatrix();

	glPushMatrix();
	glTranslatef(0.0f, 9.0f, 0.0f);
	glRotatef(-90.0f, 1.0f, 0.0f, 0.0f);
	glutSolidCone(0.3, 0.6, 10, 10);
	glPopMatrix();

	glPushMatrix();
	glTranslatef(0.0f, 0.0f, 9.0f);
	glRotatef(90.0f, 0.0f, 0.0f, 1.0f);
	glutSolidCone(0.3, 0.6, 10, 10);
	glPopMatrix();

	//设置绘画颜色为金色
	glColor3f(0.0f, 1.0f, 0.0f);
	switch (iModel){
		//球
	case SPHERE:
		if (bWire){
			glutWireSphere(8.0f, 20, 20);
		}
		else{
			glutSolidSphere(8.0f, 20, 20);
		}
		break;
		//锥体
	case CONE:
		if (bWire){
			glutWireCone(4.0f, 8.0f, 20, 20);
		}
		else{
			glutSolidCone(4.0f, 8.0f, 20, 20);
		}
		break;
		//立体
	case CUBE:
		if (bWire){
			glutWireCube(8.0f);
		}
		else{
			glutSolidCube(8.0f);
		}
		break;
		//甜圈
	case TORUS:
		if (bWire){
			glutWireTorus(3.0f, 6.0f, 20, 20);
		}
		else{
			glutSolidTorus(3.0f, 6.0f, 20, 20);
		}
		break;
		//十六面体,默认半径1.0
	case DODECAHEDRON:
		glScalef(6.0f, 6.0f, 6.0f);//x,y,z轴均放大6倍
		if (bWire){
			glutWireDodecahedron();
		}
		else{
			glutSolidDodecahedron();
		}
		break;
		//茶壶
	case TEAPOT:
		if (bWire){
			glutWireTeapot(8.0f);
		}
		else{
			glutSolidTeapot(8.0f);
		}
		break;
		//八面体,默认半径1.0
	case OCTAHEDRON:
		glScalef(6.0f, 6.0f, 6.0f);//x,y,z轴均放大6倍
		if (bWire){
			glutWireOctahedron();
		}
		else{
			glutSolidOctahedron();
		}
		break;
		//四面体,默认半径1.0
	case TETRAHEDRON:
		glScalef(6.0f, 6.0f, 6.0f);//x,y,z轴均放大6倍
		if (bWire){
			glutWireTetrahedron();
		}
		else{
			glutSolidTetrahedron();
		}
		break;
		//二十面体,默认半径1.0
	case ICOSAHEDRON:
		glScalef(6.0f, 6.0f, 6.0f);//x,y,z轴均放大6倍
		if (bWire){
			glutWireIcosahedron();
		}
		else{
			glutSolidIcosahedron();
		}
		break;
	default:
		break;
	}

	//恢复压入栈的Matrix
	glPopMatrix();
	//交换两个缓冲区的指针
	glutSwapBuffers();
}