/* NAME: Kirill Vasil'evich Timofeev, 322
 * ASGN: N1
 */
/**
@mainpage
В конструкторе класса MainWindow cначала создается каркас окна при помощи средств программирования QT,
затем задаются элементы классов Mater, Sphere, Thor, Light и начальное положение
камеры(CamPos).
Затем создается массив цветов для каждого пиксела и заполняется при помощи алгоритма рей-трейсинга:
создается луч(Ray), затем ищем расстояние до ближайшего объекта и продвигаемся на это расстояние по
направлению луча, снова считаем расстояние и т.д... до момента, когда расстояние от нынешней точки
не стало больше 30, либо интенсивность цвета луча не станет равной 0;
одновременно с этим, считаем влияние источников света на цвет объектов(считаем расстояние и по
формуле вычисляем цвет), затем "обрезаем цвета"(если значение цвета не принадлежит [0; 255]).
Создаем меню, статус-бар;
Задаем соответствия нажатий клавиш, клавиш мыши и действий приложения.
Также реализованы антиалиасинг и сериализация.
Сериализация:
При нажатии на соответствующее меню вызывается одна из 4-х функций, выставляющих параметры сериализации
(чтение/запись, XML/Bin),затем вызывается основная функция сериализации, которая последовательно обрабатывает
экран, положение камеры, 2 сферы, 3 тора и 2 источника света... или же выдается ошибка
*/

#include <QApplication>

#include "mainwindow.h"
/**
@function
Главная функуия, в которой создается объект типа MainWindow и выводится на экран при помощи объекта типа QApplication
@param  argc – количество элементов коммандной строки
@param  argv – элементы коммандной строки
@return флаг работы программы (0 - все хорошо, остальное - ошибки)
*/
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    MainWindow mainWin;
    mainWin.setWindowTitle("RayTracing");
    mainWin.show();
    return app.exec();
}
