Ejemplo n.º 1
0
        // End конструктор

        public void Plot(PaintPoint ds, int X0, int Y0, double scaleX, double scaleY)
        {
            //paint = new Paint(Rts, pnlCh);
            //paint.Plot(); //, pnlCh);
            //MessageBox.Show(pnlCh.Controls.Count.ToString());
            Ant.MakeCurrent();
            // очистка буфера цвета и буфера глубины
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            // очищение текущей матрицы
            Gl.glLoadIdentity();

            // установка черного цвета
            Gl.glColor3f(100, 0, 0);

            // помещаем состояние матрицы в стек матриц
            Gl.glPushMatrix();

            // выполняем перемещение в пространстве по осям X и Y
            Gl.glTranslated(X0, Y0, 0);
            //  Gl.glScaled(scaleX, scaleY, 1);

            // Gl.glLineWidth(1);
            Gl.glBegin(Gl.GL_QUADS);//GL_LINES);
            // далее мы рисуем координатные оси и стрелки на их концах
            foreach (var bar in BarsDraw.Bars)
            {
                foreach (var k in bar.Point)
                {
                    Gl.glVertex2d(k.Of.X, k.Of.Y);
                    Gl.glVertex2d(k.Of.X, k.Of.Y + hightCl - 1);
                    Gl.glVertex2d(k.To.X, k.To.Y + hightCl - 1);
                    Gl.glVertex2d(k.To.X, k.To.Y);
                }
            }

            // завершаем режим рисования
            Gl.glEnd();
            //axis.PlotAxis(X0,Y0,scaleX,scaleY);

            Gl.glPopMatrix();
            Gl.glFlush();
            Ant.Invalidate();

            axis.PlotAxis1(ds, X0, Y0, scaleX, scaleY);
            //FontPlot.Plot(ds, startPrice, delta, Ant.Height, Ant.Width, Paint.hightCl, Paint.widthCl, X0, Y0);
            Ant.Invalidate();
        }
Ejemplo n.º 2
0
        void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            // Prepare for simulation. Typically we use a time step of 1/60 of a
            // second (60Hz) and 10 iterations. This provides a high quality simulation
            // in most game scenarios.
            float timeStep           = 1.0f / 60.0f;
            int   velocityIterations = 8;
            int   positionIterations = 4;

            // This is our little game loop.
            // Instruct the world to perform a single step of simulation.
            // It is generally best to keep the time step and iterations fixed.
            world.Step(timeStep, velocityIterations, positionIterations);

            sogc.Invalidate();
        }
Ejemplo n.º 3
0
        public void render()
        {
            // очищаем экран и z-буфер
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            // ставим свет (нужно вызывать каждый раз, иначе будет двигаться вместе с камерой)
            Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, light0Pos);
            Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_POSITION, light1Pos);

            // рисуем модельки
            table.render();
            bottom.render();
            DrawScale();

            Gl.glPushMatrix();
            Gl.glTranslatef(0.0f, 0.0f, H0 - dH);
            Gl.glScalef(Scale, Scale, Scale);
            ball.render();
            Gl.glPopMatrix();

            liquid.render();
            tube.render();
            tube_inside.render();

            // сообщаем OpenGL что закончили все дела и можно рисовать кадр
            Gl.glFlush();
            OGLVP.Invalidate();
        }
Ejemplo n.º 4
0
        public void print()// в методе print происходит отрисовка системы координат и решения уравнения
        {
            Gl.glColor3f(0.0f, 0.0f, 1.0f);

            //отрисовываем систему координат
            Gl.glBegin(Gl.GL_LINES);

            Gl.glVertex2d(2.0, 0);
            Gl.glVertex2d(-2.0, 0);
            Gl.glVertex2d(0, 2.0);
            Gl.glVertex2d(0, -2.0);

            Gl.glEnd();

            //y = x^2 + k, k = -4, ....4 для каждого k рисуем график
            Gl.glColor3f(0.0f, 1.0f, 0.0f);
            for (double k = -4; k <= 4; k += 0.5)
            {
                Gl.glBegin(Gl.GL_LINE_STRIP);
                for (double j = -4; j <= 4; j += 0.01)
                {
                    Gl.glVertex2d(j, y(j, k));// метод y(j,k) соответствует функции y = x^2 + k
                }
                Gl.glEnd();
            }

            Gl.glColor3f(0.0f, 1.0f, 0.0f);
            Gl.glBegin(Gl.GL_LINES);
            for (double i = -2; i <= 2; i += 0.5)
            {
                for (double j = -4; j <= 4; j += 0.1)
                {
                    Gl.glVertex2d(j - 0.1, Math.Pow(j, 2) + i + i * (-0.1)); //отрисовка изоклин
                    Gl.glVertex2d(j + 0.1, Math.Pow(j, 2) + i + i * 0.1);
                }
            }
            Gl.glEnd();
            // u, w  - задаем начальное условие
            double u = -0.9;
            double w = 1;

            coordinatesY.Clear();
            coordinatesX.Clear();
            result(u, w); //получаем список координат точек интегральной кривой
                          //для начального условия (u,w)

            Gl.glColor3f(1.0f, 0.0f, 0.0f);
            Gl.glLineWidth(2);
            Gl.glBegin(Gl.GL_LINE_STRIP);
            for (int i = 0; i < coordinatesY.Count(); i++)
            {
                Gl.glVertex2d(coordinatesX[i], coordinatesY[i]);//Отрисовка интегральной кривой
            }
            Gl.glEnd();

            AnT.Invalidate();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// отрисовка поля по всей области
        /// </summary>
        /// <param name="Scene">области отрисовки</param>
        /// <param name="isNigth">текущее время суток (true — ночь, false — день)</param>
        public static void RenderField(SimpleOpenGlControl Scene, bool isNigth)
        {
            int height = Scene.Height;
            int width  = Scene.Width;

            // если текстура загружена
            if (textureIsLoad)
            {
                // очищение текущей матрицы
                Gl.glLoadIdentity();

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

                if (!isNigth)
                {
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject4);
                }
                else
                {
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject5);
                }

                // включаем режим текстурирования , указывая индификатор mGlTextureObject

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


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

                Gl.glTexCoord2f(0, 0);
                Gl.glVertex2d(0, 0);

                Gl.glTexCoord2f(1, 0);
                Gl.glVertex2d(width, 0);

                Gl.glTexCoord2f(1, 1);
                Gl.glVertex2d(width, height);

                Gl.glTexCoord2f(0, 1);
                Gl.glVertex2d(0, height);

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

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

                // обновлеям элемент со сценой
                Scene.Invalidate();
            }
        }
Ejemplo n.º 6
0
        public void drawAll()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            foreach (Shape shape in geometrics)
            {
                shape.draw();
            }

            Gl.glFlush();
            graphics.Invalidate();
        }
Ejemplo n.º 7
0
        public static void drawAll()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            drawGrid();
            foreach (var shape in geometrics)
            {
                shape.draw();
            }

            Gl.glFlush();
            canvas.Invalidate();
        }
Ejemplo n.º 8
0
        static public void CalculateAverages()
        {
            int[] rowIntersect = { -1, -1, -1, 0, 0, 1, 1, 1 };
            int[] colIntersect = { -1, 0, 1, -1, 1, -1, 0, 1 };
            int   RowsCount = MainOpenGLControl.Height / Cell.length, ColsCount = MainOpenGLControl.Width / Cell.length;

            panelCellsBackup = new Cell[RowsCount, ColsCount];

            // We want to change in the main array beacuse it's used in the invalidating function
            // Just ot avoid shallow copies, copy cell by cell.
            for (int l = 0; l < RowsCount; l++)
            {
                for (int m = 0; m < ColsCount; m++)
                {
                    panelCellsBackup[l, m] = panelCells[l, m];
                }
            }

            while (true)
            {
                switch (mainCalculationMode)
                {
                case CalculationMode.Sequential:
                    calculateAveragesSequential(rowIntersect, colIntersect, RowsCount, ColsCount);
                    break;

                case CalculationMode.Parallel:
                    if (Visualizer.mainParallizationMode == ParallelizationMode.CSharp)
                    {
                        calculateAveragesParallelCSharp(rowIntersect, colIntersect, RowsCount, ColsCount);
                    }

                    else if (Visualizer.mainParallizationMode == ParallelizationMode.CPP)
                    {
                        calculateAveragesParallelCppPre(rowIntersect, colIntersect, RowsCount, ColsCount);
                    }
                    break;
                }

                MainOpenGLControl.Invalidate();

                // Replacing the old values with the new ones ..
                for (int l = 0; l < RowsCount; l++)
                {
                    for (int m = 0; m < ColsCount; m++)
                    {
                        panelCells[l, m] = panelCellsBackup[l, m];
                    }
                }
            }
        }
Ejemplo n.º 9
0
        public override void DrawFunc()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glLoadIdentity();
            UpdateLookerPosition();

            Gl.glPushMatrix();
            Gl.glTranslated(0, 0, -5);

            this.RedisplayMeth();

            Gl.glPopMatrix();
            Gl.glFlush();
            DrawContext.Invalidate();
        }
Ejemplo n.º 10
0
        public void render()
        {
            // очищаем экран и z-буфер
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            // ставим свет (нужно вызывать каждый раз, иначе будет двигаться вместе с камерой)
            Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, light0Pos);
            Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_POSITION, light1Pos);
            Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_SPOT_DIRECTION, light1spotdir);

            if (ExpIsRunning)
            {
                wave1.render();
                wave2.render();
                wave3.render();
            }

            Table.render();
            Laser.render();
            ControlUnit.render();
            Supports.render();
            Connector.render();
            Platforms.render();
            if (DrawOSD)
            {
                OSD.render();
            }

            Gl.glPushMatrix();
            Gl.glScalef(Scale, 1.0f, 1.0f);
            if (DrawCrystal)
            {
                Crystal.render();
            }
            else
            {
                CrystalOutline.render();
            }
            Gl.glPopMatrix();

            // сообщаем OpenGL что закончили все дела и можно рисовать кадр
            Gl.glFlush();
            GLVP.Invalidate();
        }
Ejemplo n.º 11
0
        //препятствие
        private static void RenderFillSquareGraphPoint(Point begin, Textures type)
        {
            // если текстура загружена
            if (textureIsLoad)
            {
                // очищение текущей матрицы
                Gl.glLoadIdentity();

                // включаем режим текстурирования
                Gl.glEnable(Gl.GL_TEXTURE_2D);
                // включаем режим текстурирования , указывая индификатор mGlTextureObject
                switch (type)
                {
                case Textures.Block:
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject0);
                    break;

                case Textures.TransparentCharacter:
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject1);
                    break;

                case Textures.CurrentCharactert:
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject2);
                    break;

                case Textures.Toarch:
                    Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject3);
                    break;
                }

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


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

                Gl.glTexCoord2f(0, 0);
                Gl.glVertex2d(begin.X, begin.Y);

                Gl.glTexCoord2f(1, 0);
                Gl.glVertex2d(begin.X + scaleX, begin.Y);

                Gl.glTexCoord2f(1, 1);
                Gl.glVertex2d(begin.X + scaleX, begin.Y + scaleY);

                Gl.glTexCoord2f(0, 1);
                Gl.glVertex2d(begin.X, begin.Y + scaleY);

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

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

                // обновлеям элемент со сценой
                Scene.Invalidate();
            }
        }
Ejemplo n.º 12
0
        public void DrawModel()
        {
            int width  = Controls[(SoftwareRendering ? 2 : 1)].Width;
            int height = Controls[(SoftwareRendering ? 2 : 1)].Height;

            Array.Copy(checkerboard, pixel_buffer, pixel_buffer.Length);
            DrawingArea.initDrawingArea(height, width, pixel_buffer);
            Rasterizer.method364();

            bool success = false;

            if (SelectedModel != null)
            {
                try
                {
                    int k3 = Rasterizer.center_x;
                    int j4 = Rasterizer.center_y;
                    Rasterizer.center_x = c_x + DrawingArea.width / 2;
                    Rasterizer.center_y = c_y + DrawingArea.height / 2;
                    while (Yaw < 0)
                    {
                        Yaw += Model.SIN.Length;
                    }
                    while (Pitch < 0)
                    {
                        Pitch += Model.COS.Length;
                    }
                    while (Roll < 0)
                    {
                        Roll += Model.COS.Length;
                    }
                    Yaw   %= Model.SIN.Length;
                    Pitch %= Model.COS.Length;
                    Roll  %= Model.COS.Length;
                    int  i5       = Rasterizer.SIN[Yaw] * c_z >> 16;
                    int  l5       = Rasterizer.COS[Yaw] * c_z >> 16;
                    bool animated = false;                     //interfaceIsSelected(class9_1);
                    int  i7;

                    /*if (animated)
                     *      i7 = class9_1.anInt258;
                     * else
                     *      i7 = class9_1.anInt257;
                     * Model model;
                     * if (i7 == -1)
                     * {
                     *      model = class9_1.method209(-1, -1, animated);
                     * }
                     * else
                     * {
                     *      Animation animation = Animation.anims[i7];
                     *      model = class9_1.method209(animation.anIntArray354[class9_1.anInt246], animation.anIntArray353[class9_1.anInt246], animated);
                     * }*/
                    if (SelectedModel != null)
                    {
                        SelectedModel.Render(Pitch, Roll, Yaw, 0, i5, l5);
                    }
                    Rasterizer.center_x = k3;
                    Rasterizer.center_y = j4;

                    if (!SoftwareRendering)
                    {
                        Gl.glClearColor(.5f, 1, 1, 1);
                        Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);

                        Gl.glMatrixMode(Gl.GL_PROJECTION);
                        Gl.glLoadIdentity();
                        Gl.glOrtho(0, width, 0, height, -1, 1);
                        Gl.glMatrixMode(Gl.GL_MODELVIEW);
                        Gl.glViewport(0, 0, width, height);

                        Gl.glTexSubImage2D(Gl.GL_TEXTURE_2D, 0, 0, 0, width, height, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, DrawingArea.pixels);
                        Gl.glBegin(Gl.GL_QUADS);
                        Gl.glTexCoord2d(0.0, 1.0); Gl.glVertex2d(0.0, 0.0);
                        Gl.glTexCoord2d(1.0, 1.0); Gl.glVertex2d(width, 0.0);
                        Gl.glTexCoord2d(1.0, 0.0); Gl.glVertex2d(width, height);
                        Gl.glTexCoord2d(0.0, 0.0); Gl.glVertex2d(0.0, height);
                        Gl.glEnd();

                        gl_control.Invalidate();
                    }
                    else
                    {
                        software_control.Image = DrawingArea.ToBitmap();
                    }
                    success = true;
                }
                catch (Exception)
                {
                    success = false;
                }
            }
            else
            {
                Controls[(SoftwareRendering ? 2 : 1)].Visible = false;
                Controls[0].Visible = true;
                this.Invalidate();
            }

            if (!success)
            {
                Controls[(SoftwareRendering ? 2 : 1)].Visible = false;
                Controls[0].Visible = true;
                if (!SoftwareRendering)
                {
                    gl_control.Invalidate();
                }
                else
                {
                    software_control.Invalidate();
                }
            }
            else
            {
                Controls[(SoftwareRendering ? 2 : 1)].Visible = true;
                Controls[0].Visible = false;
            }
        }
Ejemplo n.º 13
0
        public void Draw()
        {
            try
            {
                Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
                Gl.glClearColor(255.0f, 255.0f, 255.0f, 1.0f);
                Gl.glLoadIdentity();

                if (!ortho)
                {
                    Glu.gluLookAt(0.0f, 0.0f, 8.0f,
                                  0.0f, 0.0f, 0.0f,
                                  0.0f, 1.0f, 0.0f);
                }
                if (translateX != 0)
                {
                    Gl.glTranslated(translateX, 0, 0);
                }
                if (translateY != 0)
                {
                    Gl.glTranslated(0, translateY, 0);
                }
                if (translateZ != 0)
                {
                    Gl.glTranslated(0, 0, translateZ);
                }

                if (angleX != 0)
                {
                    Gl.glRotated(angleX, 1, 0, 0);
                }
                if (angleY != 0)
                {
                    Gl.glRotated(angleY, 0, 1, 0);
                }
                if (angleZ != 0)
                {
                    Gl.glRotated(angleZ, 0, 0, 1);
                }

                if (scale != 0)
                {
                    Gl.glScaled(scale, scale, scale);
                }
                //////////////////////////////////////////////////////////////////

                Gl.glColor3f(0.0f, 255.0f, 0.0f);
                if (points.Count > 0 && drawPoints)
                {
                    Gl.glPointSize(5.0f);
                    Gl.glBegin(Gl.GL_POINTS);
                    foreach (Point3D p in points)
                    {
                        Gl.glVertex3d(p.X, p.Y, p.Z);
                    }
                    Gl.glEnd();
                    Gl.glPointSize(1.0f);
                }
                //////////////////////////////////////////////////////////////////

                if (faces.Count > 0)
                {
                    if (drawWire)
                    {
                        foreach (Face f in faces)
                        {
                            Gl.glBegin(Gl.GL_LINE_LOOP);
                            foreach (int point in f.points)
                            {
                                Gl.glVertex3d(points[point - 1].X, points[point - 1].Y, points[point - 1].Z);
                            }
                            Gl.glEnd();
                        }
                    }
                    //////////////////////////////////////////////////////////////////

                    Gl.glEnable(Gl.GL_LIGHTING);

                    Gl.glColor3f(255, 0, 0);

                    foreach (Face f in faces)
                    {
                        switch (f.points.Count)
                        {
                        case 3:
                            Gl.glBegin(Gl.GL_TRIANGLES);
                            break;

                        case 4:
                            Gl.glBegin(Gl.GL_QUADS);
                            break;

                        default:
                            Gl.glBegin(Gl.GL_POLYGON);
                            break;
                        }
                        //////////////////////////////////////////////////////////////////
                        for (int j = 0; f.points.Count > j; j++)
                        {
                            if (f.normales.Count == f.points.Count)
                            {
                                Gl.glNormal3d(normales[f.normales[j] - 1].X, normales[f.normales[j] - 1].Y, normales[f.normales[j] - 1].Z);
                            }
                            else
                            {
                                Vector3D n;
                                var      vec1 = points[f.points[1] - 1] - points[f.points[0] - 1];
                                var      vec2 = points[f.points[2] - 1] - points[f.points[0] - 1];
                                Vector3D n1   = Vector3D.CrossProduct(vec1, vec2);
                                Vector3D n2   = Vector3D.CrossProduct(vec2, vec1);
                                n1.Normalize();
                                n2.Normalize();
                                var t1 = Vector3D.DotProduct(n1, lightDir);
                                var t2 = Vector3D.DotProduct(n2, lightDir);
                                n = t1 >= t2 ? n1 : n2;
                                Gl.glNormal3d(n.Z, n.Y, n.Z);
                            }
                            //////////////////////////////////////////////////////////////////

                            if (f.textures.Count > 0)
                            {
                                Gl.glTexCoord2f(textures[f.textures[j] - 1].X, textures[f.textures[j] - 1].Y);
                            }
                            Gl.glVertex3d(points[f.points[j] - 1].X, points[f.points[j] - 1].Y, points[f.points[j] - 1].Z);
                        }
                        Gl.glEnd();
                    }
                }
                else
                {
                    throw new Exception("Ошибка в файле. Не заданы грани.");
                }

                Gl.glFlush();
                AnT.Invalidate();
                Gl.glDisable(Gl.GL_LIGHTING);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
Ejemplo n.º 14
0
 public void EndDrawing()
 {
     Gl.glFlush();
     _viewport.Invalidate();
 }
Ejemplo n.º 15
0
        public void Plot()
        {
            if (!Window.add)
            {
                PlotSer = true;
                //paint = new Paint(Rts, pnlCh);
                //paint.Plot(); //, pnlCh);
                //MessageBox.Show(pnlCh.Controls.Count.ToString());
                Chart.MakeCurrent();
                // очистка буфера цвета и буфера глубины
                Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

                // очищение текущей матрицы
                Gl.glLoadIdentity();

                // установка черного цвета
                Gl.glColor3f(100, 0, 0);

                // помещаем состояние матрицы в стек матриц
                Gl.glPushMatrix();

                // выполняем перемещение в пространстве по осям X и Y
                Gl.glTranslated(X0, Y0, 0);
                //  Gl.glScaled(scaleX, scaleY, 1);

                // Gl.glLineWidth(1);
                Gl.glBegin(Gl.GL_QUADS); //GL_LINES);
                // далее мы рисуем координатные оси и стрелки на их концах
                int l    = hiCl - 1;
                int From = -X0 - wiCl;
                int To   = -X0 + ScreenW;
                //  string str;
                foreach (var ds in DrawSer.Bars)
                {
                    var gfgf = ds.Value.Price.ElementAt(0).Value[0];
                    if (gfgf >= From && gfgf <= To)
                    {
                        foreach (var pr in ds.Value.Price)
                        {
                            Gl.glVertex2d(pr.Value[0], pr.Value[2]);
                            Gl.glVertex2d(pr.Value[0], pr.Value[2] + l);
                            Gl.glVertex2d(pr.Value[1], pr.Value[2] + l);
                            Gl.glVertex2d(pr.Value[1], pr.Value[2]);
                        }
                    }
                }
                // завершаем режим рисования
                Gl.glEnd();

                // установка черного цвета
                Gl.glColor3f(0, 0, 50);
                Gl.glBegin(Gl.GL_POLYGON);
                Gl.glVertex2d(DrawSer.lastPriceX, DrawSer.lastPriceY);
                Gl.glVertex2d(DrawSer.lastPriceX + 10, DrawSer.lastPriceY + 10);
                Gl.glVertex2d(DrawSer.lastPriceX + 80, DrawSer.lastPriceY + 10);
                Gl.glVertex2d(DrawSer.lastPriceX + 80, DrawSer.lastPriceY - 10);
                Gl.glVertex2d(DrawSer.lastPriceX + 10, DrawSer.lastPriceY - 10);
                Gl.glEnd();

                Gl.glColor3f(1, 1, 1);
                string strr = DrawSer.lastPrice.ToString();
                int    i    = 0;
                foreach (var ch in strr)
                {
                    Gl.glBegin(Gl.GL_LINE_STRIP);

                    foreach (var f in FontPlot.Symbols[ch])
                    {
                        //  Glut.glutStrokeCharacter(Glut.GLUT_STROKE_ROMAN, '3');
                        Gl.glVertex2i(DrawSer.lastPriceX + 15 + i * 9 + f.X, DrawSer.lastPriceY - 5 + Convert.ToInt32(f.Y));
                    }
                    Gl.glEnd();
                    i++;
                }
                Gl.glColor3f(0.172f, 0.2f, 0.215f);
                Gl.glBegin(Gl.GL_LINE_STRIP);
                Gl.glVertex2d(DrawSer.lastPriceX, DrawSer.lastPriceY);
                Gl.glVertex2d(0, DrawSer.lastPriceY);
                Gl.glEnd();

                // PlotNum();
                Gl.glPopMatrix();
                Gl.glFlush();
                Chart.Invalidate();
                //  PlotNum();
                PlotAxis();
                PlotSer = false;
            }
        }
Ejemplo n.º 16
0
        public void DrawSurface()
        {
            int x = 0;

            MaxMin();


            float delta = CG_GET_MAX_Z - CG_GET_MIN_Z;

            Point3D[] tmp = new Point3D[3];
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
            Gl.glLoadIdentity();
            Gl.glColor3f(255, 0, 0);
            Gl.glPushMatrix();
            Gl.glTranslated(transform.x, transform.y, transform.z);
            Gl.glRotatef(-60, 1, 0, 0);
            Gl.glRotatef(ang, 0, 0, 1);
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
            DrawAxis();

            //Graph
            float red = 0;

            Gl.glLineWidth(5);


            while (x + raw_delta + 1 < DataXYZ.Length)
            {
                if (DataXYZ[x + raw_delta + 1].x == 0)
                {
                    x++;
                }

                tmp = new Point3D[4] {
                    DataXYZ[x], DataXYZ[x + raw_delta], DataXYZ[x + raw_delta + 1], DataXYZ[x + 1]
                };

                Gl.glBegin((int)CG_VISUAL);

                foreach (Point3D v in tmp)
                {
                    Gl.glColor3f(1 - (CG_GET_MAX_Z - (float)v.z) / delta, 0, (CG_GET_MAX_Z - (float)v.z) / delta);
                    Gl.glVertex3d(v.x, v.y, v.z / compress_koeff);
                }

                Gl.glEnd();
                x++;
            }



            if (CG_VISUAL == VISUALIZATION.POLY)
            {
                x = 0;
            }
            while (x + raw_delta + 1 < DataXYZ.Length)
            {
                if (DataXYZ[x + raw_delta + 1].x == 0)
                {
                    x++;
                }

                tmp = new Point3D[4] {
                    DataXYZ[x], DataXYZ[x + raw_delta], DataXYZ[x + raw_delta + 1], DataXYZ[x + 1]
                };
                Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_LINE);
                Gl.glLineWidth(1);

                Gl.glBegin(Gl.GL_LINE_LOOP);
                foreach (Point3D v in tmp)
                {
                    if (CG_THEME == Theme.CLASSIC)
                    {
                        Gl.glColor3f(0, 0, 0);
                    }
                    else
                    {
                        Gl.glColor3f(1, 1, 1);
                    }


                    Gl.glVertex3d(v.x, v.y, v.z / compress_koeff);
                }
                red += 0.002f;
                Gl.glEnd();
                x++;
            }


            DrawVectors();
            DrawText();

            Gl.glPopMatrix();
            Gl.glLoadIdentity();
            Gl.glFlush();
            control.Invalidate();
        }