макет pyrr.Matrix44 на самом деле главный столбец? - PullRequest
0 голосов
/ 10 марта 2020

в документах pyrr.Matrix он утверждает:

Matrices are laid out in row-major format and can be loaded directly into OpenGL. To convert to column-major format, transpose the array using the numpy.array.T method.

создание матрицы преобразования дает мне:

Matrix44.from_translation( np.array([1,2,3]))                                                                                                        
Matrix44([[1, 0, 0, 0],
          [0, 1, 0, 0],
          [0, 0, 1, 0],
          [1, 2, 3, 1]])

Если макет является основным по строкам, я ожидаю вывод чтобы быть транспонированным:

Matrix44([[1, 0, 0, 1],
          [0, 1, 0, 2],
          [0, 0, 1, 3],
          [0, 0, 0, 1]])

Скорее всего, я в замешательстве (я из C / OpenGL), но кто-нибудь может просветить меня?

Джонатан

1 Ответ

1 голос
/ 10 марта 2020

Я записывал отличный ответ. Но я нашел эту действительно интересную ссылку Я приглашаю вас прочитать ее!

Это небольшое резюме:

  • Если это матрица с основными строками, то перевод хранится в 3, 7 и 11-м индексах.
  • Если это главный столбец, то перевод сохраняется в 12, 13 и 14-м индексах.

Разница за сценой заключается в способе хранения данных. Поскольку в памяти 16 чисел, эти числа являются непрерывными в памяти. Таким образом, вы должны определить, будете ли вы хранить их в 4 числах с плавающей запятой x 4 столбца или 4 числах с плавающей запятой x 4 строки. И затем это изменит способ доступа и использования.

Вы можете посмотреть эту ссылку тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...