Конгер Д.
Физика для разработчиков компьютерных игр
стр. 80

Матрицы

Матрицы - это просто массивы чисел, которые можно складывать и перемножать по определенным правилам. Вы, вероятно, знаете, что такое массивы в программировании, даже если вы не встречались с ними где-то еще. В физике и математике матрицы обозначаются заглавными буквами, например, М. Элементы матрицы обычно обозначаются строчными буквами с двумя нижними индексами, поэтому матрица может выглядеть так:

В математике и физике нумерация столбцов и строк в матрицах обычно начинается с единицы. Однако в компьютерах для хранения двумерных матриц обычно используются двумерные массивы, а индексы в массивах в языке C++ начинаются с О. Поэтому во многих книгах на компьютерные темы нумерация столбцов и строк в матрицах тоже начинается с 0. Именно так нумеруются столбцы и строки в матрицах и в этой книге.

Матрица М называется матрицей 4x4, поскольку в ней четыре столбца и четыре строки. В программировании графики на компьютере чаще всего используются квадратные матрицы, в которых количество строк равно количеству столбцов. Это утверждение верно и для тех областей физики, с которыми мы будем иметь дело. Почти все матрицы, которые нам встретятся, будут квадратными. В библиотеке моделирования реализованы классы matrlx2x2 и matrix3x3 для работы с матрицами 2x2 и 3x3.

С многих точек зрения матрицы проще векторов. Они не привязаны к каким-то координатам, как векторы. Они больше похожи на компоненты векторов в определенных системах координат. Собственно говоря, компоненты n-мерных векторов ведут себя очень похоже на матрицы размера 1хп.

Учтя эту схожесть матриц и компонентов векторов, вероятно, вы не удивитесь, узнав, что над матрицами можно выполнять почти такие же операции, как и над векторами: сложение, умножение на скаляр и умножение на другую матрицу. Однако будьте внимательными. У матриц есть свои особенности.

Замечание_

Не так уж сложно создать класс, который сможет работать с матрицами любого размера. Если вы хотите создать такой класс, прочитайте, например, книгу «Numerical Recipes for C++» (издательство William Press and Company). Однако мы сейчас изучаем специфическую область программирования - программированию игр. Нам понадобятся только матрицы определенных размеров. Универсальность стоит принести в жертву скорости работы. Реализуя только те матрицы, которые нам понадобятся, можно упростить код и немного ускорить его выполнение.






Новости
Исследование: Треть населения Земли играют в видеоигры
Специалисты компании NewZoo провели исследование и пришли к выводу, что треть населения Земли или 2,3 млрд человек играют в видеоигры.
Антивирусы и облачные сервисы портят сохранения Dark Souls Remastered
Вчера комьюнити-менеджер Bandai Namco под ником Izmar подтвердил проблему в Steam, посоветовав ограничить доступ антивирусов и других программ вроде облачных сервисов Google и Amazon к файлам ремастера Dark Souls.