Для осуществления видовых преобразований в OpenGL существует видовая матрица размерностью 4х4. Для удобства вычислений средствами OpenGL разработчиками было принято особое расположение элементов матрицы, которое отличается от расположения элементов классической матрицы.
Расположение элементов классической матрицы и матрицы OpenGL
В классической матрице все элементы расположены слева на право, сверху вниз (по строкам):
В матрице OpenGL элементы расположены сверху вниз и слева на право (по столбцам):
Учитывайте это, применяя матричные операции классической алгебры к матрицам OpenGL.
Перемножение матриц
Для перемножения двух матриц в классической алгебре нужно перемножить ряды первой матрицы на столбцы второй. Правило перемножения матриц гласит: "перемножайте ряд на столбец и суммируйте результат".
Перемножение матриц в OpenGL. Для того, чтобы перемножить две OpenGL матрицы немного изменим правило из классической алгебры. В результате нам понадобится перемножить, столбец на ряд и суммировать результат. Следующий рисунок иллюстрирует всё наглядно и у вас не останется никаких вопросов.
Таким образом, мы получаем результат перемножения двух матриц. Следует учесть, что порядок перемножения матриц влияет на результат. В примере мы перемножили матрицы M*L. Но если перемножить L*M, то результат будет совершенно другим (см. Особенности оперирования матрицами в OpenGL).
|