- •Цели и задачи компьютерной графики
- •Растровая и векторная визуализация изображений. Основные характеристики растровых изображений
- •Аддитивная цветовая модель rgb. Кодирование цвета. Палитра
- •Графические форматы. Работа с растровыми изображениями (форматы ddb, dib, bmp – файлы)
- •Понятие об инкрементных алгоритмах растеризации. Растровое представление отрезка (вывод алгоритма). Реализация алгоритма (Листинг функции по лабораторной работе)
- •Понятие об инкрементных алгоритмах растеризации. Алгоритм построения окружности методом средней точки (вывод алгоритма). Реализация алгоритма. (Листинг функции по лабораторной работе)
- •Стиль линии (перо). Алгоритмы вывода линий
- •Стиль заполнения, кисть, текстура
- •Геометрические основы компьютерной графики. Системы координат (декартова, полярная, сферическая) и векторы. Скалярное и векторное произведение векторов
- •Построение кривых. Интерполяционный полином Лагранжа. Достоинства и недостатки. (Листинг функции для реализации полинома Лагранжа по лабораторной работе).
- •Построение кривых. Интерполяционный кубический сплайн. (Листинг функции для реализации кубического сплайна по лабораторной работе).
- •Мировые и экранные координаты. Алгоритм пересчета мировых 2d-координат в оконные. Вывод и реализация (Листинг функции SpaceToWindow)
- •15. Физическая и логическая системы координат. Режимы отображения (без настройки параметров). Алгоритм преобразования координат в gdi и его связь с алгоритмом пересчёта мировых координат в оконные
- •16. Режимы отображения и настройка их параметров (функции класса cdc mfc). Функция SetMyMode, назначение, параметры и реализация
- •17. Аффинные преобразования на плоскости. Преобразование системы координат: смещение, растяжение-сжатие, поворот
- •18. Аффинные преобразования на плоскости. Преобразование объектов: смещение, растяжение-сжатие, поворот
- •19. Аффинные преобразования в пространстве. Преобразование системы координат: смещение, растяжение-сжатие, повороты вокруг осей координат
- •20. Аффинные преобразования в пространстве. Преобразования объектов: смещение, растяжение-сжатие, повороты вокруг осей координат
- •21. Основные типы проекций. Видовая система координат (вывод матрицы преобразования)
- •22. Перспективные преобразования (вывод матрицы преобразования). Схема пересчёта координат при переходе от мировых 3d-координат к экранным
- •23. Модели описания поверхностей
- •24. Каркасная визуализация трёхмерных изображений. Принцип удаления невидимых граней для выпуклого многогранника. Реализация
- •26. Закрашивание поверхностей. Модели отражения света
- •27. Закрашивание поверхностей. Вычисление нормалей и углов отражения. Реализация
- •28. Метод закрашивания Гуро
- •30. Графическая библиотека OpenGl. Структура glut-приложения. Пример
- •31. Графическая библиотека OpenGl. Рисование графических примитивов. Дисплейные списки. Удаление нелицевых граней. Вывод текста. Примеры
- •32. Графическая библиотека OpenGl. Системы координат. Модельно-видовые преобразования. Примеры
- •33. Графическая библиотека OpenGl. Проекции. Область вывода. Создание анимации. Примеры
- •34. Графическая библиотека OpenGl. Материалы и освещение. Примеры
- •35. Графическая библиотека OpenGl. Структура приложения с использованием библиотеки mfc
16. Режимы отображения и настройка их параметров (функции класса cdc mfc). Функция SetMyMode, назначение, параметры и реализация
Режим отображения |
Направление оси X |
Направление оси Y |
Размер одной логической единицы |
MM_TEXT |
Вправо |
Вниз |
1 пиксел |
MM_ISOTROPIC |
Можно выбирать |
Можно выбирать |
Произвольный, одинаковый для осей X и Y |
MM_ANISOTROPIC |
Можно выбирать |
Можно выбирать |
Произвольный, может быть разный для осей X и Y |
Режим MM_TEXT
Режим отображения MM_TEXT устанавливается в контексте отображения по умолчанию. Для этого режима формулы преобразования координат упрощаются:
xViewport = (xWindow - xWinOrg) + xViewOrg
yViewport = (yWindow - yWinOrg) + yViewOrg
Так как по умолчанию xViewOrg=0, yViewOrg=0, xWinOrg=0, yWinOrg=0, то
xViewport = xWindow
yViewport = yWindow
Соответствующая система координат представлена на рис. ниже (начало системы координат расположено точно в левом верхнем углу внутренней области окна, рисунок иллюстрирует только направление координатных осей).
Так как в формуле преобразования не присутствуют переменные xViewExt, yViewExt, xWinExt и yWinExt, в данном режиме преобразования невозможно изменить масштаб осей координат. Поэтому логическая единица длины в режиме отображения MM_TEXT равна физической, т. е. одному пикселу.
Режимы MM_ISOTROPIC и MM_ANISOTROPIC
Режимы отображения MM_ISOTROPIC (изотропный) и MM_ANISOTROPIC (анизотропный) допускают изменение направления осей X и Y, а также изменение масштаба осей координат. В изотропном режиме отображения MM_ISOTROPIC масштаб вдоль осей X и Y всегда одинаковый (т. е. для обоих осей используются одинаковые логические единицы длины). Анизотропный режим MM_ANISOTROPIC предполагает использование разных масштабов для разных осей (хотя можно использовать и одинаковые масштабы).
Для изменения ориентации и масштаба осей предназначены функции SetViewportExtEx и SetWindowExtEx.
Функция SetWindowExtEx устанавливает для формулы преобразования координат значения переменных xWinExt и yWinExt:
BOOL SetViewportExtEx(
HDC hdc, // идентификатор контекста отображения
int nXExtent, // значение для xViewExt
int nYExtent, // значение для yViewExt
LPSIZE lpSize // указатель на структуру SIZE
);
virtual CSize SetViewportExt(int cx, int cy ); // Метод класса CDC MFC
CSize SetViewportExt( SIZE size ); // Метод класса CDC MFC
Функция SetViewportExtEx должна использоваться после функции SetWindowExtEx. Она устанавливает для формулы преобразования координат значения переменных xViewExt и yViewExt:
BOOL SetWindowExtEx(
HDC hdc, // идентификатор контекста отображения
int nXExtent, // значение для xWinExt
int nYExtent, // значение для yWinExt
LPSIZE lpSize // указатель на структуру SIZE
);
virtual CSize SetWindowExt( int cx, int cy ); // Метод класса CDC MFC
CSize SetWindowExt(SIZE size ); // Метод класса CDC MFC
Старые значения переменных, определяющих масштаб преобразования, записываются в структуру SIZE, указатель на которую передается через параметр lpSize.
typedef struct tagSIZE {
LONG cx;
LONG cy;
} SIZE, *PSIZE;
Если они не нужны, можно положить lpSise=NULL
Изотропный режим отображения удобно использовать в тех случаях, когда надо сохранить установленное отношение масштабов осей X и Y при любом изменении размеров окна, в которое выводится изображение.
Анизотропный режим удобен в тех случаях, когда изображение должно занимать всю внутреннюю поверхность окна при любом изменении размеров окна. Соотношение масштабов при этом не сохраняется.
Для установки режима отображения, непосредственно определяющего направление осей и размер логической единицы системы координат, используется функция SetMapMode.
