glTranslated() private method

private glTranslated ( double x, double y, double z ) : void
x double
y double
z double
return void
Example #1
0
        protected void DrawThumbFinger(int fingerPart)
        {
            switch (fingerPart)
            {
            case 1:
                GL.glRotated(-45, 0, 0, 1);
                GL.glColor3d(1, 1, 1);
                GLU.gluSphere(objShpere, 0.6, 50, 50);
                GL.glTranslated(0, 0.2, 0);
                GL.glRotated(-90, 1, 0, 0);
                GL.glColor3d(1, 0.8, 0.6);
                GLU.gluCylinder(objFinger, 0.5, 0.5, 1, 50, 50);
                GL.glRotated(90, 1, 0, 0);
                GL.glTranslated(0, 0.8, 0);
                GL.glRotated(45, 0, 0, 1);
                break;

            case 2:
                GL.glRotated(-45, 0, 0, 1);
                GL.glColor3d(1, 1, 1);
                GLU.gluSphere(objShpere, 0.6, 50, 50);
                GL.glTranslated(0, 0.2, 0);
                GL.glRotated(-90, 1, 0, 0);
                GL.glColor3d(1, 0.8, 0.6);
                GLU.gluCylinder(objFinger, 0.5, 0.5, 0.7, 50, 50);
                GL.glRotated(90, 1, 0, 0);
                GL.glTranslated(0, 0.6, 0);
                GL.glColor3d(1, 1, 1);
                GLU.gluSphere(objShpere, 0.5, 50, 50);
                GL.glRotated(45, 0, 0, 1);
                GL.glTranslated(-4.6, -1.8, 0);
                break;
            }
        }
Example #2
0
        public override void DrawToy(double[] translateCoords, double[] rotateCoords, bool isShadow)
        {
            GL.glTranslated(translateCoords[0], translateCoords[1], translateCoords[2]);
            if (!isShadow)
            {
                GL.glColor3d(1, 1, 1);
            }
            else
            {
                GL.glDisable(GL.GL_TEXTURE_2D);
            }
            GL.glRotated(rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]);

            if (isShadow)
            {
                GL.glCallList(SHADOW_LIST);
            }
            else
            {
                GL.glCallList(LIST);
            }
            GL.glRotated(-rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]);
            GL.glTranslated(-translateCoords[0], -translateCoords[1], -translateCoords[2]);
            GL.glDisable(GL.GL_TEXTURE_2D);
        }
Example #3
0
        public void Draw()
        {
            if (m_uint_DC == 0 || m_uint_RC == 0)
            {
                return;
            }

            GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
            GL.glLoadIdentity();
            GL.glTranslatef(-1.0f, -1.0f, -6.0f);

            drawAxises();
            updateTimer();

            GL.glTranslated(0.5f, 0.0f, 0.5f);

            GL.glRotatef(m_RotateAngle, 0, 1.0f, 0); // y axis rotate
            GL.glRotatef(m_FallAngle, 1, 0, 0);      // x axis rotate

            GL.glTranslated(-0.5f, 0.0f, -0.5f);
            GL.glEnable(GL.GL_TEXTURE_2D);
            GL.glBindTexture(GL.GL_TEXTURE_2D, m_Texture[0]);

            drawDreidel();
            GL.glDisable(GL.GL_TEXTURE_2D);
            GL.glFlush();
            WGL.wglSwapBuffers(m_uint_DC);
        }
Example #4
0
        public void CreateRobotList()
        {
            GL.glPushMatrix();
            //
            // hierarchical list
            //
            GL.glNewList(ROBOT_LIST, GL.GL_COMPILE);

            // BASE : no rotations!!! Angle will be implemented in the CALL routine
            //                   before call to CreateRobotList()
            GL.glColor3f(0, 0, 0.5f);
            GLU.gluCylinder(obj, 3 * r, 3 * r, r * 1.2, 40, 20);
            GL.glTranslated(0, 0, r * 1.2);
            GLU.gluDisk(obj, 0, 3 * r, 40, 20);
            GL.glColor3f(0, 0, 1);
            GLU.gluSphere(obj, r * 1.2, 20, 20);
            // end base

            // transformations
            GL.glRotatef(SHOULDER_angle, 1, 0, 0);

            // call SHOULDER
            GL.glCallList(SHOULDER_LIST);

            // transformations
            //no need in glTranslated 0, 0, SHOULDER_length
            //it is located properly now !!!
            GL.glRotatef(ARM_angle, 1, 0, 0);

            // call ARM
            GL.glCallList(ARM_LIST);
            GL.glEndList();
            GL.glPopMatrix();
        }
Example #5
0
        void drawFloor()
        {
            GL.glEnable(GL.GL_LIGHTING);

            GL.glPushMatrix();
            GL.glColor3d(0, 1, 0);
            GL.glTranslated(0, -0.01, 0);

            float[] grass_ambuse    = { 0.03f, 0.56f, 0.19f, 1.0f };
            float[] grass_specular  = { 0.0f, 0.0f, 0.0f, 1.0f };
            float[] grass_shininess = { 10 };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, grass_ambuse);
            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, grass_specular);
            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, grass_shininess);

            GL.glBegin(GL.GL_QUADS);

            GL.glNormal3f(0, 1, 0);
            GL.glVertex3f(-200, 0, -200);
            GL.glVertex3f(-200, 0, 200);
            GL.glVertex3f(200, 0, 200);
            GL.glVertex3f(200, 0, -200);
            GL.glEnd();

            GL.glDisable(GL.GL_LIGHTING);
            GL.glPopMatrix();
        }
Example #6
0
        void DrawObjects(bool isForShades, int c)
        {
            if (!isForShades)
            {
                GL.glColor3d(1, 0, 0);
            }
            else
            if (c == 1)
            {
                GL.glColor3d(0.5, 0.5, 0.5);
            }
            else
            {
                GL.glColor3d(0.8, 0.8, 0.8);
            }


            GL.glRotated(90, 1, 0, 0);
            if (!isForShades)
            {
                GL.glColor3d(1, 1, 1);
            }
            else
            if (c == 1)
            {
                GL.glColor3d(0.5, 0.5, 0.5);
            }
            else
            {
                GL.glColor3d(0.8, 0.8, 0.8);
            }
            if ((c == 1) && (isForShades))
            {
                GL.glTranslated(0, 0, 0);
                GL.glScaled(0.027, 0.027, 0.027);
                GL.glColor3d(0, 0, 0);
                ch1.DrawModel2();
                GL.glTranslated(0, 0, -200);
                GL.glScaled(0.6, 0.6, 0.6);
                ch.DrawModel2();
            }
            else if ((c == 1) && (!isForShades))
            {
                GL.glTranslated(0, 0, 0);
                GL.glScaled(0.027, 0.027, 0.027);
                ch1.DrawModel();
                GL.glTranslated(0, 0, -200);
                GL.glScaled(0.6, 0.6, 0.6);
                ch.DrawModel();
            }
        }
        public void Drawlake()
        {
            float[] lake_ambuse = { 0.0117f, 0.4296f, 0.6562f, 0.3f };
            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, lake_ambuse);

            for (int ll = 0; ll < 6; ll++)
            {
                GL.glPushMatrix();

                GL.glTranslated(160 - (ll * 70), 0, 0);
                GL.glColor4f(0.0117f, 0.4296f, 0.6562f, 0.5f);
                GL.glRotatef(90, 1, 0, 0);
                GLU.gluDisk(obj, 0, lake_size, 30, 30);// size of lake

                GL.glPopMatrix();
            }
        }
Example #8
0
        protected void DrawLightSource()
        {
            if (enableLightSource)
            {
                GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition);
                GL.glEnable(GL.GL_LIGHTING);
                GL.glEnable(GL.GL_COLOR_MATERIAL);

                GL.glTranslated(lightPosition[0], lightPosition[1], lightPosition[2]);
                GL.glColor3d(1, 1, 0);
                GLUT.glutSolidSphere(0.5, 50, 50);
                GL.glTranslated(-lightPosition[0], -lightPosition[1], -lightPosition[2]);
            }
            else
            {
                GL.glDisable(GL.GL_LIGHTING);
            }
        }
Example #9
0
        void DrawFiguresRef()
        {
            GL.glPushMatrix();

            // must be in scene to be reflected too
            GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos);

            //Draw Light Source
            GL.glDisable(GL.GL_LIGHTING);
            GL.glTranslatef(pos[0], pos[1], pos[2]);
            //Yellow Light source
            GL.glColor3f(1, 1, 0);
            GL.glTranslatef(-pos[0], -pos[1], -pos[2]);
            //projection line from source to plane
            GL.glBegin(GL.GL_LINES);
            GL.glColor3d(0.5, 0.5, 0);
            GL.glVertex3d(pos[0], pos[1], 0);
            GL.glVertex3d(pos[0], pos[1], pos[2]);
            GL.glEnd();

            GL.glEnable(GL.GL_LIGHTING);

            GL.glRotated(intOptionB, 0, 0, 1);

            GL.glColor3f(1, 0, 0);
            GL.glTranslated(0, -0.5, 1);
            GL.glRotated(intOptionC, 1, 1, 1);

            GL.glRotated(-intOptionC, 1, 1, 1);
            GL.glTranslated(0, -0.5, -1);

            GL.glTranslated(1, 2, 1.5);
            GL.glRotated(90, 1, 0, 0);
            GL.glColor3d(0, 1, 1);
            GL.glRotated(intOptionB, 1, 0, 0);

            GL.glRotated(-intOptionB, 1, 0, 0);
            GL.glRotated(-90, 1, 0, 0);
            GL.glTranslated(-1, -2, -1.5);

            GL.glRotated(intOptionB, 0, 0, 1);

            GL.glPopMatrix();
        }
Example #10
0
 void drawLake()
 {
     GL.glEnable(GL.GL_LIGHTING);
     GL.glCallList(WATER_MAT);
     GL.glPushMatrix();
     if (ScrollValue[16] >= 0)
     {
         GL.glScaled(1, 1, 1 + ScrollValue[16]);
     }
     else
     {
         GL.glScaled(1 + ScrollValue[16], 1, 1);
     }
     GL.glTranslated(ScrollValue[12], 0, ScrollValue[13]);
     GL.glRotated(90, 1, 0, 0);
     GLU.gluDisk(obj, 0, ScrollValue[14], 30, 30);
     GL.glPopMatrix();
     GL.glDisable(GL.GL_LIGHTING);
 }
Example #11
0
        void PrepareLists()
        {
            float ARM_length, SHOULDER_length;

            ARM_length      = 2;
            ARM_angle       = -45;
            SHOULDER_length = 2.5f;
            SHOULDER_angle  = 10;
            ROBOT_angle     = 45;
            r = 0.3f;

            ROBOT_LIST    = GL.glGenLists(3);
            ARM_LIST      = ROBOT_LIST + 1;
            SHOULDER_LIST = ROBOT_LIST + 2;

            GL.glPushMatrix();
            GL.glNewList(ARM_LIST, GL.GL_COMPILE);
            //cone
            GL.glColor3f(0.5f, 0, 0);
            GLU.gluCylinder(obj, r, 0, ARM_length, 20, 20);
            GL.glTranslated(0, 0, ARM_length);
            //internal disk
            GL.glColor3f(1, 1, 0);
            GLU.gluDisk(obj, 0, r * 0.5, 20, 20);
            //external disk
            GL.glColor3f(1, 0, 0);
            GLU.gluDisk(obj, r * 0.5, r * 1.5, 20, 20);
            GL.glEndList();
            GL.glPopMatrix();

            GL.glPushMatrix();
            GL.glNewList(SHOULDER_LIST, GL.GL_COMPILE);
            GL.glColor3f(0, 0.5f, 0);
            GLU.gluCylinder(obj, r, r, SHOULDER_length, 20, 20);
            GL.glTranslated(0, 0, SHOULDER_length);
            GL.glColor3f(0, 1, 0);
            GLU.gluSphere(obj, r * 1.2, 20, 20);
            GL.glEndList();
            GL.glPopMatrix();

            CreateRobotList();
        }
Example #12
0
        protected void DrawSingleFinger(int fingerPart, double returnToZero)
        {
            switch (fingerPart)
            {
            case 1:
                GL.glColor3d(1, 1, 1);
                GLU.gluSphere(objShpere, 0.6, 50, 50);
                GL.glTranslated(0, 0.2, 0);
                GL.glRotated(-90, 1, 0, 0);
                GL.glColor3d(1, 0.8, 0.6);
                GLU.gluCylinder(objFinger, 0.5, 0.5, 1, 50, 50);
                GL.glRotated(90, 1, 0, 0);
                GL.glTranslated(0, 0.8, 0);
                break;

            case 2:
                GL.glColor3d(1, 1, 1);
                GLU.gluSphere(objShpere, 0.6, 50, 50);
                GL.glTranslated(0, 0.2, 0);
                GL.glRotated(-90, 1, 0, 0);
                GL.glColor3d(1, 0.8, 0.6);
                GLU.gluCylinder(objFinger, 0.5, 0.5, 0.7, 50, 50);
                GL.glRotated(90, 1, 0, 0);
                GL.glTranslated(0, 0.8, 0);
                break;

            case 3:
                GL.glColor3d(1, 1, 1);
                GLU.gluSphere(objShpere, 0.6, 50, 50);
                GL.glTranslated(0, 0.2, 0);
                GL.glRotated(-90, 1, 0, 0);
                GL.glColor3d(1, 0.8, 0.6);
                GLU.gluCylinder(objFinger, 0.5, 0.5, 0.7, 50, 50);
                GL.glRotated(90, 1, 0, 0);
                GL.glTranslated(0, 0.6, 0);
                GL.glColor3d(1, 1, 1);
                GLU.gluSphere(objShpere, 0.5, 50, 50);
                GL.glTranslated(-returnToZero, -5.1, 0);
                break;
            }
        }
 public override void DrawToy(double[] translateCoords, double[] rotateCoords, bool isShadow)
 {
     float[] material = new float[3];
     material[0] = 0.0215f;
     material[1] = 0.1745f;
     material[2] = 0.0215f;
     GL.glMaterialfv(GL.GL_FRONT, GL.GL_AMBIENT, material);
     material[0] = 0.07568f;
     material[1] = 0.61424f;
     material[2] = 0.07568f;
     GL.glMaterialfv(GL.GL_FRONT, GL.GL_DIFFUSE, material);
     material[0] = 0.633f;
     material[1] = 0.727811f;
     material[2] = 0.633f;
     GL.glMaterialfv(GL.GL_FRONT, GL.GL_SPECULAR, material);
     GL.glMaterialf(GL.GL_FRONT, GL.GL_SHININESS, 5f);
     GL.glTranslated(translateCoords[0], translateCoords[1], translateCoords[2]);
     if (!isShadow)
     {
         GL.glColor3d(1, 1, 1);
     }
     else
     {
         GL.glDisable(GL.GL_TEXTURE_2D);
     }
     GL.glRotated(rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]);
     GL.glScaled(10, 10, 10);
     if (isShadow)
     {
         GL.glCallList(SHADOW_LIST);
     }
     else
     {
         GL.glCallList(LIST);
     }
     GL.glScaled(0.1, 0.1, 0.1);
     GL.glRotated(-rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]);
     GL.glTranslated(-translateCoords[0], -translateCoords[1], -translateCoords[2]);
     GL.glDisable(GL.GL_TEXTURE_2D);
 }
Example #14
0
        public void Draw()
        {
            if (m_uint_DC == 0 || m_uint_RC == 0)
            {
                return;
            }

            GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT | GL.GL_STENCIL_BUFFER_BIT);

            GL.glLoadIdentity();
            GLU.gluLookAt(ScrollValue[1], 1, 10, 0, 0, 0, 0, 1, 0);
            GL.glTranslated(0, 0, -6);
            GL.glRotated(20, 1, 0, 0);

            //DrawAxes(Color.Red, Color.Green, Color.Blue);

            UpdateScrollInput();
            DrawLights();
            DrawMirrors();
            DrawFigures();

            GL.glFlush();
            WGL.wglSwapBuffers(m_uint_DC);
        }
Example #15
0
        public void Draw()
        {
            float delta = 0;

            double[] ModelViewMatrixBeforeTransforms = new double[16];
            double[] CurrentTraslation = new double[16];

            if (m_uint_DC == 0 || m_uint_RC == 0)
            {
                return;
            }

            GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT | GL.GL_STENCIL_BUFFER_BIT);
            GL.glLoadIdentity();

            if (enableLookAtValue)
            {
                GLU.gluLookAt(LookAtNumberValue[0], LookAtNumberValue[1], LookAtNumberValue[2],
                              LookAtNumberValue[3], LookAtNumberValue[4], LookAtNumberValue[5],
                              LookAtNumberValue[6], LookAtNumberValue[7], LookAtNumberValue[8]);
            }

            GL.glTranslatef(0.0f, 0.0f, -20.0f);

            if (enableRotate)
            {
                GL.glRotatef(viewAngle, 0.0f, 1.0f, 0.0f);
                viewAngle -= 2f;
            }

            DrawRoom();
            DrawOldAxes();
            DrawLightSource();

            GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX, ModelViewMatrixBeforeTransforms);
            GL.glLoadIdentity();

            if (coordSysMoveDirection != 0)
            {
                delta = 5.0f * Math.Abs(coordSysMoveDirection) / coordSysMoveDirection;

                switch (Math.Abs(coordSysMoveDirection))
                {
                case 1:
                    GL.glTranslatef(delta / 20, 0, 0);
                    break;

                case 2:
                    GL.glTranslatef(0, delta / 20, 0);
                    break;

                case 3:
                    GL.glTranslatef(0, 0, delta / 20);
                    break;

                case 4:
                    GL.glRotatef(delta, 1, 0, 0);
                    break;

                case 5:
                    GL.glRotatef(delta, 0, 1, 0);
                    break;

                case 6:
                    GL.glRotatef(delta, 0, 0, 1);
                    break;
                }
            }

            GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX, CurrentTraslation);
            GL.glLoadMatrixd(AccumulatedTraslations);
            GL.glMultMatrixd(CurrentTraslation);
            GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX, AccumulatedTraslations);
            GL.glLoadMatrixd(ModelViewMatrixBeforeTransforms);
            GL.glMultMatrixd(AccumulatedTraslations);

            DrawAxes();
            GL.glCallList(handList);

            if (enableReflection)
            {
                GL.glEnable(GL.GL_BLEND);
                GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
                GL.glEnable(GL.GL_STENCIL_TEST);
                GL.glStencilOp(GL.GL_REPLACE, GL.GL_REPLACE, GL.GL_REPLACE);
                GL.glStencilFunc(GL.GL_ALWAYS, 1, 0xFFFFFFFF);
                GL.glColorMask((byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE);
                GL.glDisable(GL.GL_DEPTH_TEST);

                //DrawFloor();
                GL.glCallList(floorMainList);

                GL.glColorMask((byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE);
                GL.glEnable(GL.GL_DEPTH_TEST);
                GL.glStencilFunc(GL.GL_EQUAL, 1, 0xFFFFFFFF);
                GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP);
                GL.glEnable(GL.GL_STENCIL_TEST);
                GL.glPushMatrix();
                GL.glScalef(1, -1, 1);
                GL.glEnable(GL.GL_CULL_FACE);
                GL.glCullFace(GL.GL_BACK);

                GL.glTranslated(0, 3, 0);
                DrawFigures();

                GL.glCullFace(GL.GL_FRONT);

                DrawFigures();

                GL.glDisable(GL.GL_CULL_FACE);
                GL.glPopMatrix();
                GL.glDepthMask((byte)GL.GL_FALSE);

                //DrawFloor();
                GL.glCallList(floorMainList);

                GL.glDepthMask((byte)GL.GL_TRUE);
                GL.glDisable(GL.GL_STENCIL_TEST);
            }

            GL.glFlush();
            WGL.wglSwapBuffers(m_uint_DC);
        }
Example #16
0
        /**********************************************************************************************************
        *
        *
        *
        * MAIN DRAW FUNCTION
        *
        *
        *
        **********************************************************************************************************/
        public void Draw()
        {
            if (m_uint_DC == 0 || m_uint_RC == 0)
            {
                return;
            }

            GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT | GL.GL_STENCIL_BUFFER_BIT);

            GL.glViewport(0, 0, Width, Height);
            GL.glLoadIdentity();

            GLU.gluLookAt(ScrollValue[0], ScrollValue[1], ScrollValue[2],
                          ScrollValue[3], ScrollValue[4], ScrollValue[5],
                          ScrollValue[6], ScrollValue[7], ScrollValue[8]);

            GL.glRotatef(xAngle, 1.0f, 0.0f, 0.0f);
            GL.glRotatef(yAngle, 0.0f, 1.0f, 0.0f);
            GL.glRotatef(zAngle, 0.0f, 0.0f, 1.0f);
            GL.glTranslatef(xShift, yShift, zShift);

            pos[0] = light_position[0] = ScrollValue[9];
            pos[1] = light_position[1] = ScrollValue[10];
            pos[2] = light_position[2] = ScrollValue[11];
            pos[3] = light_position[3] = 0;

            GL.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, light_ambient);
            GL.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, light_diffuse);
            GL.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, light_specular);
            GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, light_position);

            GL.glLightModelfv(GL.GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
            GL.glEnable(GL.GL_LIGHT0);

            /*
             *
             * Reflection
             *
             */
            GL.glEnable(GL.GL_BLEND);
            GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
            if (reflectionOn)
            {
                //draw only to STENCIL buffer
                GL.glEnable(GL.GL_STENCIL_TEST);
                GL.glStencilOp(GL.GL_REPLACE, GL.GL_REPLACE, GL.GL_REPLACE);
                GL.glStencilFunc(GL.GL_ALWAYS, 1, 0xFFFFFFFF);
                GL.glColorMask((byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE);
                GL.glDisable(GL.GL_DEPTH_TEST);

                drawLake();

                // restore regular settings
                GL.glColorMask((byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE);
                GL.glEnable(GL.GL_DEPTH_TEST);

                // reflection is drawn only where STENCIL buffer value equal to 1
                GL.glStencilFunc(GL.GL_EQUAL, 1, 0xFFFFFFFF);
                GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP);

                /*
                 *
                 * draw reflected scene
                 *
                 */

                GL.glEnable(GL.GL_LIGHTING);
                for (currentTree = 0; currentTree < numOfTrees; currentTree++)
                {
                    GL.glPushMatrix();
                    //GL.glTranslated(randX[currentTree], 0,randZ[currentTree]);
                    GL.glTranslated(locationX[currentTree], 0, locationZ[currentTree]);
                    GL.glRotated(locationRotateY[currentTree], 0, 1, 0);
                    GL.glScalef(1, -1, 1); //swap on Z axis

                    if (scullFaceOn)
                    {
                        GL.glEnable(GL.GL_CULL_FACE);
                        GL.glCullFace(GL.GL_BACK);
                        GL.glCallList(TREE_LIST + currentTree);
                        GL.glCullFace(GL.GL_FRONT);
                        GL.glCallList(TREE_LIST + currentTree);
                        GL.glDisable(GL.GL_CULL_FACE);
                    }
                    else
                    {
                        GL.glCallList(TREE_LIST + currentTree);
                    }

                    GL.glPopMatrix();
                }

                drawLake();

                GL.glStencilFunc(GL.GL_NOTEQUAL, 1, 0xFFFFFFFF);
                GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP);

                // really draw floor
                //( half-transparent ( see its color's alpha byte)))
                // in order to see reflected objects
                //GL.glDepthMask((byte)GL.GL_FALSE);
                GL.glDepthMask((byte)GL.GL_TRUE);
                if (!textureOn)
                {
                    drawFloor();
                }
                else
                {
                    drawFloorTextured();
                    DrawTexturedCube();
                }

                GL.glDisable(GL.GL_LIGHTING);
                GL.glDisable(GL.GL_STENCIL_TEST);
            }
            else
            {
                GL.glEnable(GL.GL_LIGHTING);
                drawLake();
                if (!textureOn)
                {
                    drawFloor();
                }
                else
                {
                    drawFloorTextured();
                    DrawTexturedCube();
                }
                GL.glDisable(GL.GL_LIGHTING);
            }

            DrawLight();

            /*
             * Draw trees
             */

            GL.glEnable(GL.GL_LIGHTING);
            GL.glPushMatrix();
            for (currentTree = 0; currentTree < numOfTrees; currentTree++)
            {
                GL.glPushMatrix();
                //GL.glTranslated(randX[currentTree], 0, randZ[currentTree]);
                GL.glTranslated(locationX[currentTree], 0, locationZ[currentTree]);
                GL.glRotated(locationRotateY[currentTree], 0, 1, 0);
                GL.glCallList(TREE_LIST + currentTree);
                GL.glPopMatrix();
            }
            GL.glPopMatrix();

            /*
             * Draw trees shadows
             */
            GL.glDisable(GL.GL_LIGHTING);
            GL.glColor3d(0, 0, 0);
            if (shadowOn)
            {
                GL.glPushMatrix();
                MakeShadowMatrix(ground);
                GL.glMultMatrixf(cubeXform);
                for (currentTree = 0; currentTree < numOfTrees; currentTree++)
                {
                    GL.glPushMatrix();
                    //GL.glTranslated(randX[currentTree], 0, randZ[currentTree]);
                    GL.glTranslated(locationX[currentTree], 0, locationZ[currentTree]);
                    GL.glRotated(locationRotateY[currentTree], 0, 1, 0);
                    GL.glCallList(TREE_LIST + currentTree);
                    GL.glPopMatrix();
                }
                GL.glPopMatrix();
            }

            GL.glFlush();
            WGL.wglSwapBuffers(m_uint_DC);
        }
Example #17
0
        public void DrawShadowHand(bool side)
        {
            GL.glPushMatrix();
            GL.glTranslated(0, 0, 0.23f);
            GL.glPushMatrix();
            if (side == false)
            {
                GL.glTranslatef(0, 0.6f, 0);
                if (WeaponIndex == 1 || WeaponIndex == 2)
                {
                    GL.glRotatef(ShoulderLeftAngle / 10, 0, 0, 1);
                    GL.glRotatef(WeaponPlace, 0, 0, 1);//hand Move from fire
                }
                else
                {
                    GL.glRotatef(-ShoulderLeftAngle, 0, 0, 1);
                }
                GL.glTranslatef(0, -0.6f, 0);
            }
            else
            {
                GL.glTranslatef(0, 0.6f, 0);
                if (WeaponIndex == 1 || WeaponIndex == 2)
                {
                    GL.glRotatef(-ShoulderRightAngle / 10, 0, 0, 1);
                    GL.glRotatef(WeaponPlace, 0, 0, 1);//hand Move from fire
                }
                else
                {
                    GL.glRotatef(-ShoulderRightAngle, 0, 0, 1);
                }
                GL.glTranslatef(0, -0.6f, 0);
            }

            GL.glTranslatef(0, 0.6f, 0.55f);
            GLU.gluCylinder(obj, radius, radius, radius * 1.2, 40, 20);
            GL.glTranslated(0, 0, radius * 1.2);
            GLU.gluDisk(obj, 0, radius, 40, 20);
            GLU.gluSphere(obj, radius * 1.2, 20, 20);
            GL.glTranslatef(0, -0.6f, -0.55f);

            // build Robot shoulder
            GL.glCallList(SHOULDER_SHADOW_LIST);
            GL.glRotatef(ArmLeftAngle, 1, 0, 0);

            //Move down hand with WeaponIndex
            if (WeaponIndex == 2)
            {
                GL.glRotatef(-WeaponPlace, 0, 1, 0);
                GL.glRotatef(WeaponPlace, 0, 0, 1);
            }

            // build Robot arm
            GL.glCallList(ARM_SHADOW_LIST);
            GL.glPopMatrix();

            if (IsMoving == false) //do not see bullets when walking
            {
                GL.glPushMatrix();
                if (WeaponIndex == 2)
                {
                    GL.glTranslatef(0.2f, 0.2f, 1.4f);
                    GL.glRotatef(-8, 0, 1, 0);
                }
                else//WeaponIndex 1
                {
                    GL.glTranslatef(2.2f, 1.4f, 1.3f);
                    GL.glRotatef(-8, 0, 1, 0);
                }

                GL.glRotatef(90, 0, 1, 0);
                GL.glTranslatef(0, 0, ShootDist);
                if (WeaponIndex == 1)
                {
                    //draw bullet
                    radius = radius * 2.2f;
                    GL.glColor3f(0.0f, 0.0f, 0);
                    GLU.gluCylinder(obj, radius / 4.5f, radius / 4.5f, radius / 2, 40, 20);
                    GLU.gluDisk(obj, 0, radius / 4.5f, 20, 20);
                    GL.glTranslatef(0, 0, radius / 2);
                    GLU.gluCylinder(obj, radius / 4.5f, 0, radius / 4, 40, 20);
                    radius = radius / 2.2f;
                }
                else if (WeaponIndex == 2)
                {
                    //draw bullet
                    GL.glColor3f(0.0f, 0.0f, 0);
                    GLU.gluCylinder(obj, radius / 1.3f, radius / 1.3f, radius * 7, 40, 20);
                    GLU.gluDisk(obj, 0, radius / 1.3f, 20, 20);
                    GL.glTranslatef(0, 0, radius * 7);
                    GLU.gluCylinder(obj, radius / 1.3f, 0, radius * 5, 40, 20);
                }
                GL.glPopMatrix();
            }
            GL.glPopMatrix();
        }
Example #18
0
        void DrawDynamicShadowHand()
        {
            switch (WeaponIndex)
            {
            case 0:
                GL.glPushMatrix();
                GL.glNewList(SHOULDER_SHADOW_LIST, GL.GL_COMPILE);
                //shoulder
                GL.glTranslatef(0, 0.6f, 0);
                GL.glTranslated(0, 0, shoulderLength - 0.55);
                GL.glRotatef(55, 1, 0, 0);
                GLU.gluCylinder(obj, radius, radius, shoulderLength, 20, 20);
                GL.glTranslated(0, 0, shoulderLength);
                GLU.gluSphere(obj, 1.3 * radius, 20, 20);
                GL.glEndList();
                GL.glPopMatrix();

                GL.glPushMatrix();
                GL.glNewList(ARM_SHADOW_LIST, GL.GL_COMPILE);
                //arm
                GL.glRotatef(-30, 1, 0, 0);
                GLU.gluCylinder(obj, radius, radius, armLength, 20, 20);
                GL.glTranslated(0, 0, armLength);
                GLU.gluSphere(obj, radius * 2.2, 20, 20);

                GL.glEndList();
                GL.glPopMatrix();
                break;

            case 1:
                GL.glPushMatrix();
                GL.glNewList(SHOULDER_SHADOW_LIST, GL.GL_COMPILE);
                //shoulder
                GL.glTranslatef(0, 0.6f, 0);
                GL.glTranslated(0, 0, shoulderLength - 0.55);
                GL.glRotatef(65, 0, 1, 0);
                GLU.gluCylinder(obj, radius, radius, shoulderLength, 20, 20);
                GL.glTranslated(0, 0, shoulderLength);
                GLU.gluSphere(obj, 1.3 * radius, 20, 20);
                GL.glEndList();
                GL.glPopMatrix();

                GL.glPushMatrix();
                GL.glNewList(ARM_SHADOW_LIST, GL.GL_COMPILE);
                //arm
                GL.glRotatef(-80, 1, 0, 0);
                GL.glRotatef(20, 0, 1, 0);
                GLU.gluCylinder(obj, radius, radius, armLength, 20, 20);
                GL.glTranslated(0, 0, armLength);
                GLU.gluSphere(obj, radius * 2.2, 20, 20);

                //gun1
                GL.glTranslatef(0, 0.6f, 0);
                GL.glScalef(1.5f, 1.5f, 1.5f);
                gun1.DrawModel(false, 1);
                break;

            case 2:
                GL.glPushMatrix();
                GL.glNewList(SHOULDER_SHADOW_LIST, GL.GL_COMPILE);
                //shoulder
                GL.glTranslatef(0, 0.6f, 0);
                GL.glTranslated(0, 0, shoulderLength - 0.55);
                GL.glRotatef(65, 1, 0, 0);
                GLU.gluCylinder(obj, radius, radius, shoulderLength, 20, 20);
                GL.glTranslated(0, 0, shoulderLength);
                GLU.gluSphere(obj, 1.3 * radius, 20, 20);
                GL.glEndList();
                GL.glPopMatrix();

                GL.glPushMatrix();
                GL.glNewList(ARM_SHADOW_LIST, GL.GL_COMPILE);
                //arm
                GL.glRotatef(-80, 1, 0, 0);
                GL.glRotatef(90, 0, 1, 0);
                GLU.gluCylinder(obj, radius, radius, armLength, 20, 20);
                GL.glTranslated(0, 0, armLength);
                GLU.gluSphere(obj, radius * 2.2, 20, 20);

                //gun2
                GL.glRotatef(-30, 0, 0, 1);
                GL.glTranslatef(0, 0.6f, 0);
                GL.glScalef(1.3f, 1.3f, 1.3f);
                gun2.DrawModel(false, 1);
                break;

            case 3:
                GL.glPushMatrix();
                GL.glNewList(SHOULDER_SHADOW_LIST, GL.GL_COMPILE);
                //shoulder
                GL.glTranslatef(0, 0.6f, 0);
                GL.glTranslated(0, 0, shoulderLength - 0.55);
                GL.glRotatef(55, 1, 0, 0);
                GLU.gluCylinder(obj, radius, radius, shoulderLength, 20, 20);
                GL.glTranslated(0, 0, shoulderLength);
                GLU.gluSphere(obj, 1.3 * radius, 20, 20);
                GL.glEndList();
                GL.glPopMatrix();

                GL.glPushMatrix();
                GL.glNewList(ARM_SHADOW_LIST, GL.GL_COMPILE);
                //arm
                GL.glRotatef(-30, 1, 0, 0);
                GLU.gluCylinder(obj, radius, radius, armLength, 20, 20);
                GL.glTranslated(0, 0, armLength);
                GLU.gluSphere(obj, radius * 2.2, 20, 20);

                //sword
                GL.glScalef(0.3f, 0.3f, 0.3f);
                sword.DrawModel(false, 1);
                GL.glScalef(-0.3f, -0.3f, -0.3f);
                break;
            }
            GL.glEndList();
            GL.glPopMatrix();
        }
Example #19
0
        public void PrepareShadow()
        {
            radius = 0.18f;

            Robot_SHADOW_LIST    = GL.glGenLists(7);
            ARM_SHADOW_LIST      = Robot_SHADOW_LIST + 1;
            SHOULDER_SHADOW_LIST = Robot_SHADOW_LIST + 2;
            HAND_SHADOW_LIST     = Robot_SHADOW_LIST + 3;
            BODY_SHADOW_LIST     = Robot_SHADOW_LIST + 4;
            HEAD_SHADOW_LIST     = Robot_SHADOW_LIST + 5;
            LEG_UP_SHADOW_LIST   = Robot_SHADOW_LIST + 6;
            LEG_DOWN_SHADOW_LIST = Robot_SHADOW_LIST + 7;

            GL.glPushMatrix();
            GL.glNewList(HEAD_SHADOW_LIST, GL.GL_COMPILE);

            GL.glTranslatef(0, 1, 0);
            //head
            GL.glPushMatrix();
            GL.glTranslatef(0, 1, 0);
            GL.glRotatef(-90, 1, 0, 0);
            GLU.gluSphere(obj, radius * 3.5, 20, 20);
            GL.glRotatef(180, 1, 0, 0);
            GLU.gluCylinder(obj, 3.5 * radius, 3.5 * radius, radius * 2, 20, 20);
            GL.glTranslatef(0, 0, radius * 2);
            GLU.gluCylinder(obj, 3.5 * radius, 0.5, radius * 2, 20, 20);
            GL.glTranslatef(0, 0, radius * 2);
            GLU.gluCylinder(obj, 0.5, 0, radius * 2, 20, 20);
            GL.glPopMatrix();
            GL.glEndList();
            GL.glPopMatrix();

            GL.glPushMatrix();
            GL.glNewList(BODY_SHADOW_LIST, GL.GL_COMPILE);


            //ALL body
            //neck
            GL.glPushMatrix();
            GL.glRotatef(90, 1, 0, 0);
            GL.glTranslatef(0, 0, -2.0f);
            GLU.gluCylinder(obj, 1.5 * radius, 1.5 * radius, bodyLength, 20, 20);
            GL.glPopMatrix();

            ////body up
            GL.glRotatef(90, 1, 0, 0);
            GL.glTranslatef(0, 0, -1.2f);
            GLU.gluCylinder(obj, radius, 6 * radius, bodyLength / 4, 20, 20);
            GL.glTranslatef(0, 0, 1.2f);

            //body midle
            GL.glScalef(1.0f, -1.0f, 1.0f);
            GL.glTranslatef(0, 0, -(bodyLength / 4 + 0.2f));
            GLU.gluCylinder(obj, 6 * radius, 3 * radius, bodyLength / 1.5f, 20, 20);
            GL.glTranslatef(0, 0, (bodyLength / 4 + 0.2f));
            GL.glScalef(1.0f, 1.0f, 1.0f);

            //Tusik
            GLU.gluCylinder(obj, 3 * radius, 3 * radius, bodyLength / 1.5f, 20, 20);

            //body down
            GL.glTranslatef(0, 0, (bodyLength / 1.5f));
            GLU.gluCylinder(obj, 3 * radius, radius, bodyLength / 3.5f, 10, 10);
            GL.glTranslatef(0, 0, -(bodyLength / 1.5f));

            GL.glRotatef(-90, 1, 0, 0);
            GL.glEndList();
            GL.glPopMatrix();
            DrawDynamicShadowHand();

            GL.glPushMatrix();
            GL.glNewList(LEG_UP_SHADOW_LIST, GL.GL_COMPILE);
            //leg_up
            GLU.gluCylinder(obj, 1.5f * radius, 1.5f * radius, legUpLength, 20, 20);
            GL.glTranslated(0, 0, legUpLength);
            GLU.gluSphere(obj, radius * 1.7f, 20, 20);
            GL.glEndList();
            GL.glPopMatrix();


            GL.glPushMatrix();
            GL.glNewList(LEG_DOWN_SHADOW_LIST, GL.GL_COMPILE);
            //leg_down
            GLU.gluCylinder(obj, 1.5f * radius, 1.5f * radius, legDownLength, 20, 20);
            GL.glTranslated(0, 0, legDownLength);
            GLU.gluSphere(obj, 1.7f * radius, 20, 20);
            GL.glEndList();
            GL.glPopMatrix();
        }
Example #20
0
        void DrawMirrors()
        {
            //only wall, draw only to STENCIL buffer
            GL.glEnable(GL.GL_BLEND);
            GL.glEnable(GL.GL_STENCIL_TEST);
            GL.glStencilOp(GL.GL_REPLACE, GL.GL_REPLACE, GL.GL_REPLACE); // change stencil according to the object color
            GL.glStencilFunc(GL.GL_ALWAYS, 1, 0xFFFFFFFF);               // draw wall always
            GL.glColorMask((byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE);
            GL.glDisable(GL.GL_DEPTH_TEST);
            // add mirrors for STENCIL buffer
            backMirrorSurface.Draw(backMinusArray);
            rightMirrorSurface.Draw(rightMinusArray);
            leftMirrorSurface.Draw(leftMinusArray);

            // restore regular settings
            GL.glColorMask((byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE);
            GL.glEnable(GL.GL_DEPTH_TEST);


            // reflection is drawn only where STENCIL buffer value equal to 1
            GL.glStencilFunc(GL.GL_EQUAL, 1, 0xFFFFFFFF);
            GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); // keep object origenal color

            GL.glEnable(GL.GL_STENCIL_TEST);

            // draw reflected scene for back mirror
            GL.glPushMatrix();
            GL.glScalef(1, 1, -1); //swap on Z axis
            GL.glTranslated(0, 0, mirrorWidth);
            rubiksCube.Draw();
            GL.glPopMatrix();

            // draw reflected left mirror scene for right mirror scene
            GL.glPushMatrix();
            //GL.glScalef(-1, 1, 1); //swap on Z axis
            GL.glTranslated(mirrorWidth * 2, 0, 0);
            rubiksCube.Draw();
            GL.glPopMatrix();

            // draw reflected scene for right mirror
            GL.glPushMatrix();
            GL.glScalef(-1, 1, 1); //swap on X axis
            GL.glTranslated(-mirrorWidth, 0, 0);
            leftMirrorSurface.Draw(leftMinusArray);
            rubiksCube.Draw();
            GL.glPopMatrix();

            // draw reflected right mirror scene for left mirror scene
            GL.glPushMatrix();
            //GL.glScalef(-1, 1, 1); //swap on Z axis
            GL.glTranslated(-mirrorWidth * 2, 0, 0);
            rubiksCube.Draw();
            GL.glPopMatrix();

            // draw reflected scene for left mirror
            GL.glPushMatrix();
            GL.glScalef(-1, 1, 1); //swap on X axis
            GL.glTranslated(mirrorWidth, 0, 0);
            rightMirrorSurface.Draw(rightMinusArray);
            rubiksCube.Draw();
            GL.glPopMatrix();

            // really draw wall
            //( half-transparent ( see its color's alpha byte)))
            // in order to see reflected objects
            GL.glDepthMask((byte)GL.GL_FALSE);

            backMirrorSurface.Draw(backMinusArray);

            Console.WriteLine((((-1.0 / 15) * (-90 - rightMirrorSurface.AngleY))));
            Console.WriteLine(rightMirrorSurface.AngleY);

            if (ScrollValue[1] < (3 + 5 * ((-1.0 / 15) * (-90 - rightMirrorSurface.AngleY))) && ScrollValue[1] > -(3 + 5 * ((-1.0 / 15) * (-90 - rightMirrorSurface.AngleY))))  // TODO: need to consider with --> cGL.rightMirrorSurface.AngleY >= -90
            {
                rightMirrorSurface.Draw(rightMinusArray);
                leftMirrorSurface.Draw(leftMinusArray);
            }
            else if (ScrollValue[1] < (3 + 5 * ((-1.0 / 15) * (-90 - rightMirrorSurface.AngleY))))
            {
                leftMirrorSurface.DrawAsWall(leftWallColorArray, leftMinusArray);
                rightMirrorSurface.Draw(rightMinusArray);
            }
            else
            {
                rightMirrorSurface.DrawAsWall(rightWallColorArray, rightMinusArray);
                leftMirrorSurface.Draw(leftMinusArray);
            }

            GL.glDepthMask((byte)GL.GL_TRUE);
            // Disable GL.GL_STENCIL_TEST to show All, else it will be cut on GL.GL_STENCIL
            GL.glDisable(GL.GL_STENCIL_TEST);

            // GL.glEnable(GL.GL_DEPTH_TEST);
            //GL.glDisable(GL.GL_DEPTH_TEST);
            //GL.glClear(GL.GL_DEPTH_BUFFER_BIT);
            //GL.glDepthFunc(GL.GL_LESS);
            //GL.glDepthFunc(GL.GL_GREATER);

            //   GL.glDisable(GL.GL_BLEND);
        }
Example #21
0
        public void DrawRobot(bool isForShades)
        {
            GL.glPushMatrix();
            if (!isForShades)
            {
                GL.glColor4f(0f, 0f, 0.4f, 1f);
                GL.glEnable(GL.GL_COLOR_MATERIAL);
                GL.glMaterialf(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, 51.2f);
                GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, chrome_ambient);
                GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_DIFFUSE, chrome_diffuse);
                GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, chrome_specular);
            }

            GL.glTranslated(0, 0, 7.5);

            GL.glRotatef(180, 0, 1, 0);
            GL.glRotatef(-alfa, 0, 0, 1);
            GL.glTranslated(0, 0, updn);
            GL.glRotatef(bodyAngle, 0, 1, 0);
            GL.glPushMatrix();


            //torso
            if (isForShades)
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }

            GLU.gluCylinder(obj, 1.0, 1.0, 4.0, 50, 3);
            GLU.gluDisk(obj, 0, 1, 40, 20);
            GL.glTranslated(0, 0, 4);
            GLU.gluDisk(obj, 0, 1, 40, 20);
            GL.glTranslated(0, 0, -4);
            //head
            GL.glTranslated(0, 0, -r * 3);
            GLU.gluSphere(obj, r * 3, 20, 20);

            GL.glPopMatrix();

            GL.glPushMatrix();
            //right_upper_ARM

            GL.glTranslated(0, 1.3, 0.3);

            GL.glRotatef(right_upper_ARM_yangle, 0, 1, 0);
            GL.glRotatef(right_upper_ARM_xangle, 1, 0, 0);
            if (!isForShades)
            {
                GL.glColor3f(0.4f, 0.6f, 0f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluSphere(obj, r * 1.4, 20, 20);
            if (!isForShades)
            {
                GL.glColor3f(0, 0, 1f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3);
            //right_lower_ARM
            GL.glTranslated(0, 0, 1.7);
            GL.glRotatef(right_lower_ARM_angle, 0, 1, 0);
            if (!isForShades)
            {
                GL.glColor3f(0.4f, 0.6f, 0f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluSphere(obj, r * 1.1, 20, 20);
            if (!isForShades)
            {
                GL.glColor3f(0, 0, 1f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3);

            GL.glPopMatrix();

            GL.glPushMatrix();

            //left_upper_ARM

            GL.glTranslated(0, -1.3, 0.3);
            GL.glRotatef(left_upper_ARM_yangle, 0, 1, 0);
            GL.glRotatef(left_upper_ARM_xangle, 1, 0, 0);
            if (!isForShades)
            {
                GL.glColor3f(0.4f, 0.6f, 0f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluSphere(obj, r * 1.4, 20, 20);
            if (!isForShades)
            {
                GL.glColor3f(0, 0, 1f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3);

            //left_lower_ARM

            /////
            GL.glTranslated(0, 0, 1.7);
            GL.glRotatef(left_lower_ARM_angle, 0, 1, 0);
            if (!isForShades)
            {
                GL.glColor3f(0.4f, 0.6f, 0f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluSphere(obj, r * 1.1, 20, 20);
            if (!isForShades)
            {
                GL.glColor3f(0, 0, 1f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3);

            GL.glPopMatrix();

            GL.glPushMatrix();

            //left_LEG

            GL.glTranslated(0, -0.7, 4.2);
            GL.glRotatef(right_upper_LEG_angle, 0, 1, 0);
            if (!isForShades)
            {
                GL.glColor3f(0.4f, 0.6f, 0f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluSphere(obj, r * 1.5, 20, 20);
            if (!isForShades)
            {
                GL.glColor3f(0, 0, 1f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3);
            GL.glTranslated(0, 0, 1.7);

            // right_lower_LEG

            GL.glRotatef(right_lower_LEG_angle, 0, 1, 0);
            if (!isForShades)
            {
                GL.glColor3f(0.4f, 0.6f, 0f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluSphere(obj, r * 1.1, 20, 20);
            if (!isForShades)
            {
                GL.glColor3f(0, 0, 1f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3);

            GL.glPopMatrix();

            GL.glPushMatrix();

            //right_LEG

            GL.glTranslated(0, 0.7, 4.2);
            GL.glRotatef(left_upper_LEG_angle, 0, 1, 0);
            if (!isForShades)
            {
                GL.glColor3f(0.4f, 0.6f, 0f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluSphere(obj, r * 1.5, 20, 20);
            if (!isForShades)
            {
                GL.glColor3f(0, 0, 1f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3);
            GL.glTranslated(0, 0, 1.7);
            //left_lower_LEG
            GL.glRotatef(left_lower_LEG_angle, 0, 1, 0);
            if (!isForShades)
            {
                GL.glColor3f(0.4f, 0.6f, 0f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluSphere(obj, r * 1.1, 20, 20);
            if (!isForShades)
            {
                GL.glColor3f(0, 0, 1f);
            }
            else
            {
                GL.glColor3f(0.2f, 0.2f, 0.2f);
            }
            GLU.gluCylinder(obj, 0.3, 0.3, 1.7, 50, 3);

            GL.glPopMatrix();

            GL.glPopMatrix();
        }
        public void drawPenguin()
        {
            GL.glPushMatrix();
            //  drawaxe();
            GL.glRotatef(90, 0.0f, 1.0f, 0.0f);

            GL.glRotatef(-90, 1.0f, 0.0f, 0.0f);


            //drawaxe();
            GL.glTranslated(0.0, -200, 0);
            GL.glTranslated(0.0, speed, 0);  // going forward
            GL.glRotated(spirala, 0, 0, 1);  //turn 180 deg

            // drawaxe();



            if (speedFlg)
            {
                if (!spiralaFlg)
                {
                    if (forward)
                    {
                        if (speed < 380)
                        {
                            speed += 5;
                            GL.glRotated(flap * 6, 0, 0, 1);  //Jump
                        }
                        if (speed >= 380)
                        {
                            speedFlg   = false;
                            spiralaFlg = true;
                            forward    = false;
                        }
                    }
                    if (!forward)
                    {
                        if (speed > 0)
                        {
                            speed -= 5;
                            GL.glRotated(flap * 6, 0, 0, 1);
                        }
                        if (speed <= 0)
                        {
                            speedFlg   = false;
                            spiralaFlg = true;
                            forward    = true;
                        }
                    }
                }
            }
            if (!speedFlg)
            {
                if (spiralaFlg)
                {
                    if (spirala < spindLim)
                    {
                        spirala += 18;
                        GL.glTranslated(0.0, 0, 0 + flap * 8);
                    }
                    else
                    {
                        spiralaFlg = false;
                        spindLim  += 180;
                    }
                }
                if (!spiralaFlg)
                {
                    speedFlg = true;
                }
            }

            if (!checkBox)
            {
                if (!flapFlg)
                {
                    flap += 0.5f;
                    if (flap >= 5)
                    {
                        flapFlg = true;
                    }
                }
                if (flapFlg)
                {
                    flap -= 0.5f;
                    if (flap <= 0)
                    {
                        flapFlg = false;
                    }
                }
            }
            if (checkBox)
            {
                flap = 0;
            }



            GL.glPushMatrix();

            GL.glScaled(scale_inc, scale_inc, scale_inc); //size of penguin
            //drawaxe();

            float[] front_ambuse = { 0.9f, 0.9f, 0.9f, 1.0f };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, front_ambuse);

            GL.glColor3f(1.0f, 1.0f, 1.0f);
            //Front body
            GL.glBegin(GL.GL_QUADS);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(-3, 3, 0);
            GL.glVertex3d(3, 3, 0);
            GL.glVertex3d(4, 4, 5);
            GL.glVertex3d(-4, 4, 5);
            GL.glEnd();

            GL.glBegin(GL.GL_QUADS);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(-4, 4, 5);
            GL.glVertex3d(4, 4, 5);
            GL.glVertex3d(2.5, 3, 12);
            GL.glVertex3d(-2.5, 3, 12);
            GL.glEnd();

            float[] backLow_ambuse = { 0.01f, 0.01f, 0.01f, 1.0f };
            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, backLow_ambuse);

            GL.glColor3f(0.01f, 0.01f, 0.01f);

            //Back body
            GL.glBegin(GL.GL_QUADS);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(-3, 0, 0);
            GL.glVertex3d(3, 0, 0);
            GL.glVertex3d(4, -1, 5);
            GL.glVertex3d(-4, -1, 5);
            GL.glEnd();

            float[] backHigh_ambuse = { 0.18f, 0.18f, 0.18f, 1.0f };
            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, backHigh_ambuse);

            GL.glColor3f(0.18f, 0.18f, 0.18f);

            GL.glBegin(GL.GL_QUADS);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(-4, -1, 5);
            GL.glVertex3d(4, -1, 5);
            GL.glVertex3d(2.5, 0, 12);
            GL.glVertex3d(-2.5, 0, 12);
            GL.glEnd();


            float[] SideFront_ambuse = { 0.91f, 0.91f, 0.91f, 1.0f };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, SideFront_ambuse);
            GL.glColor3f(0.91f, 0.91f, 0.91f);

            //leftSide-front body
            GL.glBegin(GL.GL_TRIANGLE_STRIP);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(-3, 3, 0);
            GL.glVertex3d(-3.5, 1, 0);
            GL.glVertex3d(-4, 4, 5);
            GL.glVertex3d(-4.2, 1, 5.5);
            GL.glVertex3d(-2.5, 3, 12);
            GL.glEnd();

            //rightSide-front body
            GL.glBegin(GL.GL_TRIANGLE_STRIP);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(3, 3, 0);
            GL.glVertex3d(3.5, 1, 0);
            GL.glVertex3d(4, 4, 5);
            GL.glVertex3d(4.2, 1, 5.5);
            GL.glVertex3d(2.5, 3, 12);
            GL.glEnd();


            float[] SideBack_ambuse = { 0.1f, 0.1f, 0.1f, 1.0f };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, SideBack_ambuse);
            GL.glColor3f(0.1f, 0.1f, 0.1f);

            //leftSide-front body
            GL.glBegin(GL.GL_TRIANGLE_STRIP);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(-3, 0, 0);
            GL.glVertex3d(-3.5, 1, 0);
            GL.glVertex3d(-4, -1, 5);
            GL.glVertex3d(-4.2, 1, 5.5);
            GL.glVertex3d(-2.5, 0, 12);
            GL.glVertex3d(-2.5, 3, 12);
            GL.glEnd();

            //rightSide-front body
            GL.glBegin(GL.GL_TRIANGLE_STRIP);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(3, 0, 0);
            GL.glVertex3d(3.5, 1, 0);
            GL.glVertex3d(4, -1, 5);
            GL.glVertex3d(4.2, 1, 5.5);
            GL.glVertex3d(2.5, 0, 12);
            GL.glVertex3d(2.5, 3, 12);
            GL.glEnd();


            ////// neck
            GL.glBegin(GL.GL_TRIANGLE_STRIP);
            GL.glNormal3d(0, 0, 1);

            GL.glVertex3d(2.5, 3, 12);
            GL.glVertex3d(-2.5, 3, 12);
            GL.glVertex3d(0, 1.0, 15);
            GL.glEnd();

            GL.glColor3f(0f, 0.0f, 0.0f);

            float[] beak_ambuse = { 0.6021f, 0.3001f, 0.0156f, 1.0f };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, beak_ambuse);
            GL.glColor3f(0.6021f, 0.3001f, 0.0156f);

            ////// beak -left
            GL.glBegin(GL.GL_TRIANGLE_STRIP);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(-2.5, 3, 12);
            GL.glVertex3d(0, 1.0, 15);
            GL.glVertex3d(0, 6.0, 10);
            GL.glEnd();
            ////// beak -right
            GL.glBegin(GL.GL_TRIANGLE_STRIP);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(2.5, 3, 12);
            GL.glVertex3d(0, 1.0, 15);
            GL.glVertex3d(0, 6.0, 10);
            GL.glEnd();


            float[] wing_ambuse = { 0.7421f, 0.4101f, 0.0156f, 1.0f };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, wing_ambuse);
            GL.glColor3f(0.7421f, 0.4101f, 0.0156f);

            ////// wing -left
            GL.glBegin(GL.GL_TRIANGLE_STRIP);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(-2.5, 3, 12);
            GL.glVertex3d(-4.2, +1.0, 5.5);
            GL.glVertex3d(-5 + (float)-flap * 0.4, -5.0 + (float)flap * 0.4, 4);

            GL.glEnd();
            ////// wing -right
            GL.glBegin(GL.GL_TRIANGLE_STRIP);
            GL.glNormal3d(0, 0, 1);
            GL.glVertex3d(2.5, 3, 12);
            GL.glVertex3d(4.2, +1.0, 5.5);
            GL.glVertex3d(5 + (float)flap * 0.4, -5.0 + (float)flap * 0.4, 4);
            GL.glEnd();


            //Head
            float[] head_ambuse = { 0.1117f, 0.1296f, 0.1562f, 1.0f };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, head_ambuse);
            GL.glColor3f(0.1117f, 0.1296f, 0.1562f);

            GL.glPushMatrix();
            GL.glTranslated(0, 1.5, 13);
            GLUT.glutSolidSphere(3.2, 64, 64);
            GL.glPopMatrix();



            //Legs
            float[] legs_ambuse = { 0.5021f, 0.2001f, 0.0156f, 1.0f };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, legs_ambuse);
            GL.glColor3f(0.1117f, 0.1296f, 0.1562f);

            GL.glPushMatrix();
            GL.glTranslated(-2.2, 3, 0);
            GLUT.glutSolidSphere(1.8, 32, 100);
            GL.glPopMatrix();
            GL.glPushMatrix();
            GL.glTranslated(2.2, 3, 0);
            GLUT.glutSolidSphere(1.8, 32, 100);
            GL.glPopMatrix();


            GL.glPushMatrix();



            //Eyes
            float[] eyesW_ambuse = { 1f, 1f, 1f, 1.0f };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, eyesW_ambuse);
            GL.glColor3f(1f, 1f, 1f);

            GL.glPushMatrix();
            GL.glTranslated(-1.2, 3.5, 13);
            GLUT.glutSolidSphere(1, 32, 32);
            GL.glPopMatrix();
            GL.glPushMatrix();
            GL.glTranslated(1.2, 3.5, 13);
            GLUT.glutSolidSphere(1, 32, 32);
            GL.glPopMatrix();

            float[] eyesB_ambuse = { 0f, 0f, 0f, 1.0f };

            GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, eyesB_ambuse);
            GL.glColor3f(1f, 1f, 1f);

            GL.glPushMatrix();
            GL.glTranslated(-1.2, 3.9, 12.8);
            GLUT.glutSolidSphere(0.7, 32, 32);
            GL.glPopMatrix();
            GL.glPushMatrix();
            GL.glTranslated(1.2, 3.9, 12.8);
            GLUT.glutSolidSphere(0.7, 32, 32);
            GL.glPopMatrix();

            GL.glPopMatrix();
            GL.glPopMatrix();
            GL.glPopMatrix();
        }
Example #23
0
        public void PrepareLists()
        {
            handList           = GL.glGenLists(21);
            handBaseList       = handList + 1;
            indexFingerStart   = handList + 2;
            middleFingerStart  = handList + 3;
            ringFingerStart    = handList + 4;
            pinkyFingerStart   = handList + 5;
            thumbFingerStart   = handList + 6;
            indexPhalanxList1  = handList + 7;
            indexPhalanxList2  = handList + 8;
            indexPhalanxList3  = handList + 9;
            middlePhalanxList1 = handList + 10;
            middlePhalanxList2 = handList + 11;
            middlePhalanxList3 = handList + 12;
            ringPhalanxList1   = handList + 13;
            ringPhalanxList2   = handList + 14;
            ringPhalanxList3   = handList + 15;
            pinkyPhalanxList1  = handList + 16;
            pinkyPhalanxList2  = handList + 17;
            pinkyPhalanxList3  = handList + 18;
            thumbPhalanxList1  = handList + 19;
            thumbPhalanxList2  = handList + 20;

            floorMainList      = GL.glGenLists(3);
            floorStartPosition = floorMainList + 1;
            floorList          = floorMainList + 2;

            //Floor Start Position
            GL.glPushMatrix();
            GL.glNewList(floorStartPosition, GL.GL_COMPILE);
            GL.glTranslated(0, 0, 0);
            GL.glEndList();
            GL.glPopMatrix();

            //Floor
            GL.glPushMatrix();
            GL.glNewList(floorList, GL.GL_COMPILE);
            DrawFloor();
            GL.glEndList();
            GL.glPopMatrix();

            //Hand Base
            GL.glPushMatrix();
            GL.glNewList(handBaseList, GL.GL_COMPILE);
            DrawHand();
            GL.glEndList();
            GL.glPopMatrix();

            //Index Finger Start Position
            GL.glPushMatrix();
            GL.glNewList(indexFingerStart, GL.GL_COMPILE);
            GL.glTranslated(2.5, 2.3, 0);
            GL.glEndList();
            GL.glPopMatrix();

            //Middle Finger Start Position
            GL.glPushMatrix();
            GL.glNewList(middleFingerStart, GL.GL_COMPILE);
            GL.glTranslated(0.9, 2.3, 0);
            GL.glEndList();
            GL.glPopMatrix();

            //Ring Finger Start Position
            GL.glPushMatrix();
            GL.glNewList(ringFingerStart, GL.GL_COMPILE);
            GL.glTranslated(-0.7, 2.3, 0);
            GL.glEndList();
            GL.glPopMatrix();

            //Pinky Finger Start Position
            GL.glPushMatrix();
            GL.glNewList(pinkyFingerStart, GL.GL_COMPILE);
            GL.glTranslated(-2.5, 2.3, 0);
            GL.glEndList();
            GL.glPopMatrix();

            //Thumb Finger Start Position
            GL.glPushMatrix();
            GL.glNewList(thumbFingerStart, GL.GL_COMPILE);
            GL.glTranslated(3.35, 0.6, 0);
            GL.glEndList();
            GL.glPopMatrix();

            //[1/3] - Index Finger
            GL.glPushMatrix();
            GL.glNewList(indexPhalanxList1, GL.GL_COMPILE);
            DrawSingleFinger(1, 0);
            GL.glEndList();
            GL.glPopMatrix();
            //[2/3]
            GL.glPushMatrix();
            GL.glNewList(indexPhalanxList2, GL.GL_COMPILE);
            DrawSingleFinger(2, 0);
            GL.glEndList();
            GL.glPopMatrix();
            //[3/3]
            GL.glPushMatrix();
            GL.glNewList(indexPhalanxList3, GL.GL_COMPILE);
            DrawSingleFinger(3, 2.5);
            GL.glEndList();
            GL.glPopMatrix();

            //[1/3] - Middle Finger
            GL.glPushMatrix();
            GL.glNewList(middlePhalanxList1, GL.GL_COMPILE);
            DrawSingleFinger(1, 0);
            GL.glEndList();
            GL.glPopMatrix();
            //[2/3]
            GL.glPushMatrix();
            GL.glNewList(middlePhalanxList2, GL.GL_COMPILE);
            DrawSingleFinger(2, 0);
            GL.glEndList();
            GL.glPopMatrix();
            //[3/3]
            GL.glPushMatrix();
            GL.glNewList(middlePhalanxList3, GL.GL_COMPILE);
            DrawSingleFinger(3, 0.9);
            GL.glEndList();
            GL.glPopMatrix();

            //[1/3] - Ring Finger
            GL.glPushMatrix();
            GL.glNewList(ringPhalanxList1, GL.GL_COMPILE);
            DrawSingleFinger(1, 0);
            GL.glEndList();
            GL.glPopMatrix();
            //[2/3]
            GL.glPushMatrix();
            GL.glNewList(ringPhalanxList2, GL.GL_COMPILE);
            DrawSingleFinger(2, 0);
            GL.glEndList();
            GL.glPopMatrix();
            //[3/3]
            GL.glPushMatrix();
            GL.glNewList(ringPhalanxList3, GL.GL_COMPILE);
            DrawSingleFinger(3, -0.7);
            GL.glEndList();
            GL.glPopMatrix();

            //[1/3] - Pinky Finger
            GL.glPushMatrix();
            GL.glNewList(pinkyPhalanxList1, GL.GL_COMPILE);
            DrawSingleFinger(1, 0);
            GL.glEndList();
            GL.glPopMatrix();
            //[2/3]
            GL.glPushMatrix();
            GL.glNewList(pinkyPhalanxList2, GL.GL_COMPILE);
            DrawSingleFinger(2, 0);
            GL.glEndList();
            GL.glPopMatrix();
            //[3/3]
            GL.glPushMatrix();
            GL.glNewList(pinkyPhalanxList3, GL.GL_COMPILE);
            DrawSingleFinger(3, -2.5);
            GL.glEndList();
            GL.glPopMatrix();

            //[1/2] - Thumb Finger
            GL.glPushMatrix();
            GL.glNewList(thumbPhalanxList1, GL.GL_COMPILE);
            DrawThumbFinger(1);
            GL.glEndList();
            GL.glPopMatrix();
            //[2/2]
            GL.glPushMatrix();
            GL.glNewList(thumbPhalanxList2, GL.GL_COMPILE);
            DrawThumbFinger(2);
            GL.glEndList();
            GL.glPopMatrix();


            CreateHandList();
            CreateFloorList();
        }