Example #1
0
        private void Draw()
        {
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glPopMatrix();
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            //cam.Look();

            Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);
            Gl.glTranslated(a, b, c);
            Gl.glRotated(dY, 0, 1, 0);
            Gl.glRotated(dX, 1, 0, 0);
            Gl.glRotated(dZ, 0, 0, 1);
            Gl.glScaled(zoom, zoom, zoom);

            if (Model != null)
            {
                Model.DrawModel();
            }

            //Glut.glutSolidCone(2, 10, 12, 10);

            Gl.glPopMatrix();
            Gl.glFlush();
            AnT.Invalidate();
        }
Example #2
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            Scene.DrawScene();

            AnT.Invalidate();

            if (keysDown[0])
            {
                Scene.CarSpeed += 0.3;
            }
            if (keysDown[1])
            {
                Scene.CarSpeed -= 0.3;
            }

            if (keysDown[2])
            {
                Scene.keyUp            = true;
                Scene.AngleFrontWheel -= 0.5;
            }
            if (keysDown[3])
            {
                Scene.keyUp            = true;
                Scene.AngleFrontWheel += 0.5;
            }
        }
Example #3
0
        private void Draw()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            Gl.glLoadIdentity();

            Gl.glPushMatrix();

            // используем параметры для установленной камеры
            Gl.glTranslated(camera[0], camera[1], camera[2]);
            Gl.glScaled(camera[6], camera[6], camera[6]);
            Gl.glRotated(camera[3], 1, 0, 0);
            Gl.glRotated(camera[4], 0, 1, 0);
            Gl.glRotated(camera[5], 0, 0, 1);

            DrawGround();
            DrawBench();
            DrawRail();
            Gl.glPushMatrix();
            Gl.glRotated(leverRotation, 0, 0, 1);
            DrawLever();
            Gl.glPopMatrix();


            Gl.glPopMatrix();
            Gl.glFlush();

            // обновляем окно
            AnT.Invalidate();
        }
Example #4
0
        // функция Draw
        private void Draw()
        {
            //  Get the OpenGL object.
            OpenGL gl = AnT.OpenGL;

            // очищаем буфер цвета
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT);
            // активируем рисование в режиме GL_TRIANGLES, при котором задание
            // трех вершин с помощью функции glVertex2d или glVertex3d
            // будет объединяться в трехгранный полигон (треугольник)
            gl.Begin(OpenGL.GL_TRIANGLES);
            // устанавливаем параметр цвета, основанный на параметрах a b c
            gl.Color(a, b, c);
            //gl.Color(1.0f, 1.0f, 1.0f);
            // рисуем вершину в координатах 5,5
            gl.Vertex(5.0, 5.0);
            // устанавливаем параметр цвета, основанный на параметрах с a b
            gl.Color(c, a, b);
            // рисуем вершину в координатах 25,5
            gl.Vertex(25.0, 5.0);
            // устанавливаем параметр цвета, основанный на параметрах b c a
            gl.Color(b, c, a);
            // рисуем вершину в координатах 25,5
            gl.Vertex(5.0, 25.0);
            // завершаем режим рисования примитивов
            gl.End();
            // дожидаемся завершения визуализации кадра
            gl.Flush();
            // обновляем изображение в элементе AnT
            AnT.Invalidate();
        }
Example #5
0
        private void incomingData(string data)
        {
            //log(data); //вывод 4-х приходящих значений в лог
            List <string> ar = data.Split(':').ToList();

            if (ar.Count != 4)
            {
                return;
            }

            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); // очищаем буфер цвета
            Gl.glLoadIdentity();                // очищаем текущую матрицу

            Gl.glColor3f(1f, 1f, 1f);
            //drawLine(-1, 0, 1, 0);
            for (int i = -100; i < 100; i++)
            {
                float color = ((i % 10) == 0) ? 0.5f : 0.1f;
                if (0 == i)
                {
                    color = 1f;
                }
                Gl.glColor3f(color, color, color);
                drawLine((float)i / 10, -1, (float)i / 10, 1);
                drawLine(-10, (float)i / 100000, 10, (float)i / 100000);
            }

            //LOG(OCR2A);LOG(":");LOG(analogRead(0));LOG(":");LOG(analogRead(1));LOG(":");LOGLN(analogRead(2));

            float aref = 5, r1 = 10000;
            float a0 = (float)Int16.Parse(ar[1]) * aref / 1024;
            float a1 = (float)Int16.Parse(ar[2]) * aref / 1024;
            float a2 = (float)Int16.Parse(ar[3]) * aref / 1024;
            float uD = a1 - a0;
            float iD = (a0 - a2) / r1;

            log("U = " + uD + "      " + " I = " + iD);

            float[] point = { uD, iD };
            points.Add(point);

            float[] prevArr = null;
            foreach (float[] curArr in points)
            {
                if (null != prevArr)
                {
                    Gl.glColor3f(1f, 0f, 0f);
                    Gl.glBegin(Gl.GL_LINE_STRIP);
                    Gl.glVertex2d(prevArr[0], prevArr[1]);
                    Gl.glVertex2d(curArr[0], curArr[1]);
                    Gl.glEnd();
                }
                prevArr = curArr;
            }

            Gl.glFlush();
            AnT.Invalidate();
        }
Example #6
0
        // функция отрисовки
        private void Draw()
        {
            // если текстура загружена
            if (textureIsLoad)
            {
                // увеличиваем угол поворота
                rot++;
                // корректируем угол
                if (rot > 360)
                {
                    rot = 0;
                }


                // очистка буфера цвета и буфера глубины
                Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
                Gl.glClearColor(255, 255, 255, 1);
                // очищение текущей матрицы
                Gl.glLoadIdentity();

                // включаем режим текстурирования
                Gl.glEnable(Gl.GL_TEXTURE_2D);
                // включаем режим текстурирования , указывая индификатор mGlTextureObject
                Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject);

                // сохраняем состояние матрицы
                Gl.glPushMatrix();

                // выполняем перемещение для более наглядного представления сцены
                Gl.glTranslated(0, -1, -5);
                // реализуем поворот объекта
                Gl.glRotated(rot, 0, 1, 0);

                // отрисовываем полигон
                Gl.glBegin(Gl.GL_QUADS);

                // указываем поочередно вершины и текстурные координаты
                Gl.glVertex3d(1, 1, 0);
                Gl.glTexCoord2f(0, 0);
                Gl.glVertex3d(1, 0, 0);
                Gl.glTexCoord2f(1, 0);
                Gl.glVertex3d(0, 0, 0);
                Gl.glTexCoord2f(1, 1);
                Gl.glVertex3d(0, 1, 0);
                Gl.glTexCoord2f(0, 1);

                // завершаем отрисовку
                Gl.glEnd();

                // возвращаем матрицу
                Gl.glPopMatrix();
                // отключаем режим текстурирования
                Gl.glDisable(Gl.GL_TEXTURE_2D);

                // обновлеям элемент со сценой
                AnT.Invalidate();
            }
        }
Example #7
0
        public void Draw(IDrawable o)
        {
            //Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            Gl.glLoadIdentity();


            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, -6);
            //Gl.glRotated(45, 1, 1, 0);

            // рисуем сферу с помощью библиотеки FreeGLUT
            //Glut.glutWireSphere(2, 32, 32);
            #region backlight
            if (o.state == State.Repast._N_constant_object)
            {
                Gl.glColor3f(0, 1f, 0);
            }
            if (o.state == State.Sex._N_constant_object)
            {
                Gl.glColor3f(0, 1f, 1f);
            }
            if (o.state == State.Attack._N_constant_object)
            {
                Gl.glColor3f(1f, 1f, 0);
            }
            if (o.state == State.Kicked._N_constant_object)
            {
                Gl.glColor3f(1f, 0, 1f);
            }

            if (o.state != State.Default._N_constant_object)
            {
                //Gl.glColor3f(1f, 1f, 1f);
                Gl.glBegin(Gl.GL_QUADS);
                float boundary = 0.1f;
                Gl.glVertex2d(o.X - boundary * o.Width, o.Y - boundary * o.Width);
                Gl.glVertex2d(o.X + o.Width + boundary * o.Width, o.Y - boundary * o.Width);
                Gl.glVertex2d(o.X + o.Width + boundary * o.Width, o.Y + o.Height + boundary * o.Width);
                Gl.glVertex2d(o.X - boundary * o.Width, o.Y + o.Height + boundary * o.Width);
                Gl.glEnd();
            }


            #endregion

            Gl.glColor3f(o.R, o.G, o.B);
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glVertex2d(o.X, o.Y);
            Gl.glVertex2d(o.X + o.Width, o.Y);
            Gl.glVertex2d(o.X + o.Width, o.Y + o.Height);
            Gl.glVertex2d(o.X, o.Y + o.Height);
            Gl.glEnd();
            Gl.glPopMatrix();
            Gl.glFlush();
            AnT.Invalidate();
        }
Example #8
0
        void drawPoints()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);

            Gl.glLoadIdentity();
            Gl.glColor3f(255, 0, 0);

            Gl.glPointSize(4);
            Gl.glBegin(Gl.GL_POINTS);

            //Gl.glVertex2d(0, 0);

            double mnx = inf, mny = inf, mxx = -inf, mxy = -inf;

            for (int i = 0; i < nn; ++i)
            {
                if (x[i] < mnx)
                {
                    mnx = x[i];
                }
                if (x[i] > mxx)
                {
                    mxx = x[i];
                }
                if (y[i] < mny)
                {
                    mny = y[i];
                }
                if (y[i] > mxy)
                {
                    mxy = y[i];
                }
            }

            mnx -= 5;
            mny -= 5;
            mxx += 5;
            mxy += 5;

            for (int i = 0; i < nn; ++i)
            {
                if ((float)AnT.Width <= (float)AnT.Height)
                {
                    Gl.glVertex2d(30 * (x[i] - mnx) / (mxx - mnx) * (float)AnT.Height / (float)AnT.Width, 30 * (y[i] - mny) / (mxy - mny));
                }
                else
                {
                    Gl.glVertex2d(30 * (x[i] - mnx) / (mxx - mnx) * (float)AnT.Height / (float)AnT.Width, 30 * (y[i] - mny) / (mxy - mny));
                }
            }

            Gl.glEnd();

            Gl.glFlush();

            AnT.Invalidate();
        }
 private void button5_Click(object sender, EventArgs e)
 {
     Gl.glClearColor(255, 255, 255, 255);
     Gl.glColor3f(1.0f, 0, 0);
     Glut.glutWireCube(1.0f);
     Gl.glPopMatrix();
     Gl.glFlush();
     AnT.Invalidate();
 }
Example #10
0
 private void movementObjects(object sender, EventArgs e)
 {
     speedSpace  += speedSpaceStart / 150; //Скорость вращения сферы космоса и солнца
     totalSpeed  += totalSpeedStart;       //Общая скорость вращения планет
     rotateSpeed += rotateSpeedStart;      //Общая скорость вращения планет вокруг своей оси
     if (chExplosion.Checked)
     {
         solS.UpdateFrameExplosion();
     }
     AnT.Invalidate();
 }
Example #11
0
        private void button1_Click(object sender, EventArgs e)
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
            Gl.glClearColor(1, 1, 1, 1);
            X0   = AnT.Width - 5; Y0 = 3;
            step = (AnT.Width - 10) / (Math.Pow(2, level) - 1);
            Draw_Fractal(ref newX, level);

            Gl.glFlush();
            AnT.Invalidate();
        }
Example #12
0
 private void AnT_MouseMove(object sender, MouseEventArgs e)
 {
     if (pressed)
     {
         cmbBoxArea.SelectedIndex = 1;
         PosCam.Z = 0.5 * (lastAngleZ + (e.Y - lastMouseX) / 5);
         PosCam.X = Step * (lastPosX - (e.Y - lastMouseY) / 50 * Math.Sin(AngleZ * Math.PI / 180));
         PosCam.X = 0.7 * (lastPosY + (e.X - lastMouseY) / 50 * Math.Cos(AngleZ * Math.PI / 180));
         AnT.Invalidate();
     }
 }
        private void Draw()
        {
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            float[] m = new float[] { 1, 0, 0, xVanishingPoint, 0, 1, 0, yVanishingPoint, 0, 0, 1, 0, 0, 0, 0, 1 };
            Gl.glLoadMatrixf(m);
            Gl.glOrtho(-6, 6, -6, 6, -10, 50);
            //Gl.glOrtho(-(double)AnT.Width, (double)AnT.Width, -(double)AnT.Height, (double)AnT.Height, -10, 10);
            //Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 2, 200);

            Glu.gluLookAt(Xcam, Ycam, Zkam, Xpoint, Ypoint, Zpoint, 0, 1, 0);

            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();

            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glEnable(Gl.GL_LIGHTING);
            Gl.glEnable(Gl.GL_LIGHT0);
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glClearColor(255, 255, 255, 1);
            Gl.glLoadIdentity();
            Gl.glPushMatrix();
            Gl.glTranslated(a, b, c);
            Gl.glRotated(d, 0, 1, 0);
            Gl.glRotated(d, 1, 0, 0);
            Gl.glRotated(d, 0, 0, 1);
            //Gl.glRotated(d, os_x, os_y, os_z);
            Gl.glScaled(zoom, zoom, zoom);

            switch (FigureChanger.SelectedIndex)//тетраэдр гексаэдр октаэдр
            {
            case 0:
            {
                Glut.glutWireTetrahedron();
            }
            break;

            case 1:
            {
                Glut.glutWireCube(1);
            }
            break;

            case 2:
            {
                Glut.glutWireOctahedron();
            }
            break;
            }
            Gl.glPopMatrix();
            Gl.glFlush();
            AnT.Invalidate();
        }
Example #14
0
 private void button1_Click(object sender, EventArgs e)
 {
     Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
     Gl.glLoadIdentity();
     Gl.glColor3f(0, 0, 128);
     Gl.glPushMatrix();
     Gl.glTranslated(0, 0, -6);
     Gl.glRotated(45, 1, 1, 0);
     Glut.glutWireSphere(2, 32, 32);
     Gl.glPopMatrix();
     Gl.glFlush();
     AnT.Invalidate();
 }
Example #15
0
 private void Drawing()                                           // функція прорисовки
 {
     Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); // очистка буфера кольору і глибини
     Gl.glLoadIdentity();                                         // очистка поточної матриці
     Gl.glColor3f(0, 0, 0);                                       // установка черного кольору
     ProgrammDrawingEngine.SwapImage();                           // візуалізація зображення
     ProgrammDrawingEngine.SetColor(DrawColor);
     if (miViewXY.Checked)
     {
         TextXY(Mouse_X + 8f, Mouse_Y + 12f, "[" + (Mouse_X).ToString() + ";" + (Mouse_Y).ToString() + "]");
     }
     Gl.glFlush();     // чекаємо завершення візуалізації кадра
     AnT.Invalidate(); // оновлення SimpleOpenGLControl
 }
Example #16
0
 void sphere()
 {
     Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
     Gl.glLoadIdentity();
     Gl.glColor3f(0f, 0, 0);
     Gl.glPushMatrix();
     Gl.glTranslated(0, 0, -6);
     Gl.glRotated(45, 1, 1, 0);
     // рисуем сферу с помощью библиотеки FreeGLUT
     Glut.glutWireSphere(2, 32, 32);
     Gl.glPopMatrix();
     Gl.glFlush();
     AnT.Invalidate();
 }
Example #17
0
        public void DrawNet()
        {
            Gl.glLineWidth(1);


            //Х
            for (int ax = -16; ax <= 14; ax += 2)
            {
                Gl.glBegin(Gl.GL_LINES);
                Gl.glColor3f(0, 0, 0);
                Gl.glVertex2f(-0.5f, ax);
                Gl.glVertex2f(0.5f, ax);

                Gl.glEnd();
                PrintText2D(ax, -1.5f, ax.ToString());
            }

            //У
            for (int ax = 16; ax >= -14; ax -= 2)
            {
                Gl.glBegin(Gl.GL_LINES);
                Gl.glColor3f(0, 0, 0);
                Gl.glVertex2f(ax, -0.5f);
                Gl.glVertex2f(ax, 0.5f);
                Gl.glEnd();
                PrintText2D(-1.5f, ax, ax.ToString());
            }

            // завершуємо малювати примітиви


            // режим малювання, обєднуєм в лінію кожні 2 точки



            // завершуємом режим малювання


            // виводимо написи на графіках
            //PrintText2D(-6.7f, 1.0f, "-PI");
            //PrintText2D(11.5f, 1.0f, "2PI");



            // очікуємо завершення візуалізації кадра
            Gl.glFlush();

            // сигнал для оновлення елемента
            AnT.Invalidate();
        }
Example #18
0
 //Сфера
 private void timer3_Tick(object sender, EventArgs e)
 {
     Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
     Gl.glLoadIdentity();
     Gl.glColor3b(120, 255, 120);
     Gl.glPushMatrix();
     Gl.glTranslated(0, 0, -12);
     Gl.glRotated(60 + p, 10, 12, -5);
     Glut.glutWireSphere(2, 32, 32);// рисуем сферу с помощью библиотеки FreeGLUT
     Gl.glPopMatrix();
     Gl.glFlush();
     AnT.Invalidate();
     p += 10;
 }
Example #19
0
        public void Refresh()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            Gl.glLoadIdentity();

            cam.Look();

            DrawMap();

            Gl.glFlush();

            AnT.Invalidate();
        }
Example #20
0
 // функция рисования
 private void Drawing()
 {
     // очистка буфера цвета и буфера глубины
     Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
     // очищение текущей матрицы
     Gl.glLoadIdentity();
     // установка черного цвета
     Gl.glColor3f(0, 0, 0);
     // визуализация изображения из движка
     ProgrammDrawingEngine.SwapImage();
     // дожидаемся завершения визуализации кадра
     Gl.glFlush();
     // сигнал для обновление элемента, реализующего визуализацию.
     AnT.Invalidate();
 }
Example #21
0
        private void Drawing()
        {
            //Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
            Gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

            Gl.glColor3f(0.0f, 1.0f, 1.0f);
            Gl.glBegin(Gl.GL_POINTS);
            for (int i = 0; i < 1600; i++)
            {
                Gl.glVertex2f((float)mas[i, 0], (float)mas[i, 1]);
            }

            Gl.glEnd();
            AnT.Invalidate();
        }
Example #22
0
        private void AnT_Resize(object sender, EventArgs e)
        {
            GL.Viewport(0, 0, AnT.Width, AnT.Height);
            GL.MatrixMode(MatrixMode.Projection);
            GL.LoadIdentity(); //иннициализация
            GL.Frustum(-0.5, 0.5, -0.5, 0.5, 0.5, 65);
            GL.MatrixMode(MatrixMode.Modelview);
            Matrix4 p = Matrix4.CreatePerspectiveFieldOfView(MathHelper.PiOver4, Width / (float)Height, 0.1f, 50.0f);

            GL.LoadMatrix(ref p);
            GL.MatrixMode(MatrixMode.Modelview);
            Matrix4 mv = Matrix4.LookAt(Vector3.UnitZ, Vector3.Zero, Vector3.UnitY);

            GL.LoadMatrix(ref mv);
            AnT.Invalidate();
        }
Example #23
0
        private void Drawing()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            Gl.glLoadIdentity();

            Gl.glColor3f(0, 0, 0);


            ProgrammDrawingEngine.SwapImage();
            ProgrammDrawingEngine.SetColor(color1.BackColor);


            Gl.glFlush();

            AnT.Invalidate();
        }
Example #24
0
 private void DrawAim()
 {
     Gl.glMatrixMode(Gl.GL_PROJECTION);
     Gl.glPushMatrix();
     Gl.glLoadIdentity();
     Glu.gluOrtho2D(AnT.Width, 0, 0, AnT.Height);
     Gl.glMatrixMode(Gl.GL_MODELVIEW);
     Gl.glLoadIdentity();
     Gl.glDisable(Gl.GL_CULL_FACE);
     Gl.glClear(Gl.GL_DEPTH_BUFFER_BIT);
     Gl.glColor3f(0, 255, 0);
     Gl.glPushMatrix();
     Gl.glDisable(Gl.GL_DEPTH_TEST);
     DrawAimPart((float)AnT.Width - mouseMoveY + 13f, (float)AnT.Height - mouseMoveX - 4f, "[o]");
     Gl.glEnable(Gl.GL_DEPTH_TEST);
     Gl.glFlush();
     AnT.Invalidate();
 }
Example #25
0
        private void button3_Click(object sender, EventArgs e)
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            Gl.glLoadIdentity();
            Gl.glColor3b(0, 0, 0);

            Gl.glPopMatrix();

            Gl.glTranslated(-40, 0, -100);
            Gl.glRotated(45, 0, 0, 0);

            //Крыша
            Gl.glBegin(Gl.GL_TRIANGLES);
            Gl.glVertex2d(-20, 40);
            Gl.glVertex2d(30, 80);
            Gl.glVertex2d(90, 40);
            Gl.glEnd();

            //Стены
            Gl.glBegin(Gl.GL_LINE_STRIP);
            Gl.glVertex2d(0, 40);
            Gl.glVertex2d(60, 40);
            Gl.glVertex2d(60, -70);
            Gl.glVertex2d(0, -70);
            Gl.glVertex2d(0, 40);
            Gl.glVertex2d(0, -70);
            Gl.glEnd();

            Gl.glColor3b(40, 40, 40);

            //Окно
            Gl.glBegin(Gl.GL_QUADS);
            Gl.glVertex2d(20, 20);
            Gl.glVertex2d(40, 20);
            Gl.glVertex2d(40, 0);
            Gl.glVertex2d(20, 0);
            Gl.glEnd();

            Gl.glPushMatrix();

            Gl.glFlush();
            AnT.Invalidate();
        }
Example #26
0
        void Draw()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            Gl.glLoadIdentity();
            Gl.glColor3d(205.0 / 255.0, 92.0 / 255.0, 92.0 / 255.0);

            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, -c * 3 - a / 2 - b / 2);
            Gl.glRotated(90 + Zz, 1, 0, 0);
            Gl.glRotated(Xx, 0, 0, 1);
            double x = 0, y = 0, z = 0;
            double step_big = 0.1, step_lit = 0.03;

            Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_LINE);
            for (double u = 0; u < 2 * Math.PI; u += step_big)
            {
                Gl.glBegin(Gl.GL_POLYGON);
                for (double v = 0; v < 2 * Math.PI; v += step_lit)
                {
                    x = a * Math.Cos(u) * Math.Cos(v) + b * Math.Sin(u) * Math.Sin(v);
                    y = a * Math.Cos(u) * Math.Sin(v) - b * Math.Sin(u) * Math.Cos(v);
                    z = c * Math.Sin(u);
                    Gl.glVertex3d(x, y, z);
                }
                Gl.glEnd();
            }
            for (double v = 0; v < 2 * Math.PI; v += step_big)
            {
                Gl.glBegin(Gl.GL_POLYGON);
                for (double u = 0; u < 2 * Math.PI; u += step_lit)
                {
                    x = a * Math.Cos(u) * Math.Cos(v) + b * Math.Sin(u) * Math.Sin(v);
                    y = a * Math.Cos(u) * Math.Sin(v) - b * Math.Sin(u) * Math.Cos(v);
                    z = c * Math.Sin(u);
                    Gl.glVertex3d(x, y, z);
                }
                Gl.glEnd();
            }

            Gl.glPopMatrix();
            Gl.glFlush();
            AnT.Invalidate();
        }
Example #27
0
        private void Draw()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            Gl.glLoadIdentity();
            Gl.glColor3i(255, 0, 0);

            cam.Look(); //Обновляем взгляд камеры

            Gl.glPushMatrix();

            DrawGrid(30, 1);//Нарисуем сетку
            draw.Do(curTime, paused);
            Gl.glPopMatrix();

            Gl.glFlush();

            AnT.Invalidate();
        }
Example #28
0
        private void triangle_Click(object sender, EventArgs e)
        {
            //произвольные точки рисуются в промежутке от координаты 0, 0 в координату 30, 30. но мы не попадем в точку правого
            //верхнего угла, если не скорректируем координату с учетом проекции,поэтому мы умножаем на
            //(float)AnT.Height / (float)AnT.Width или на (float)AnT.Width / (float)AnT.Height
            int glx;

            if ((float)AnT.Width <= (float)AnT.Height)
            {
                // рисуем вторую вершину в противоположенном углу
                glx = (int)(30.0f * (float)AnT.Height / (float)AnT.Width);
            }
            else
            { // рисуем вторую вершину в противоположенном углу
                glx = (int)(30.0f * (float)AnT.Width / (float)AnT.Height);
            }
            Random rnd = new Random();

            float r1X = (float)(rnd.Next(0, glx));
            float r2X = (float)(rnd.Next(0, glx));
            float r3X = (float)(rnd.Next(0, glx));
            float r1y = (float)(rnd.Next(0, 30));
            float r2y = (float)(rnd.Next(0, 30));
            float r3y = (float)(rnd.Next(0, 30));

            float r = (float)(rnd.Next(0, 255) / 255f);
            float g = (float)(rnd.Next(0, 255) / 255f);
            float b = (float)(rnd.Next(0, 255) / 255f);

            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glLoadIdentity();

            Gl.glBegin(Gl.GL_TRIANGLES);
            Gl.glColor3d(r, g, b);
            Gl.glVertex2d(r1X, r1y);
            Gl.glVertex2d(r2X, r2y);
            Gl.glVertex2d(r3X, r3y);
            Gl.glEnd();

            Gl.glFlush();
            AnT.Invalidate();
        }
Example #29
0
        public void draw_pic(ushort[] M1)
        {
            Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_LUMINANCE, cl, rw, 0, Gl.GL_LUMINANCE, Gl.GL_UNSIGNED_SHORT, M1);

            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
            Gl.glActiveTexture(Gl.GL_TEXTURE0);
            Gl.glEnable(Gl.GL_TEXTURE_2D);
            Gl.glBegin(Gl.GL_QUADS);

            Gl.glTexCoord2d(0, 0); Gl.glVertex3d(1, -1, 0);
            Gl.glTexCoord2d(0, 1); Gl.glVertex3d(1, 1, 0);
            Gl.glTexCoord2d(1, 1); Gl.glVertex3d(-1, 1, 0);
            Gl.glTexCoord2d(1, 0); Gl.glVertex3d(-1, -1, 0);

            Gl.glEnd();
            Gl.glFlush();
            Gl.glDisable(Gl.GL_TEXTURE_2D);
            AnT.Invalidate();
        }
Example #30
0
        private void timer_Tick(object sender, EventArgs e)
        {
            if (!pause)
            {
                interation++;
                if (interation % cadr == 0)
                {
                    NextInteration();
                }
            }
            else if (interation % cadr != cadr - 1)
            {
                interation++;
            }
            mouse_Events();
            light.MoveLight();
            cam.update();

            AnT.Invalidate();
        }