Программный продукт "Графический редактор учебно-методических материалов"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?зволяет узнать принадлежит ли точка, указываемая пользователем, примитиву. При этом если точка принадлежит примитиву, производится переприсвоение значения цвета заливки примитива. В противном случае изменение цвета заливки не будет применено и цвет останется прежним.

Закрытые методы.() - особенностью данного метода от метода, определенного в классе Линия, является необходимость проверки номера точки, так как для задания первого отрезка ломаной линии необходимо задавать две точки, а каждый следующий отрезок требует ввода только одной точки. При этом храниться только необходимое количество точек для ломаной линии, т.е. N+1 точек, где N- число отрезков ломаной линии. Выделение такого метода обусловлено необходимостью создания более наглядного кода, для

дальнейшего сопровождения программы.

Для более подробного описания процессов взаимодействия членов данного класса в Приложении В приводится Диаграмма последовательностей вызовов методов класса Ломаная линия.

3.3.1.4 Класс Вектор

Класс Вектор - позволяет построить на основе ломаной линии совокупность векторов. Основными членами данного класса являются ломаная линия, и массив точек для рисования стрелки вектора. Данный класс является наследником класса Примитив, а также в качестве своих членов использует классы Ломаная линия и Точка. В целом для данного класса характерны большинство методов описанных ранее, однако некоторые из них имеют характерные для данного класса отличия. Рассмотрим более подробно свойства и метода данного класса.

Открытые свойства.

vector: Polyline - член класса является экземпляром класса Ломаная линия. И позволяет не останавливаться подробно на создании и рисовании ломаной линии, лежащей в основе вектора. Отличие вектора от ломаной линии в том, что необходимо рисовать стрелки для указания направления вектора.

Arrow[4]: Point - временное хранилище точек для каждой стрелки вектора. Далее будет описана процедура заполнения точками данного массива, а также процедура отрисовки стрелки.

typeArrow: byte - хранит значение типа стрелки. В рамках проекта было реализовано два вида: в качестве двух линий и в качестве треугольника (см. рис. 3.2.).

Рисунок 3.2. Допустимые типы стрелок вектора.

Открытые методы

Draw() - позволяет нарисовать вектор на экране. В ходе рисования выполняется рад действий: установка параметров рисования (цвета и толщины); передача параметров выделения через член класса vector в класс Ломаная линия; отрисовка ломаной линии через член класса vector; цикл для рисования стрелки в конце каждого отрезка. В данном цикле выполняется переiет значений массива Arrow, т.к. в зависимости от начальной и конечной точки изменяется позиция точек стрелки, приводя при этом к изменению наклона стрелки. Без этой процедуры корректная отрисовка точек стрелки не будет производиться. После вычисления значений точек стрелки производится её рисование в соответствии с установленным типом стрелки.

onMouseOver(), onMouseMove(), onMouseDown(), onRemove(), isPointInPoligon() - выполняют тот же набор действий что и одноименные методы других классов. Однако отличие данных методов состоит в более простом обработке, т.к. большинство методов вызывается членом vector класса Вектор. Так, например, для перемещения вектора на экране необходимо изменить позицию заданной ломаной линии путем вызова функции onRemove() к открытому свойству vector;

recalcPoints() - позволяет изменить положение точек вектора на экране

при изменении размеров сцены. Особенностью данного метода также является необходимость вызова функции recalcPoints() класса Ломаная линия для члена класса vector;

changeTypeArrow() - метод принимает в качестве параметра целочисленное значение. Если целое значение равно 1, то свойству typeArrow присваивается значение константы GL_LINES, позволяющее рисовать стрелку в виде двух линий. В противном случае устанавливается значение константы GL_TRIANGLES из библиотеки OpenGL, позволяющее нарисовать стрелку вектора в виде треугольника;

getTypeArrow() - возвращает целочисленное значение 1 или 2, характеризующее установленный тип стрелки вектора. Данная информация в дальнейшем используется для сохранения параметров вектора в файл.

Закрытые методы. () - позволяет проiитать наклон стрелки и установить значения её точек в массив Arrow. Вычисление значений точек производится исходя из формул поворота и начального состояния стрелки. Данная функция учитывает и пограничные случаи, например, рисование стрелки в вертикальной (сверху вниз, снизу вверх) или горизонтальной позиции (слева направо, справа налево).

Формула поворота, используемая для вычисления значений точки, в случаях отличных от описанного выше, имеет вид:

,(3)

где X,Y - новые координаты точки, Xc, Yc -центр вращения точки, X1, Y1 - старые координаты точки, j - угол поворота точки, который расiитывается предварительно, используя координаты начала и конца отрезка вектора по формуле:

,(4)

где i- номер точки конца вектора. Формула применяется для всех точек кроме первой.

Для более полного понимания процессов, происходящих при обращении основной программы к данному классу, построим диаграмму последовательностей вызовов функций характерных для данного класса (Приложение Г).

3.3.1.5 Класс Безье

Класс Кривая Безье - позволяет рисовать совокупность сплайнов третьего порядка. Задание первой кривой производится посредством ввода четырех точек: двух о

Copyright © 2008-2014 geum.ru   рубрикатор по предметам  рубрикатор по типам работ  пользовательское соглашение