Применение теории матриц в компьютерной графике
Понятие и сущность матрицы. Правила выполнения операций над матрицами. Матричное представление преобразований, составные преобразования. Аффинное преобразование и его матричное представление. Для чего нужна трехмерная графика. Набор библиотек DirectX.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | научная работа |
Язык | русский |
Дата добавления | 24.04.2015 |
Размер файла | 181,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ЧУВАШСКОЙ РЕСПУБЛИКИ
СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ЧЕБОКСАРСКИЙ ТЕХНИКУМ СВЯЗИ И ИНФОРМАТИКИ»
МИНИСТЕРСТВА ОБРАЗОВАНИЯ И МОЛОДЁЖНОЙ ПОЛИТИКИ ЧУВАШСКОЙ РЕСПУБЛИКИ
НАУЧНО-ПРАКТИЧЕСКАЯ КОНФЕРЕНЦИЯ СТУДЕНТОВ
Секция «Математические науки»
Тема: Применение теории матриц в компьютерной графике
Автор - Лисицын Виктор Валерьевич, 2 курс, гр.ПКС-1-14
Научный руководитель -Захарова Тамара Ивановна
Чебоксары - 2015 г.
Оглавление
Что такое матрица
Матричное представление преобразований
Составные преобразования
Аффинное преобразование и его матричное представление
DirectX
Для чего же нужна трехмерная графика?
Список источников
Что такое матрица
Матрица - довольно многозначное слово, которое пришло в нашу речь из немецкого языка. Это слово можно встретить в сфере математики, техники и электроники и даже в сфере киноиндустрии. Но сейчас не об этом. Итак, что же такое матрица?
В математике термин "матрица" обозначает математический объект, который представляет собой прямоугольную таблицу, состоящую из целых или дробных чисел. По сути дела, это совокупность строк и столбцов, на пересечении которых располагаются элементы матрицы. Размер матрицы определяется как раз количеством строк и столбцов. Для чего нужны матрицы в математике? В основном они применяются для удобного и компактного расположения систем линейных уравнений. При такой записи количество строк матрицы будет равно количеству уравнений в системе, а столбцы будут соответствовать неизвестным. Таким образом упрощается поиск неизвестных. С матрицами можно производить алгебраические операции: умножение, сложение, умножение на матрицу вектора и на скаляр.
Мамтрица -- математический объект, записываемый в виде прямоугольной таблицы чисел и допускающий алгебраические операции (сложение, вычитание, умножение и др.) между ним и другими подобными объектами.
Правила выполнения операций над матрицами сделаны такими, чтобы было удобно записывать системы линейных уравнений.
Обычно матрицу обозначают заглавной буквой латинского алфавита и выделяют круглыми скобками «(…)» (встречается также выделение квадратными скобками «[…]», двойными прямыми линиями "||…||").
Числа, составляющие матрицу (элементы матрицы), обозначают той же буквой, что и саму матрицу, но маленькой.
У каждого элемента матрицы есть 2 нижних индекса () -- первый «i» обозначает номер строки, в которой находится элемент, а второй «j» -- номер столбца. Говорят матрица размерности подразумевая, что в матрице n строк и m столбцов.
Матричное представление преобразований
Матрица mЧn -- это набор чисел, распределенных по m строкам и по n столбцам. На приведенном ниже рисунке изображены различные матрицы.
Две матрицы одинакового размера можно складывать путем складывания соответствующих элементов матриц. На приведенном ниже рисунке показано два примера сложения матриц.
Матрицу размера mЧn можно умножить на матрицу размера nЧp, в результате чего получится матрица размера mЧp. Число столбцов в первой из перемножаемых матриц должно совпадать с числом строк во второй из перемножаемых матриц. Например, матрицу размером 4Ч2 можно умножить на матрицу размером 2Ч3, в результате чего получится матрица размером 4Ч3.
Точки на плоскости, а также строки и столбцы матрицы можно рассматривать как векторы. Например, (2, 5) -- это вектор из двух компонентов, а (3, 7, 1) -- это вектор из трех компонентов. Скалярным произведением двух векторов называется число, получаемое по следующим правилам:
(a, b) * (c, d) = ac + bd
(a, b, c) * (d, e, f) = ad + be + cf
Например, скалярное произведение векторов (2, 3) и (5, 4) равно (2)(5) + (3)(4) = 22. Скалярное произведение векторов (2, 5, 1) и (4, 3, 1) равно (2)(4) + (5)(3) + (1)(1) = 24. Обратите внимание, что скалярное произведение векторов -- это число, а не вектор. Также обратите внимание, что скалярное произведение двух векторов можно вычислить, только если у этих векторов одинаковое количество компонентов.
Обозначение A(i, j) соответствует элементу матрицы A, расположенному на пересечении i-ой строки и j-го столбца. Например, запись A(3, 2) обозначает элемент матрицы A, расположенный на пересечении 3-ей строки и 2-го столбца. Предположим, что A, B и C -- это матрицы, причем AB = C. Элементы матрицы C вычисляются следующим образом:
C(i, j) = (i-я строка A) * (j-й столбец B)
На приведенном ниже рисунке показано несколько примеров перемножения матриц.
Если рассматривать точки на плоскости в качестве матриц размером 1Ч2, эти точки можно подвергать преобразованиям, умножая их матрицы на матрицу размером 2Ч2. На приведенном ниже рисунке изображены результаты применения различных преобразований к точке с координатами (2, 1).
Все преобразования, показанные на приведенном ранее рисунке, являются линейными преобразованиями. Некоторые другие преобразования, такие как сдвиг, не являются линейными и не могут быть осуществлены путем умножения на матрицу размером 2Ч2. Предположим, что нужно взять точку с координатами (2, 1), повернуть ее на 90 градусов относительно начала координат, сдвинуть на 3 единицы вдоль оси X и на 4 единицы вдоль оси Y. Такое преобразование можно выполнить путем выполнения умножения и сложения матриц.
Линейное преобразование (умножение на матрицу размером 2Ч2) и сдвиг (прибавление матрицы размером 1Ч2), вместе называются аффинным преобразованием. Альтернативой заданию аффинного преобразования через пару матриц (одна для линейного преобразования и одна для сдвига) является запись всего преобразования в виде одной матрицы размером 3Ч3. Чтобы можно было использовать такие матрицы преобразований, точки плоскости нужно хранить в виде матриц размером 1Ч3, с фиктивной третьей координатой. Обычно третью координату делают равной 1. Например, точка с координатами (2, 1) представляется матрицей [2 1 1]. На приведенном ниже рисунке представлен пример аффинного преобразования (поворот на 90 градусов; сдвиг на 3 единицы по оси X и на 4 единицы по оси Y), заданного умножением на матрицу размером 3Ч3.
В предыдущем примере точка (2, 1) преобразуется в точку (2, 6). Обратите внимание, что третий столбец матрицы размером 3Ч3 содержит числа 0, 0, 1.Такие значения обязательны для всех матриц размером 3Ч3, задающих аффинные преобразования. Смысловую нагрузку несут только шесть чисел в первом и втором столбцах матрицы преобразования. Верхняя левая часть матрицы размером 2Ч2 задает линейную часть преобразования, а первые два числа в третьей строке матрицы задают сдвиг.
Интерфейс GDI+ позволяет хранить аффинные преобразования в объекте Matrix. Так как третий столбец матрицы, задающей аффинное преобразование, всегда равен (0, 0, 1), при создании объекта Matrix нужно задавать только шесть чисел в первых двух столбцах. Инструкция Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) создает матрицу, изображенную на приведенном выше рисунке.
Составные преобразования
Составным преобразованием называется серия последовательно применяемых преобразований. Рассмотрим следующие матрицы и преобразования:
Матрица A |
Поворот на 90 градусов. |
|
Матрица B |
Масштабирование по оси X с коэффициентом 2. |
|
Матрица C |
Сдвиг на три единицы по оси Y. |
Если взять матричное представление для точки с координатами (2, 1) -- [2 1 1] -- и последовательно умножить его на матрицу A, затем на B, а затем на C, точка (2, 1) последовательно подвергнется трем соответствующим преобразованиям.
[2 1 1]ABC = [-2 5 1]
Вместо того чтобы хранить три части составного преобразования в отдельных матрицах, можно перемножить матрицы A, B и C и получить одну матрицу размером 3Ч3, содержащую все составное преобразование. Предположим, что ABC = D. Тогда точка, умноженная на матрицу D, подвергается тем же преобразованиям, что и после последовательного умножения на матрицы A, B и C.
[2 1 1]D = [-2 5 1]
На приведенном ниже рисунке показаны матрицы A, B, C и D.
Тот факт, что матрица составного преобразования может быть создана путем перемножения отдельных матриц преобразования, означает, что любая последовательность аффинных преобразований может быть задана одним объектом Matrix.
Важно помнить
Порядок применения (перемножения) матриц преобразования имеет значение. В общем случае поворот, затем масштабирование и затем сдвиг производят преобразование, отличное от того, которое получается после применения масштабирования, затем поворота и затем сдвига. Поэтому важное значение имеет порядок, в котором перемножаются матрицы. В общем случае ABC не равно BAC.
Класс Matrix содержит несколько методов для составных преобразований: Multiply, Rotate, RotateAt, Scale, Shear и Translate. В приведенном ниже примере демонстрируется создание матрицы составного преобразования, реализующей поворот на 30 градусов, затем масштабирование вдоль оси Y с коэффициентом 2 и сдвиг на 5 единиц вдоль оси X.
На приведенном ниже рисунке изображена полученная матрица.
Аффинное преобразование и его матричное представление
Матрица перемещения
Мы можем переместить вектор (x, y, z, 1) на px единиц по оси Х, py единиц по оси Y и pz единиц по оси Z умножив его на следующую матрицу:
Перемещение на 12 единиц по оси X и на -10 единиц по оси Y
Для создания матрицы перемещения в библиотеке D3DX используется следующая функция:
D3DXMATRIX *D3DXMatrixTranslation(
D3DXMATRIX* pOut, // Результат
FLOAT x, // Количество единиц для перемещения по оси X
FLOAT y, // Количество единиц для перемещения по оси Y
FLOAT z // Количество единиц для перемещения по оси Z
);
Матрицы вращения
Поворот на 30 градусов против часовой стрелки вокруг оси Z
Используя приведенные ниже матрицы мы можем повернуть вектор на ц радиан вокруг осей X, Y или Z. Обратите внимание, что если смотреть вдоль оси вращения по направлению к началу координат, то углы измеряются по часовой стрелке.
Для создания матрицы вращения вокруг оси X в библиотеке D3DX используется следующая функция:
D3DXMATRIX *D3DXMatrixRotationX(
D3DXMATRIX* pOut, // Результат
FLOAT Angle // Угол поворота в радианах
);
Для создания матрицы вращения вокруг оси Y в библиотеке D3DX используется следующая функция:
D3DXMATRIX *D3DXMatrixRotationY(
D3DXMATRIX* pOut, // Результат
FLOAT Angle // Угол поворота в радианах
);
Для создания матрицы вращения вокруг оси Z в библиотеке D3DX используется следующая функция:
D3DXMATRIX *D3DXMatrixRotationZ(
D3DXMATRIX* pOut, // Результат
FLOAT Angle // Угол поворота в радианах
);
Инверсией матрицы вращения R является результат транспонирования этой матрицы: RT = R-1. Такие матрицы называются ортогональными.
Матрица масштабирования
Мы можем масштабировать вектор с коэффициентом qx по оси Х, коэффициентом qy по оси Y и коэффициентом qz по оси Z, умножив его на следующую матрицу:
Масштабирование с коэффициентом 1/2 по оси X и коэффициентом 2 по оси Y
Для создания матрицы масштабирования в библиотеке D3DX используется следующая функция:
D3DXMATRIX *D3DXMatrixScaling(
D3DXMATRIX* pOut, // Результат
FLOAT sx, // Коэффициент масштабирования по оси X
FLOAT sy, // Коэффициент масштабирования по оси Y
FLOAT sz // Коэффициент масштабирования по оси Z
);
DirectX
матрица операция трехмерный графика
DirectX (от английского direct -- прямой, непосредственный) -- это набор библиотек, разработанных компанией Microsoft для создания наиболее эффективных мультимедиа-приложений под операционную систему Windows. Этот набор библиотек активно используется при программировании компьютерных игр, симуляторов, некоторых научных пакетов и некоторых программ создания 3д-графики.
Библиотеки DirectX обычно устанавливаются вместе с операционной системой Windows, в момент её инсталляции на компьютер. Но лучше, всё же, самостоятельно обновлять их, скачивая с сайта, поскольку DirectX обновляется значительно чаще, чем выходят новые дистрибутивы операционной системы и потому желательно всегда иметь обновлённую версию - часто она не только работает быстрее, но и устраняет некоторые, ране наблюдавшиеся проблемы (баги, несовместимости с оборудованием и так далее).
Для чего же нужна трехмерная графика?
Трёхмерная (или 3D-) графика применяется далеко не только для увеличения кассовых сборов в кино, но и в бизнесе. Её можно встретить в любых презентационных материалах -- будь то сайт или каталог, где необходимо продемонстрировать покупателям будущие интерьеры, либо внешний вид разрабатываемых продуктов, показать инвесторам как то или иное строение будет смотреться в городском ландшафте. И список далеко не полный.
Процесс создания трёхмерной графики соединяет в себе как создание художественных образов, так и математическое моделирование. Так, первым этапом в этом процессе разработки изображения является создание модели объектов и их размещения. Затем к объектам применяется компьютерная визуализация (или рендеринг) , подразумевающая появление на изображении самих объектов в соответствии с выбранными физическими моделями. После этого дизайнер дорабатывает детали и проводит нюансировку чтобы добиться максимальной фотографичности изображения -- и в лучших работах им это удаётся.
Учитывая сложность технологических процессов создания трёхмерной графики сроки и стоимость проектов могут отличаться в разы. Как правило, сложность работы определяется по следующим характеристикам: ясность образа, размер изображения, количество объектов, а также сложность и детализация частей.
Перефразируя народную мудрость, скажем: лучше один раз показать, чем сто раз описать.
Список источников
http://compgraphics.info/2D/affine_transform.php
http://msdn.microsoft.com/ru-ru/library/8667dchf(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
http://elhow.ru/ucheba/opredelenija/m/chto-takoe-matrica
http://ru.vlab.wikia.com/wiki/%D0%9C%D0%B0%D1%82%D1%80%D0%B8%D1%86%D0%B0_(%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)
http://netlib.narod.ru/library/book0032/part1_03.htm
http://netlib.narod.ru/library/book0051/ch02_01.htm
http://sea.2bb.ru/viewtopic.php?id=162
http://dev.mindillusion.ru/
https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0
Размещено на Allbest.ru
Подобные документы
Основные понятия и определения кодирования информации. Кодовая комбинация и ее длина. Классификация кодов по различным признакам, способы их представления, назначение. Представление в виде кодовых деревьев или многочленов, матричное и геометрическое.
реферат [38,1 K], добавлен 05.08.2009Основные понятия теории вероятностей. Экономика и надежность: жизненный цикл изделия, логико-вероятностная, пороговая и марковская модели. Понятие резервирования. Матричное представление избыточных кодов. Методы технической диагностики компьютеров.
презентация [801,4 K], добавлен 19.12.2010Принципы разработки и пример работы программы, реализующей основные операции алгебры матриц: сложение, вычитание, умножение, транспонирование, а также умножение матрицы на число. Функциональные модели и блок-схемы решения задачи операций над матрицами.
курсовая работа [956,7 K], добавлен 25.01.2010Суть принципа точечной графики. Изображения в растровой графике, ее достоинства. Обзор наиболее известных редакторов векторной графики. Средства для работы с текстом. Программы фрактальной графики. Форматы графических файлов. Трехмерная графика (3D).
дипломная работа [764,7 K], добавлен 16.07.2011Преобразование "естественной" информации в дискретную форму. Анализ процессов дискретизации и квантования изображения. Векторные и растровые процедуры, применяемые в компьютерной графике. Законы математического описания цвета и виды цветовых моделей.
презентация [208,4 K], добавлен 29.01.2016Наглядное представление массивов различной информации в компьютерной графике. Типы визуализации: схематическая, концептуальная, стратегическая, графическая, комбинированная. Виды сравнения данных: покомпонентное, позиционное, временное, частотное.
контрольная работа [1,4 M], добавлен 20.12.2015Управление файловой системой средствами Windows Explorer (Проводник). Цифровое представление вещественных чисел. Запуск MS Excel. Метод нисходящего проектирования. Характеристики плавающего числа двойной точности. Понятие компьютерной безопасности.
реферат [69,0 K], добавлен 24.04.2011Функция записи в сжатое представление массива. Распечатка внутреннего представления матрицы. Результат работы программы при Xm=4. Построение графика зависимости T=F(Xm) по начальному значению времени выполнения алгоритма. Запись элементов в массив.
лабораторная работа [471,8 K], добавлен 05.12.2015Понятие матрицы, определение ее составных частей и границ, обосновывающие теории. Арифметические операции над матрицами, способы их представления в Mathcad. Формирование уравнений цепи на основе теории графов. Характеристика топологических матриц графа.
учебное пособие [982,4 K], добавлен 03.05.2010Понятие теории оптимизации экономических задач. Сущность симплекс-метода, двойственности в линейном программировании. Элементы теории игр и принятия решений, решение транспортной задачи. Особенности сетевого планирования и матричное задание графов.
курс лекций [255,1 K], добавлен 14.07.2011