ВВЕДЕНИЕ
Компьютерная графика - это область информатики, занимающаяся проблемами получения различных изображений (рисунков, чертежей, мультипликации) на компьютере. Работа с компьютерной графикой - одно из самых популярных направлений использования персонального компьютера, причем занимаются этой работой не только профессиональные художники и дизайнеры. Существуют несколько основных видов графики - двумерная, которая включает в себя фрактальную, растровую и векторную графику, и трехмерная, которая пользуется в настоящее время гораздо большей популярностью из-за возможности создавать более реалистичные и оригинальные объекты. Трёхмерная графика (3D, 3 Dimensions, русск. 3 измерения) - раздел компьютерной графики, совокупность приемов и инструментов (как программных, так и аппаратных), предназначенных для изображения объёмных объектов. Больше всего применяется для создания изображений на плоскости экрана или листа печатной продукции в архитектурной визуализации, кинематографе, телевидении, компьютерных играх, печатной продукции, а также в науке и промышленности.
Трёхмерное изображение на плоскости отличается от двумерного тем, что включает построение геометрической проекции трёхмерной модели сцены на плоскость (например, экран компьютера) с помощью специализированных программ.
Для получения трёхмерного изображения на плоскости требуются следующие шаги: - моделирование - создание трёхмерной математической модели сцены и объектов в ней. - рендеринг (визуализация) - построение проекции в соответствии с выбранной физической моделью.
вывод полученного изображения на устройство вывода - дисплей или принтер.
1. ОПИСАНИЕ ОБЪЕКТА МОДЕЛИРОВАНИЯ
Шахматы - настольная логическая игра специальными фигурами на 64-клеточной доске для двух соперников, сочетающая в себе элементы искусства (в части шахматной композиции), науки и спорта. Название берёт начало из персидского языка: шах и мат, что значит властитель (шах) умер. История шахмат насчитывает не менее полутора тысяч лет. Считается, что игра-прародитель, чатуранга, появилась в Индии не позже VI века нашей эры. По мере распространения игры на Арабский Восток, затем в Европу и Африку, правила менялись. В том виде, который игра имеет в настоящее время, она сформировалась к XV веку, окончательно правила были стандартизованы в XIX веке, когда стали систематически проводиться международные турниры.
Виды шахматных фигур и их назначение:
Король (Юникод: ♔♚) - главная шахматная фигура, хотя и не сильнейшая. Цель шахматной партии - объявить мат королю соперника.
Ферзь(перс. ferzin - визирь, советник; Юникод: ♕♛) - самая сильная шахматная фигура. Считается, что материальная ценность ферзя равна 8-9 пешкам. Таким образом он по силе превосходит ладью и лёгкую фигуру, уступает двум ладьям и примерно равен трём лёгким фигурам.
Ладья (Юникод ♖♜) - шахматная фигура. Она примерно равноценна 5 пешкам. Ладья может двигаться на любое число полей по горизонтали или по вертикали при условии, что на её пути нет фигур. Ладьи в начале партии занимают поля a1 и h1 (белые ладьи), a8 и h8 (чёрные ладьи).
Слон (иногда встречается название «офицер»)(Юникод ♗♝) - шахматная фигура. Слон примерно эквивалентен коню. Ближе к эндшпилю, если пешки на обеих сторонах доски, слон становится сильнее коня, но конь немного сильнее если пешки только на одной стороне.
Конь (Юникод ♘♞) - шахматная фигура, в начале партии располагающаяся на полях b1, g1 (белые кони) и b8, g8 (чёрные кони). По цене конь примерно равен слону или трём пешкам. Три коня примерно равны ферзю или двум ладьям. Ценность коня возрастает в закрытых позициях, где дальнобойность других фигур (ферзя, ладей и слонов) ограничена.
Пешка (Юникод: ♙♟) - основная единица измерения шахматного материала (в шахматах её не принято называть фигурой). В пешечном эквиваленте измеряют «вес» и других фигур (лёгкая фигура примерно эквивалентна трем пешкам, ладья - пяти). По Ф. Филидору пешка - «душа шахматной партии», структура пешечного расположения определяет стратегический рисунок партии. В эндшпиле роль пешек значительно возрастает, особенно далеко продвинутых (близких к полю превращения). Буквенное обозначение - п. (В шахматной нотации обычно используется только при записи положения фигур на диаграмме, а в процессе партии опускается
Внешний вид спортивных снарядов приведён на рисунке 1.
Рисунок 1: 1-Король 2-Ферзь 3-Слон 4-Конь 5-Ладья 6-Пешка
2. МАТЕМАТИЧЕСКОЕ И АЛГОРИТМИЧЕСКОЕ ОБЕСПЕЧЕНИЕ
2.1 Математическая модель
Трёхмерная графика оперирует с объектами в трёхмерном пространстве. Обычно результаты представляют собой плоскую картинку, проекцию. Трёхмерная компьютерная графика широко используется в кино, компьютерных играх.
В трёхмерной компьютерной графике все объекты обычно представляются как набор поверхностей или частиц. Минимальную поверхность называют полигоном. В качестве полигона обычно выбирают треугольники.
Всеми визуальными преобразованиями в 3D-графике управляют матрицы (см. также: аффинное преобразование в линейной алгебре). В компьютерной графике используется три вида матриц:
· матрица поворота
· матрица сдвига
· матрица масштабирования
Любой полигон можно представить в виде набора из координат его вершин. Так, у треугольника будет 3 вершины. Координаты каждой вершины представляют собой вектор (x, y, z). Умножив вектор на соответствующую матрицу, мы получим новый вектор. Сделав такое преобразование со всеми вершинами полигона, получим новый полигон, а преобразовав все полигоны, получим новый объект, повёрнутый/сдвинутый/масштабированный относительно исходного.
В разрабатываемой программе будем использовать ПГМ, написанную на языке Dev С++ .
Все математические действия производимые в программе будут происходить с помощью перемножения матриц смещения, масштабирования и вращения.
Смещение точки-вектора на заданную величину реализуется посредством
умножения ее координатной модели на матрицу вида:
где m - смещение координат точек относительно оси х,
n - смещение координат точек относительно оси у,
l - смещение координат точек относительно оси z.
Поворот точки-вектора на заданную величину, относительно определенной оси реализуется посредством умножения ее координатной модели на матрицу вида:
Матрицами вращения вокруг оси декартовой правой системы координат на угол α в трёхмерном пространстве являются:
· Вращение вокруг оси x:
· Вращение вокруг оси y:
· Вращение вокруг оси z:
В
программе будут использоваться матрицы поворота вокруг осей, а так же матрицы
смещения. Первоначально на необходимо сделать чтобы модель плавно двигалась
вокруг своей оси. Для этого возьмём матрицу вращения вокруг оси y:
Где α - это постепенно изменяющийся угол;
Для
того чтобы изображение можно было передвигать, добавим матрицу смещения:
Где Kx, Ky, Kz - соответствующее приращение к начальным значениям x,y,z для перемещения изображения на это расстояние.
Для визуализации ордена потребуется проводить для каждой точки в трёхмерной системе координат поворот и масштабирование в пространстве. Потребуется провести такие преобразования: a*A, a*B, a*C, a*D, где - а - точка-вектор, над которым требуется произвести действия, а A,B,C,D - матрицы поворотов и масштабирования.
Смещение точки-вектора на заданную величину реализуется посредством
умножения ее координатной модели на матрицу вида:
где m - смещение координат точек относительно оси х,
n - смещение координат точек относительно оси у,
l - смещение координат точек относительно оси z.
Матрицы
поворота вокруг осей x, y, z на угол a
|
Rx |
Ry |
Rz |
|
|
|
|
Для поворота тела вокруг точки (m, n, k) на угол a используется следующий алгоритм:
) перенос тела на вектор A(-m, -n, -k) для совмещения точки (m, n, k) с началом координат;
) поворот тела на угол a;
) перенос тела на вектор A'(m, n, k) для возвращения его в исходное положение. Представим тело набором точек (вершин тела) и выполним операции 1) - 3) с каждой из них;
В матричной форме это представляется следующим образом (R(a) - матрица
поворота вокруг оси x, y или z)
Для масштабирования всего изображения понадобится матрица общего полного
масштабирования, которая имеет следующий вид
где S-постоянная масштабирования.
Для задания цвета рабочей области, используется цветовая модель RGB. В основе основных цветов данной модели используется красный (R), зелёный (G) и синий (B). Все остальные цвета и их оттенки, получаемые в рамках использования модели получается в результате смешивания определённого количества перечисленных базовых компонентов. На основе первого закона планиметрии, рассматриваемая модель может быть представлена следующим уравнением:
где
,
,
- коэффициенты, характеризующие кол-во базовых
компонентов.
2.2 Алгоритм визуализации спортивного зала
Алгоритм визуализации спортивного зала следующий:
Каждый из этих этапов будут подробно рассмотрены в 4 разделе.
2.3 Блок-схема алгоритма
Основные понятия блок - схемы :
Терминатор (овал) - Элемент отображает вход из внешней среды или выход из нее.
Процесс (прямоугольник) - Выполнение одной или нескольких операций, обработка данных любого вида.
Решение (ромб) - Отображает решение или функцию переключательного типа с одним входом и двумя или более альтернативными выходами, из которых только один может быть выбран после вычисления условий, определенных внутри этого элемента.
Постоим блок-схему построения изображения:
3. ПРОГРАМНОЕ И ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ.
3.1 Выбор и обоснование языка программирования
Для реализации поставленной задачи и разработки программного продукта я решил использовать Dev C++ 5. Вообще Dev C++- Dev-C++ - свободная интегрированная среда разработки приложений для языков программирования C/C++. В дистрибутив входит компилятор MinGW. Сам Dev-C++ написан на Delphi. Распространяется согласно GPL.
Конечно, существует множество средств разработки, каждый любит больше свою, к которой привык. Некоторые умудряются пользоваться несколькими средами и языками программирования. Однако, можно дать некоторые объяснения выгодной позиции Dev С++.
Достоинства Dev С++:
) графический интерфейс;
) русскоязычное меню ;
) встроенный отладчик GDB;
) возможность создавать консольные и графические программы.
3.2 Выбор и обоснование среды
визуального проектирования
В качестве среды визуализации модели для реализации поставленной задачи была выбрана библиотека OpenGL.переводится как Открытая Графическая Библиотека (Open Graphics Library). Программы, использующие OpenGL, гарантируют одинаковый визуальный результат во многих операционных системах - на персональных компьютерах, на рабочих станциях и на суперкомпьютерах.
С точки зрения программиста, OpenGL - это программный интерфейс для графических устройств (например, графических ускорителей). Он включает в себя около 150 различных функций, с помощью которых программист может задавать свойства различных трехмерных и двумерных объектов и выполнять их визуализацию (рендеринг). Т.е. в программе надо задать местоположение объектов в трехмерном пространстве, определить другие параметры (поворот, растяжение, ...), задать свойства объектов (цвет, текстура, материал, ...), положение наблюдателя, а затем библиотека OpenGL выполнит генерацию двумерной проекции этой трехмерной сцены
Возможности OpenGL, предоставляемые программисту, можно разделить на несколько групп:
геометрические и растровые примитивы. На основе этих примитивов строятся все остальные объекты. Геометрические примитивы - это точки, отрезки и многоугольники. Растровыми примитивами являются битовые массивы (bitmap) и изображения (image).
сплайны. Сплайны применяются для построения гладких кривых по опорным точкам.
видовые и модельные преобразования. Эти преобразования позволяют задавать пространственное расположение объектов, изменять форму объектов и задавать положение камеры, для которой OpenGL строит результирующее проекционное изображение.
работа с цветом. Для операций с цветом в OpenGL есть режим RGBA (красный- зелёный-синий-прозрачность) и индексный режим (цвет задается порядковым но- мером в палитре).
удаление невидимых линий и поверхностей.
двойная буферизация. В OpenGL доступна и одинарная, и двойная буферизация. Двойная буферизация применяется для устранения мерцания при мультипликации. При этом изображение каждого кадра сначала рисуется в невидимом буфере, а на экран кадр копируется только после того, как полностью нарисован.
наложение текстуры. Текстуры упрощают создание реалистичных сцен. Если на объект, например, сферу, наложить текстуру (некоторое изображение), то объект будет выглядеть иначе (например, сфера будет выглядеть как разноцветный мячик).
cглаживание. Автоматическое сглаживание компенсирует ступенчатость, свойственную растровым дисплеям. При сглаживании отрезков OpenGL изменяет интенсивность и цвет пикселей так, что эти отрезки отображаются на экране без "зигзагов".
освещение. Указание расположения, интенсивности и цвета источников света.
специальные эффекты. Например, туман, дым, прозрачность объектов. Эти
средства позволяют сделать сцены более реалистичными.
3.3 Минимальные требования к технической базе
ü Платформа Windows XP/Vista/7
ü Процессор c тактовой частотой 1000 МГц
ü Память: 512 Мб (рекомендуется 1Гб)