Код программы MainForm, страница 2

            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); // Очистка буфера цвета

            Gl.glLoadIdentity();// Сброс настроек отображения

            Gl.glTranslatef(-5f, -4f, -12); // установить начало координат

            Gl.glRotatef(0, 1, 0, 0);     //Вращение

            Gl.glRotatef(0, 0, 1, 0);

            Gl.glRotatef(0, 0, 0, 1);           

            Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL);//режим отображение - заполненный

            Gl.glLineWidth(1);

            Gl.glBegin(Gl.GL_TRIANGLES);    //рисование треугольников   

            int drawLenght = mesh.Length;

            for (int i = 0; i < drawLenght; i++) //рисование элемента

            {

                Gl.glColor3f(0, 0, 1);

                Gl.glVertex3f((float)mesh[i].element[0].x, (float)mesh[i].element[0].y, 0);

                Gl.glVertex3f((float)mesh[i].element[1].x, (float)mesh[i].element[1].y, 0);

                Gl.glVertex3f((float)mesh[i].element[2].x, (float)mesh[i].element[2].y, 0);

            }

            Gl.glEnd();

            Gl.glColor3f(2, 1, 1);//белый

            Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_LINE);

            Gl.glLineWidth(1.0f);

            Gl.glBegin(Gl.GL_TRIANGLES);

            for (int i = 0; i < drawLenght; i++) //рисование границ элемента

            {

                Gl.glVertex3f((float)mesh[i].element[0].x, (float)mesh[i].element[0].y, 0);

                Gl.glVertex3f((float)mesh[i].element[1].x, (float)mesh[i].element[1].y, 0);

                Gl.glVertex3f((float)mesh[i].element[2].x, (float)mesh[i].element[2].y, 0);

            }

            Gl.glEnd();

            Gl.glBegin(Gl.GL_QUADS);//рисование четырехугольников

            for (int i = 0; i < usels.GetLength(0); i++) //рисование узлов заклепок

            {

                for (int j = 0; j < usels.GetLength(1); j++)

                {

                    if (usels[i, j] != null && usels[i, j].stat)

                    {

                        Gl.glColor3f(1, 0, 0);//красный

                        Gl.glVertex3f((float)usels[i, j].x - 0.05f, (float)usels[i, j].y - 0.05f, 0);

                        Gl.glVertex3f((float)usels[i, j].x + 0.05f, (float)usels[i, j].y - 0.05f, 0);

                        Gl.glVertex3f((float)usels[i, j].x + 0.05f, (float)usels[i, j].y + 0.05f, 0);

                        Gl.glVertex3f((float)usels[i, j].x - 0.05f, (float)usels[i, j].y + 0.05f, 0);

                    }

                }

            }

            Gl.glEnd();

            formVectorR(); //формирование вектора нагрузки

            AnT.Invalidate();//обновление формы для рисования

        }

        public void DrawResult()//рисование результатов

        {

            {

                Draw();

                Gl.glLineWidth(2);

                int drawLenght = mesh.Length;

                Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_LINE);

                Gl.glBegin(Gl.GL_QUADS);

                Gl.glColor3f(0, 0f, 0f);

                float fx = (float)R[R.Length - 2] / 120, fy = (float)R[R.Length - 1] / 120;

                Gl.glVertex3f((float)usels[18, 26].x - fx, (float)usels[18, 26].y - fy, 0);

                Gl.glVertex3f((float)usels[8, 26].x - fx * 2 / 3, (float)usels[8, 26].y - fy * 2 / 3, 0);

                Gl.glVertex3f((float)usels[0, 18].x - fx / 1.5f, (float)usels[0, 18].y - fy / 4, 0);

                Gl.glVertex3f((float)usels[18, 18].x - fx, (float)usels[18, 18].y - 0.2f * fy, 0);

                Gl.glEnd();

                AnT.Invalidate();

            }

        }

        private void getMesh()//создание сетки

        {

            double param_L = double.Parse(textL.Text); //длина пластинки

            double param_T = double.Parse(textT.Text); //ширина пластинки

            int xCnt = 26; //количество узлов по OX

            int yCnt = 18; //количество узлов по OY           

            allCountElement = 872;//количество элементов

            coordx = new int[allCountElement];

            coordy = new int[allCountElement];

            for (int j = 0; j < coordx.Length; j++) //цикл по OY        

            {  

                coordx[j] = -1;

                coordy[j] = -1;

            }

            usels = new Usel[yCnt +1, xCnt+1 ]; //массив всех узлов

            mesh = new Mesh[allCountElement]; //массив конечных элементов