Программный продукт "Графический редактор учебно-методических материалов"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
порных и двух управляющих. Каждый последующий сплайн задается только тремя точками. Для задания возможности редактирования кривой Безье, опорные и управляющие точки заданы массивом, для подiета количества заданных точек используется специальный член класса. Рассмотрим основные функции и свойства, определенные в данном классе.
Открытые свойства.[1000]:Point - массив экземпляров класса Точка позволяет хранить информацию о точках кривой третьего порядка. Отличительной особенностью данного массива от других классов состоит в том, что каждая вторая и четвертая точка является управляющей и позволяет изменять изгиб данного примитива;: int - позволяет сохранить количество точек линии третьего порядка. В общем случае количество точек кратно четырем.
Открытые методы.
Draw() - отличается от одноименного метода, описанного выше, тем, что для рисования каждой отдельной кривой Безье выделяются четыре точки. По данным точкам, используя стандартные функции создания сложных объектов, так называемых итераторов, производится вычисление промежуточных точек линии Безье. Полученные в результате вычисления точки сохраняются в специальном объекте карта точек, являющимся массивом, определенным в библиотеке OpenGL. Используя стандартные процедуры графической библиотеки, можно произвести рисование сегментов кривой Безье, по полученным точкам используя функцию glEvalCoord1f. В качестве значений функция принимает значение элемента массива, в котором хранятся промежуточные точки.
Таким образом, последовательное обращение к четверкам точек можно произвести рисование всех линий Безье, из которых состоит кривая третьего порядка.
onMouseOver(), onMouseMove(), onMouseDown(), onRemove(), isPointInPoligon(), isSelected(), recalcPoints(), getNumPoint(), isClosedPrim(), GetX(int i), GetY(int i), UndoPoint() - выполняют тот же набор действий, что и одноименные методы других классов (кроме класса Ломаная линия). Особенностью метода isPointInPoligon является необходимость проверки попадания точки в полигон. Сложность данной процедуры состоит в том, что объект является достаточно сложным и невозможно узнать положение промежуточных точек, так как библиотека OpenGL не предоставляет средств доступа к данному массиву. По этой причине для реализации в дальнейшем заливки принято решение о том, что если пользователь нажимает кнопку мыши в области, характеризующей выделение, то заливка будет применяться, в противном случае заливка области не будет осуществляться. Как и для остальных примитивов, заливка области применима только для замкнутых фигур.
Закрытые методы.
В целом основная масса закрытых методов данного класса носит тот же функционал, что и закрытые методы, описанных выше классов, однако их выделение в данном классе позволяет акцентировать внимание на особенностях задания точек кривой третьего порядка и проверку тех или иных свойств в
соответствии с объявленными членами класса.
Особенностью закрытого метода setCoordPoint() состоит в том, что для задания первой части кривой третьего порядка необходимо задание четырех точек, а каждой последующей только трех. Кроме того метод позволяет переносить значения еще не заданных точек в соответствии с последней заданной. Так, например, если пользователь задал одну контрольную и одну управляющую точку и ищет позицию для задания второй контрольной точки, то значения курсора при перемещении изменяется, и данные значения устанавливаются в те точки, которые ещё не заданы. Такой подход позволяет рисовать линию третьего порядка достаточно наглядно, так как пользователь, перемещая указатель мыши, видит, к каким изменениям кривой приводят данные перемещения.
В целом данная характеристика характерна для создания любых объектов на основе точек и позволяет достигать большей производительности при использовании программного продукта в целом.
3.3.1.6 Класс Окружность
Класс предназначен для рисования окружностей различных радиусов. Пользователь при выборе инструмента Окружность должен задать пару точек: центр окружности и радиус. Центр окружности и её радиус вводится при помощи нажатия левой кнопки мыши. Данный инструмент позволяет создавать выколотые точки с различной заливкой, а также является общим классом, для описанных далее классов Два множества и Три множества. Данный класс наследуется от класса Примитив, что позволяет определить абстрактные методы и хранить экземпляры класса в одном массиве, наряду с другими классами описанными выше.
Рассмотрим основные свойства и методы данного класса.
Открытые свойства.: POINT - является постоянным и не может быть изменено только программно. Так как в библиотеке OpenGL не существует возможностей создания окружностей, то для её реализации необходимо проiитать точки расположенные на окружности, и соединить их используя ломаную линию. Данное свойство позволяет сохранить информацию о точках данной ломаной линии.
centerP: Point - хранит информацию о центре окружности, задается пользователем путем нажатия мыши в начале создания данного графического примитива.
pointR: Point - хранит информацию о точке которую пользователь
выбрал при указании радиуса. Так как после задания центральной точки пользователь может перемещать мышь и видеть, какую окружность он получает, то необходимо при таких манипуляциях расiитывать истинный радиус окружности по формуле:
,(5)
где Xc, Yc - координаты центра окружности, Xm, Ym - текущие координаты мыши.
Информации о данной точке, пользователю в дальнейшем поз
Copyright © 2008-2014 geum.ru рубрикатор по предметам рубрикатор по типам работ пользовательское соглашение