OpenGL + Delphi. Вывести массив на экран.

Виталий15 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
17.05.2010

Необходимо разработать программу для вывода на экран массива точек kubik.

Точка = record

Visible:Boolean;

Color:byte;

End;

Kubik : array [0…maxz, 0... maxy, 0…maxx] of точка;

Последовательность координат (z,y,x).

По каждой оси есть шаг dx (dy, dz) и стартовое значение stx (sty, stz), типа real. Считается, что координаты текущей точки равны (stx + x * dx; sty + y * dy; stz + z * dz).

Составляющие RGB каждого цвета хранятся в массиве и сопоставляются с полем color.

Есть ссылка на объект, на котором можно по рисовать (форма, созданная конструктором). Надо написать программу, которая бы выводила через OpenGL массив kubik на экран. Режимов вывода должно быть 2:

1.Кубический. В виде набора кубиков, visible – виден кубик или нет, color – цвет этого кубика. И так весь массив. Между кубиками оставить маленький зазорчик.

2.Сеточный. Точка связана с 6 соседями прямыми. Если точка не видна, то эти связи и сама точка не отображаются. Если видна то точка отображается, а связи есть при условии, что сосед по связи тоже виден.

Сцена должна быть масштабирована на всю сцену, но не быть больше и не обрезаться при выводе (с учетом прокрутки). Сцену можно вращать мышью (щелчек и сцена начинает вращаться за движениями мыши) и кнопкам (на экране поверх сцены и клавиатуре).

Так же должны отображаться оси координат в районе нуля, но не ноль (чуть отступить, что бы не сливалось). Ось должна быть с рисками (в абсолютных координатах) и заканчиваться стрелочкой. Интервалы рисок должны быть круглыми величинами (хотя бы постараться). Так же ось должна быть подписана строкой с размерностью, заданной отдельно (например: ”мм”). Риски так же подписываются, но что бы не сливалось (обязательно подписать ноль-точку). Надписи должны быть на рус языке.

Освещение должно работать, так что бы можно было четко посмотреть на то, что построилось и вращаться, так что бы было видно. Свет должен давать полутона, в результате кубики не должны сливаться.

Писать на D7, без доп. компонентов (OpenGL + glut если надо), форму создавать конструктором, комментарии к исходнику писать обязательно.

Заявки фрилансеров