В общем, нужно отобразить простую геометрическую фигуру в пределах нормализованного объема видимости. Нужно нарисовать пятиугольник с двумя диагоналями, используя геометрические примитивы: треугольник (GL_TRIANGLES) и отрезок (GL_LINES), а также использовать: Команды инициализации: auxInitWindowPosition, auxInitWindowSize, glutInitWindowPosition, glutInitWindowSize. Команды настройки цветов фона и изображения: glClearColor, glClear, glColor. Команды рисования геометрических примитивов: glVertex, glBegin – glEnd. Команды задания стиля вычерчивания: glLineWidth, glEnable(GL_LINE_SMOOTH), glEnable(GL_POINT_SMOOTH).
{=======================Рисование окна=======================} procedure TForm1.FormPaint(Sender: TObject); // форма рисования const Color:array[1..3] of real=(0.8,0.8,0.8); // набор цветов red_color: array[1..3] of GLfloat=(1,0,0); green_color: array[1..3] of GLfloat=(0,1,0); blue_color: array[1..3] of GLfloat=(0,0,1); black_color: array[1..3] of GLfloat=(0,0,0); begin
wglMakeCurrent(Canvas.Handle, hrc); // прорисовка поля glClearColor(0.9,0.6,0.2,1.0); // цвет фона glClear(GL_COLOR_BUFFER_BIT); // очистка буфера цвета glColor3fv(@Color); glLineWidth(5); // толщина линий glEnable (GL_POINT_SMOOTH); // сглаживание точек glEnable (GL_LINE_SMOOTH); // сглаживание линий
glPolygonMode(GL_Front_and_Back, GL_LINE); glBegin (GL_TRIANGLES); {===== рисуем треугольник слева =====} glColor3f (0.3,0.4,0.7); // цвет линий треугольника glVertex3f (-0.4, 0, 0); // средняя точка, координаты по x, y, z glVertex3f (0, 0.4, 0); // верхняя точка, координаты по x, y, z glVertex3f (-0.3, -0.4, 0); // нижняя точка, координаты по x, y, z {===== рисуем треугольник справа =====} glColor3f (0.3,0.4,0.7); // цвет линий треугольника glVertex3f (0.4, 0, 0); // средняя точка, координаты по x, y, z glVertex3f (0, 0.4, 0); // верхняя точка, координаты по x, y, z glVertex3f (0.3, -0.4, 0); // нижняя точка, координаты по x, y, z {===== рисуем треугольник в центре =====} glColor3f (0.3,0.4,0.7); // цвет линий треугольника glVertex3f (-0.3, -0.4, 0); // средняя точка, координаты по x, y, z glVertex3f (0, 0.4, 0); // верхняя точка, координаты по x, y, z glVertex3f (0.3, -0.4, 0); // нижняя точка, координаты по x, y, z glEnd;
glBegin (GL_LINES); glColor3f (0.8,0.2,0.6); // цвет линии glVertex3f (-0.3, -0.4, 0); // координаты нижней линии по x, y, z glVertex3f (0, 0.4, 0); // координаты верхней линии по x, y, z glColor3f (0.8,0.2,0.6); // цвет линии glVertex3f (0.3, -0.4, 0); // координаты нижней линии по x, y, z glVertex3f (0, 0.4, 0); // координаты верхней линии по x, y, z glEnd;
{==================Конец работы приложения==================} procedure TForm1.FormDestroy(Sender: TObject); begin wglDeleteContext(hrc); end;
end.
Ещё в моём задании указывалось: Задать координату z одной из вершин равной +0.5, затем -0.5. Объяснить наблюдаемый эффект. Задать координату z одной из вершин равной +5, затем -5. Объяснить наблюдаемый эффект.
Помогите, пожалуйста, с выше заданным мною вопросом - т.е. помогите сформулировать ответ.