Формирование изображения трехмерной поверхности

Разработать программу, используя язык программирования C++, позволяющую:

1. Считать из исходного файла .dat (любой) карту глубины объекта заданной размерности.

2. Сформировать с произвольным положением источника света изображение объекта

в формате Canvas (попиксельно отобразить).

3. Модели отражения поверхности: Модель отражения Ламберта, модель отражения Фонга, Модель отражения Торенса-Сперроу

4. Осуществить визуализацию с возможностью формирования

последовательности кадров (или анимации) облета объекта источником света.

5. Осуществить возможность изменения положения точки

наблюдения относительно объекта без необходимости пересборки проекта.

Карта глубины представляет собой записанный в бинарный файл массив типа

double, размерностью 64 бита на каждое число. Массив записан построчно, размерность

массива Width*Height, Height строк по Width элементов. В файл записано: Height, Width,

массив данных.

Значения отсчетов рассматриваемого объекта отличны от нуля. Ноль принимается

за область, несоответствующую объекту.

Освещение принимается за параллельные (однонаправленные) лучи одинаковой

интенсивности, размер источника света не ограничен.

Освещение задается направлением L[Lx Ly Lz]. Остальные параметры (цвет,

интенсивность) выбираются по усмотрению автора работы.