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]; //массив конечных элементов
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.