Каков правильный порядок использования матриц в Opengl?

Я посмотрел на несколько ресурсов, таких как этот http://antongerdelan.net/teaching/3dprog1/maths_cheat_sheet.pdf

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

Почему моя матрица перевода должна быть транспонирована?

ответ показывает матрицу перевода в главном порядке столбца, но предыдущий ресурс показывает матрицу перевода в главном порядке столбца, и это, кажется, транспонирование той, которая показана в этом ответе.

Я понимаю, что матрица в этом ответе верна, потому что я попробовал ее, и мое преобразование работает. я пытаюсь найти матрицы масштабирования, поворота и перспективы столбцов, также записанные в этой нотации стиля массива c ++, а не в первом ресурсе.

0

Решение

Согласно внимательному прочтению

Почему моя матрица перевода должна быть транспонирована?

разница в том, что первая страница, на которую вы смотрите, показывает вам математическая запись для ваших матриц, в которых каждый столбец расположен вдоль вертикальной линии; в то время как другая нотация, на которую вы смотрите, это последовательность символов, напоминающая что-то, что может произойти в вашем коде C ++. Есть много других отличий, таких как высокие квадратные скобки в математической нотации (которые невозможно воспроизвести точно в коде C ++, так как нет символов, которые занимают несколько строк), и тот факт, что между числами в запятых нет математическая запись.

Но главное в том, что поскольку матрица хранится в основном порядке столбцов, если вы инициализируете записи в том порядке, в котором они хранятся (например, с помощью записи для инициализации массива из списка, разделенного запятыми), то x, y, z, а также 1 будет последние четыре записи Вы установите в матрице. А поскольку C ++ всегда анализируется как линейное чтение строки слева направо (парсеру не важно, какое число окажется непосредственно под другим числом, когда вы смотрите список), если вам случится отформатировать список из 16 значений в 4 строки по 4 значения в каждой, последние четыре значения в списке — те, что на последнем строка вашего формата.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]