GMSAPR
.pdfФедеральное агентство по образованию Государственное образовательное учреждение высшего
профессионального образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра компьютерных систем в управлении и проектировании (КСУП)
А. Ю. Поляков, С. Ю. Дорофеев
Геометрическое моделирование в системах автоматизированного проектирования
Учебно-методическое пособие
Томск – 2007
Рецензенты:
Поляков А.Ю., Дорофеев С.Ю.
Геометрическое моделирование в системах автоматизированного проектирования: учеб. пособие / Под общей редакцией С.Ю. Дорофеева. – Томск : Томск. гос. ун-т систем упр. и радиоэлектроники, 2007. – 215 с.
© Поляков А. Ю., Дорофеев С. Ю., 2007 © Том. гос. ун-т систем упр. и
радиоэлектроники, 2007
|
3 |
Введение....................................................................................................................... |
6 |
1 Что такое геометрическое моделирование и системы автоматизированного
проектирования?.......................................................................................................... |
9 |
||
1.1 |
Истоки геометрического моделирования и САПР................................... |
9 |
|
1.2 |
2D моделирование ..................................................................................... |
10 |
|
1.3 |
3D моделирование ..................................................................................... |
11 |
|
1.4 |
Заключение................................................................................................. |
12 |
|
2 Обзор инструментальных средств..................................................................... |
13 |
||
2.1 |
Особенности программирования под ОС Windows ............................... |
14 |
|
|
2.1.1 Память, многозадачность и файлы, проецируемые в память........ |
14 |
|
|
2.1.2 |
64-разрядная архитектура ................................................................. |
18 |
|
2.1.3 |
Структура Windows-приложения..................................................... |
21 |
2.2 |
Библиотека классов Microsoft Foundation Class Library......................... |
26 |
|
2.3 |
Microsoft Visual C++ 2005 .NET ............................................................... |
27 |
|
2.4 |
.NET Framework ......................................................................................... |
31 |
|
2.5 |
C# - новый уровень языка C++................................................................. |
39 |
|
2.6 |
GDI и GDI+................................................................................................. |
42 |
|
2.7 |
DirectX и OpenGL....................................................................................... |
47 |
|
2.8 |
Заключение................................................................................................. |
54 |
|
3 Основные понятия компьютерной графики..................................................... |
55 |
||
3.1 |
Цели и задачи компьютерной графики.................................................... |
55 |
|
3.2 |
Основные понятия и определения ........................................................... |
57 |
|
|
3.2.1 |
Графический формат ......................................................................... |
57 |
|
3.2.2 |
Пикселы и цвет................................................................................... |
60 |
|
3.2.3 |
Цветовые модели................................................................................ |
62 |
|
3.2.4 |
Палитры цветов.................................................................................. |
64 |
|
3.2.5 |
Элементы графического файла......................................................... |
64 |
|
3.2.6 |
Преобразование форматов ................................................................ |
65 |
|
3.2.7 |
Сжатие данных................................................................................... |
66 |
3.3 |
Заключение................................................................................................. |
69 |
4 |
|
|
4 Работа с растровыми файлами формата BMP .................................................. |
70 |
|
4.1 |
Общее описание формата BMP ................................................................ |
70 |
4.2 |
Структура BMP-файла............................................................................... |
71 |
4.3 |
Создание многодокументного приложения............................................ |
77 |
4.4 |
Класс CRaster для работы с растровыми изображениями..................... |
79 |
4.5Модификация класса документа для обеспечения работы с
|
изображениями........................................................................................... |
92 |
4.6 |
Заключение................................................................................................. |
94 |
5 Двойная буферизация и вывод изображения................................................... |
96 |
|
5.1 |
Реализация виртуального экрана в программе BMViewer.................... |
96 |
5.2 |
Модификация класса облика.................................................................... |
98 |
5.3 |
Заключение............................................................................................... |
107 |
6 Редактирование изображений.......................................................................... |
108 |
|
6.1 |
Преобразования........................................................................................ |
108 |
6.2 |
Таблица преобразования......................................................................... |
110 |
6.3 |
Гистограмма яркости изображения ....................................................... |
111 |
6.4 |
Графические фильтры............................................................................. |
119 |
|
6.4.1 Программная схема выполнения преобразований. ...................... |
119 |
|
6.4.2 Класс «Фильтр»................................................................................ |
127 |
6.5Использование гистограммы яркости для повышения контрастности
|
изображения. Фильтр «Гистограмма» ................................................... |
133 |
6.6 |
Фильтр «Яркость/Контраст»................................................................... |
140 |
6.7 |
Фильтр «Инверсия цветов»..................................................................... |
147 |
6.8 |
Фильтр «Рельеф» ..................................................................................... |
148 |
6.9 |
Фильтр «Размытие» ................................................................................. |
151 |
6.10 |
Фильтр «Контур» ..................................................................................... |
152 |
6.11 |
Фильтр «Четкость» .................................................................................. |
154 |
Результат применения фильтра показан на рис. 23. ............................................ |
156 |
|
6.12 |
Фильтр «Удаление шума»....................................................................... |
157 |
6.13 |
Применение фильтров............................................................................. |
168 |
|
|
|
5 |
6.14 |
Вывод изображений на печать ............................................................... |
169 |
|
6.15 |
Заключение............................................................................................... |
172 |
|
7 Создание приложения с использованием библиотек OpenGL ..................... |
174 |
||
7.1 |
Общая схема использования библиотеки OpenGL............................... |
174 |
|
7.2 |
Модификация класса облика.................................................................. |
176 |
|
7.2.1 |
Модификация класса документа.................................................... |
185 |
|
7.2.2 |
Модификация класса приложения................................................. |
185 |
|
7.3 |
Заключение............................................................................................... |
186 |
|
Приложение 1. Основные понятия и принципы объектно-ориентированного |
|
||
программирования .................................................................................................. |
187 |
Приложение 2. Основные рекомендации по проектированию пользовательских
интерфейсов............................................................................................................. |
193 |
8 Методические указания к выполнениию лабораторных работ.................... |
196 |
8.1Задание на лабораторную работу №1 — Изучение программы
BMViewer.................................................................................................. |
196 |
8.2Задание на лабораторную работу №2 — простейшие растровые
преобразования ........................................................................................ |
197 |
8.3 Задание на лабораторную работу №3 —преобразования №2............. |
198 |
8.4Задание на лабораторную работу №4 — работа с OpenGL в программе
|
FirstGL....................................................................................................... |
199 |
|
9 Курсовое проектирование................................................................................ |
201 |
||
9.1 |
Темы курсовых работ.............................................................................. |
201 |
|
9.2 |
Условия выполнения курсового проекта .............................................. |
203 |
|
|
9.2.1 Требования к техническому заданию............................................ |
204 |
|
|
9.2.2 |
Проект системы................................................................................ |
204 |
|
9.2.3 |
Диаграммы классов.......................................................................... |
205 |
|
9.2.4 |
Пояснительная записка.................................................................... |
208 |
Литература ............................................................................................................... |
|
212 |
6
Введение
Задачи дисциплины: изучение методов геометрического моделирования в системах автоматизированного проектирования (САПР): отображение графической информации в двумерном и трехмерном пространстве, программирование алгоритмов компьютерной графики, создание простейших САПР-систем.
В данном пособии изложены алгоритмы и методы решения многих задач, возникающих при работе с векторными и растровыми изображениями. Основное внимание уделено вопросам прикладного программирования с использованием языка Microsoft Visual C++ 2005, библиотеки классов MFC и объектно-ориентированного проектирования. Материал книги накоплен за несколько лет чтения курса лекций "Геометрическое моделирование в САПР" в Томском государственном университете систем управления и радиоэлектроники (ТУСУР), а также в результате практической работы над научными и коммерческими проектами.
Материал строится на программе предыдущих курсов, поэтому перед началом изучения данной дисциплины необходимо уверенно владеть следующими навыками:
•Знать базовые алгоритмы компьютерной графики, способы хранения и представления графической информации;
•Знать основы написания программного обеспечения (ПО) под операционную систему (ОС) Windows;
•Уметь работать в средах Microsoft Visual Environment или Borland.
•Иметь хорошее понимание C++;
•Знать объектно-ориентированное проектирование (ООП) программных систем (полиморфизм, множественное наследование, агрегация и др.), их описание в диаграммах UML;
•Знать технологии разработки программного обеспечения (составление технического задания, проектов систем, различные стандарты организации процесса разработки — IBM COOTS, MSF,
7
критерии оценки качества ПО — ISO/IEC 9126, ГОСТ 28195 и ГОСТ Р ИСО/МЭК 9126 и др.).
Если в этих областях будут возникать вопросы, совершенно необходимо своевременно устранить пробелы.
Структура книги разделена на две части: обзорная и прикладная.
В обзорной части книги вкратце рассматриваются особенности программирования под ОС Windows: win32, win64, .NET, GDI и GDI+, DirectX
и OpenGL, и другое.
Перед изучением дальнейшего материала необходимо ознакомиться с приложениями — в них описаны базовые принципы, которыми необходимо будет владеть, чтобы эффективно усвоить материал.
Перед авторами не стояла задача полностью рассмотреть предметные области, описанные в приложениях, они скорее необходимы для того, чтобы студент смог освежить в памяти темы, пройденные на младших курсах. Дополнительные сведения могут быть легко получены из электронных источников или специальной литературы.
Вприкладной части книги описывается представление растровых данных
иструктура BMP-файла. Рассматривается пример создания программы BMViewer, обрабатывающей растровые данные различными алгоритмами компьютерной графики. Описывается процесс создания программы, в том
числе: многодокументная архитектура на основе классов MFC, двойная буферизация с помощью виртуальных экранов, гистограмма яркости, графические фильтры, работа с потоками, полиморфизм, точечные и матричные (пространственные) фильтры, яркость, контраст и многое другое.
Завершающая глава посвящена разработке приложения с использованием библиотеки OpenGL.
Данная книга не претендует на полноту изложения и для успешного изучения дисциплины обязательно потребуются привлечение дополнительных
8
источников. Рекомендуемые источники: MSDN (Microsoft Developer Network) –
поистине гигантская энциклопедия по технологиям .NET, MFC, API, GDI и GDI+, а так же многому другому; информационный портал RSDN (Russian Software Developer Network) www.rsdn.ru на котором можно обнаружить практически любую информацию (да ещё и на русском языке). Кроме того,
достаточно полезными бывают www.codeguru.com и www.codeproject.com (оба англоязычные).
Вообще, в наш информационный век найти любой материал в Интернете не является большой проблемой. Поэтому не стоит ограничиваться только перечисленными источниками — каждый день появляются новые достойные Интернет-ресурсы и бумажные публикации.
9
1Что такое геометрическое моделирование и системы автоматизированного проектирования?
Вданной главе мы рассмотрим — как зарождались САПР-системы и для чего они предназначены. Узнаем классификацию и математический аппарат геометрического моделирования.
1.1 Истоки геометрического моделирования и САПР
Теоретические основы САПР сформировались в 60-х — начале 70-х годов прошлого столетия. В основу идеологии положены разнообразные математические модели абстрактного изделия. Объекты рассматриваются с точки зрения различных специальностей, применяются различные методы получения параметров: геометрические, технологические, тепловые, аэродинамические, эргономические и т.п. Именно разнообразие моделей привело впоследствии к классификации CAD/CAM/CAE/PDM/TDM... и к более глубокой специализации внутри каждого раздела.
Нас, при изучении данной дисциплины, интересует именно CAD — Computer-Aided Design (русскоязычный термин — САПР — системы автоматизированного проектирования), который определяет область геометрического моделирования. Важность геометрической модели трудно переоценить, поскольку любые предметы описываются в первую очередь геометрическими параметрами.
Первой основой для описания предметов можно считать Евклидову геометрию, допускающую однозначное представление материальных объектов на плоскости. Евклидово построение предполагает определенный набор инструментов (линейка, циркуль) и множество допустимых операций, которые можно выполнить с их помощью. Дальнейшее развитие идей Евклидовых построений сформировало методы начертательной геометрии и проекционного черчения. Введение систем координат Декартом позволило соединить
10
геометрию с аналитической математикой. Так, открылась возможность получать новые геометрические объекты путем решения алгебраических уравнений.
1.2 2D моделирование
Традиционный способ плоского геометрического моделирования состоял в применении линейки, циркуля и транспортира на чертежной доске. Именно этот способ обеспечил техническую революцию на рубеже XIX-XX веков.
Появление ЭВМ стало благоприятной предпосылкой для развития машинной графики, которая включила в себя дисциплины геометрического моделирования и вычислительной геометрии. Основная их задача состоит в решении геометрических задач в аналитической и вычислительной (алгоритмической) форме.
Параллельно с векторным описанием геометрической информации развивались и дискретные представления объектов, так же называемых растрами. Отсюда пришло понятие «растровая графика».
К началу 80-х математический аппарат плоского геометрического моделирования был уже достаточно хорошо сформирован для того, чтобы обеспечить бурное развитие плоских CAD-систем. Инженеры сразу же оценили такие преимущества, как автоматизация построения геометрических элементов, копирование фрагментов, простота редактирования геометрической и текстовой информации, автоматическая штриховка и нанесение размеров, точность и качество документации, в том числе её автоматическое формирование, компактность хранения и др.
Существует два подхода к плоскому моделированию, которые получили развитие в CAD-системах. Первый условно можно назвать чертежным, второй
—твердотельным.
Вчертежном способе основными инструментами являются отрезки, дуги, полилинии и кривые. В твердотельном способе основными инструментами являются замкнутые контуры; остальные элементы играют вспомогательную