Программный продукт "Графический редактор учебно-методических материалов"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?зволяет узнать принадлежит ли точка, указываемая пользователем, примитиву. При этом если точка принадлежит примитиву, производится переприсвоение значения цвета заливки примитива. В противном случае изменение цвета заливки не будет применено и цвет останется прежним.
Закрытые методы.() - особенностью данного метода от метода, определенного в классе Линия, является необходимость проверки номера точки, так как для задания первого отрезка ломаной линии необходимо задавать две точки, а каждый следующий отрезок требует ввода только одной точки. При этом храниться только необходимое количество точек для ломаной линии, т.е. 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 рубрикатор по предметам рубрикатор по типам работ пользовательское соглашение