Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Разработать программу объектно-ориентированного графического редактора, обеспечивающего выполнение следующих основных функций:
- выбор, размещение на экране и визуализация примитивов из заданного набора;
- синтез более сложных фигур с помощью теоретико-множественных операций (ТМО) как над примитивами, так и над ранее синтезированными фигурами;
- выделение любого объекта, выведенного на экран, и выполнение над ним любой последовательности геометрических преобразований из заданного набора в интерактивном режиме;
- выделение любого объекта на экране и его удаление.
Уровень сложности синтезируемых фигур по числу используемых для этого ТМО не должен ограничиваться. Не должно быть также ограничений на количество примитивов любого вида или сложных фигур, выводимых на экран. При выполнении ТМО объекты – операнды данной операции следует удалять из списка самостоятельных объектов, а их изображения – стирать с экрана.
Любые геометрические преобразования нужно выполнять в однородных координатах в матричной форме и применять ко всем видам объектов.
Геометрические преобразования над каким-либо объектом не должны приводить к стиранию изображения или другим искажениям остальных объектов.
Программа должна располагать общепринятыми элементами интерфейса: системным и контекстными меню, инструментальными панелями, другими элементами диалога, системой помощи и подсказок по всем основным функциям программы. Предусмотреть диалоговые средства для выбора цвета рисования.
Программа должна быть рассчитана на работу в операционной системе Windows XPи выше.
В табл. 2.1 приведен перечень примитивов, их внешнего вида в исходном состоянии и обозначений. Все приведенные в табл. 2.1 примитивы, кроме кривых, – закрашиваемые многоугольники.
Для расчета координат вершин правильных многоугольников и звезд, а также правильного креста в исходном состоянии в программе необходимо разработать соответствующие процедуры. Координаты вершин таких фигур, как треугольники, прямоугольник, ромб, параллелограмм, равнобедренная трапеция, также следует рассчитывать, задав такие параметры, как высота и ширина. Для расчета вершин параллелограмма и равнобедренной трапеции дополнительно следует задать один из углов.
Таблица 2.1
Примитивы | Вид | Обозначение |
Кривая Безье | BZ | |
Кривая Эрмита | ER | |
Равнобедренный треугольник | Tgr | |
Прямоугольный треугольник | Tgp | |
Ромб | Romb | |
Параллелограмм | Prlg | |
Равнобедренная трапеция | Trp | |
Произвольный n -угольник, n <= 20 | FPg | |
Правильный n -угольник, n <= 20 | Pgn | |
Правильная n -конечная звезда, n <= 20 | Zv | |
Стрелка 1 | Str1 | |
Стрелка 2 | Str2 | |
Стрелка 3 | Str3 | |
Флаг | Flag | |
Правильный крест | Kr | |
Уголок 1 | Ugl1 | |
Уголок 2 | Ugl2 | |
Уголок 3 | Ugl3 |
Вершины таких фигур, как стрелки, флаг, уголки можно либо также рассчитывать на основании высоты и ширины, выбрав какие-либо пропорции, либо их можно задать в константах программы по чертежу фигуры в исходном состоянии.
Пример алгоритма для задания координат верши трапеции на основании координат (x 1, y 1) и (x 2, y 2) диагонали прямоугольника, заданного мышью (рис. 2.1), приведен ниже.
Рис. 2.1
P[1].x = x2; P[1].y = y2;
P[2].x = x1; P[2].y = y2;
dx = (x2 – x1)/4;
P[1].x = x1 + dx; P[1].y = y1;
P[1].x = x2 – dx; P[1].y = y1;
В табл. 2.2 перечислены виды геометрических преобразований и их обозначения.
Таблица 2.2
Геометрические преобразования | Обозначение |
Поворот вокруг заданного центра на произвольный угол | Rс |
Поворот вокруг заданного центра на угол 30о | Rс30 |
Поворот вокруг центра фигуры на произвольный угол | Rf |
Поворот вокруг центра фигуры на угол 60о | Rf60 |
Масштабирование по оси X относительно заданного центра | Sxc |
Масштабирование по оси X относительно центра фигуры | Sxf |
Масштабирование по оси Y относительно заданного центра | Syc |
Масштабирование по оси Y относительно центра фигуры | Syf |
Пропорциональное масштабирование относительно заданного центра | Sxyc |
Пропорциональное масштабирование относительно центра фигуры | Sxyf |
Зеркальное отражение относительно заданного центра | SPc |
Зеркальное отражение относительно центра фигуры | SPf |
Зеркальное отражение относительно вертикальной прямой | SV |
Зеркальное отражение относительно горизонтальной прямой | SH |
Зеркальное отражение относительно прямой общего положения | SL |
Под заданным центром подразумевается любая точка области вывода на экране, указанная с помощью мыши, которую в дальнейшем следует использовать как центр преобразования. До окончания преобразования центр нужно показывать каким-либо условным обозначением, например, в виде перекрестья (рис. 2.2).
Рис. 2.2
В качестве центра правильных многоугольников и звезд следует использовать центр описанной окружности. За центр остальных фигур может быть взят центр прямоугольника, в который вписывается преобразуемый объект. Методика расчета центра фигуры должна быть разработана самостоятельно.
Вертикальная, горизонтальная или прямая общего положения для соответствующих видов зеркального отражения должны строиться на экране интерактивно и автоматически стираться с экрана после окончания преобразования.
Дата публикования: 2015-04-07; Прочитано: 361 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!