Я посмотрел на несколько ресурсов, таких как этот http://antongerdelan.net/teaching/3dprog1/maths_cheat_sheet.pdf
Я обнаружил, что должен использовать порядок столбцов в мажоре, путаница возникает, когда я узнаю ответ на этот вопрос.
Почему моя матрица перевода должна быть транспонирована?
ответ показывает матрицу перевода в главном порядке столбца, но предыдущий ресурс показывает матрицу перевода в главном порядке столбца, и это, кажется, транспонирование той, которая показана в этом ответе.
Я понимаю, что матрица в этом ответе верна, потому что я попробовал ее, и мое преобразование работает. я пытаюсь найти матрицы масштабирования, поворота и перспективы столбцов, также записанные в этой нотации стиля массива c ++, а не в первом ресурсе.
Согласно внимательному прочтению
Почему моя матрица перевода должна быть транспонирована?
разница в том, что первая страница, на которую вы смотрите, показывает вам математическая запись для ваших матриц, в которых каждый столбец расположен вдоль вертикальной линии; в то время как другая нотация, на которую вы смотрите, это последовательность символов, напоминающая что-то, что может произойти в вашем коде C ++. Есть много других отличий, таких как высокие квадратные скобки в математической нотации (которые невозможно воспроизвести точно в коде C ++, так как нет символов, которые занимают несколько строк), и тот факт, что между числами в запятых нет математическая запись.
Но главное в том, что поскольку матрица хранится в основном порядке столбцов, если вы инициализируете записи в том порядке, в котором они хранятся (например, с помощью записи для инициализации массива из списка, разделенного запятыми), то x
, y
, z
, а также 1
будет последние четыре записи Вы установите в матрице. А поскольку C ++ всегда анализируется как линейное чтение строки слева направо (парсеру не важно, какое число окажется непосредственно под другим числом, когда вы смотрите список), если вам случится отформатировать список из 16 значений в 4 строки по 4 значения в каждой, последние четыре значения в списке — те, что на последнем строка вашего формата.
Других решений пока нет …