Харків – 2019
Лабораторная работа № 2
Вариант 10
}
public override void OnRender()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |
GL_STENCIL_BUFFER_BIT);
glLoadIdentity();
glViewport(0, 0, Width, Height);
gluOrtho2D(-0.5, X+0.5, -Y, 0.5);
for (int i = 1, j, k = 0, l = 0; i <= ver; i++, l -= 20)
{
for (j = 1; j <= hor; j++, k += 25)
{
if (j % 2 != 0) Paint2(k, l);
else if (j % 2 == 0) Paint2(k, l - 10);
}
k = 0;
}
}
public void Paint2(int k, int l)
{
if (Radio == "first")
{
glColor(Color.Green);
glBegin(GL_POLYGON); //1
glVertex2d(k + 5, l);//a
glVertex2d(k + 15, l);//b
glVertex2d(k + 20, l - 10);//i
glVertex2d(k, l - 10);//h
glEnd();
glBegin(GL_TRIANGLE_STRIP);
glColor(Color.Red);
glVertex2d(k + 15, l);
glVertex2d(k + 25, l);
glVertex2d(k + 20, l - 10);
glVertex2d(k + 15, l - 20);
glVertex2d(k + 25, l - 20);
glVertex2d(k + 20, l - 10);
glEnd();
glColor(Color.Green);
glBegin(GL_TRIANGLES);
glVertex2d(k + 25, l);
glVertex2d(k + 30, l - 10);
glVertex2d(k + 20, l - 10);
glEnd();
glColor(Color.Yellow);
glBegin(GL_TRIANGLES);
glVertex2d(k + 25, l - 20);
glVertex2d(k + 30, l - 10);
glVertex2d(k + 20, l - 10);
glEnd();
glColor(Color.Yellow);
glBegin(GL_POLYGON); //6
glVertex2d(k + 20, l - 10);//i
glVertex2d(k + 15, l - 20);//e
glVertex2d(k + 5, l - 20);//g
glVertex2d(k, l - 10);//h
glEnd();
}
else if (Radio == "second")
{
glColor(Color.Green);
glLineWidth(2);
glBegin(GL_LINE_LOOP);//1
glVertex2d(k, l - 10);//h
glVertex2d(k + 5, l);//a
glVertex2d(k + 15, l);//b
glVertex2d(k + 20, l - 10);//i
glEnd();
glColor(Color.Red);
glBegin(GL_LINE_LOOP);//2
glVertex2d(k + 15, l);//b
glVertex2d(k + 25, l);//c
glVertex2d(k + 20, l - 10);//i
glEnd();
glColor(Color.Green);
glBegin(GL_LINE_LOOP);//3
glVertex2d(k + 25, l);//c
glVertex2d(k + 30, l - 10);//d
glVertex2d(k + 20, l - 10);//i
glEnd();
glColor(Color.Yellow);
glBegin(GL_LINE_LOOP);//4
glVertex2d(k + 25, l - 20);//e
glVertex2d(k + 30, l - 10);//d
glVertex2d(k + 20, l - 10);//i
glEnd();
glColor(Color.Red);
glBegin(GL_LINE_LOOP);//5
glVertex2d(k + 25, l - 20);//e
glVertex2d(k + 15, l - 20);//f
glVertex2d(k + 20, l - 10);//i
glEnd();
glColor(Color.Yellow);
glBegin(GL_LINE_LOOP);//6
glVertex2d(k + 15, l - 20);//e
glVertex2d(k + 5, l - 20);//g
glVertex2d(k, l - 10);//h
glVertex2d(k + 20, l - 10);//i
glEnd();
}
else
{
glPointSize(4);
glColor(Color.Green);
glBegin(GL_POINTS);
glVertex2d(k + 5, l);//a
glVertex2d(k + 15, l);//b
glVertex2d(k + 30, l - 10);//d
glEnd();
glColor(Color.Red);
glBegin(GL_POINTS);
glVertex2d(k + 20, l - 10);//i
glVertex2d(k + 25, l);//c
glVertex2d(k + 15, l - 20);//f
glEnd();
glColor(Color.Yellow);
glBegin(GL_POINTS);
glVertex2d(k + 25, l - 20);//e
glVertex2d(k + 5, l - 20);//g
glVertex2d(k, l - 10);//h
glEnd();
}
}
}
}