Преобразование - это не что иное, как матричное умножение вектора для получения преобразованного вектора, поэтому, если вы не понимаете умножение и сложение матриц, вы не можете уйти очень далеко.
Начните с матриц и линейной алгебры. Есть много книг, но имейте в виду, что, судя по утверждению, которое я сделал выше, вам не нужно читать всю книгу. Вам не понадобятся собственные значения, исключение Гаусса, векторные пространства или любые другие вещи, которые будут сложными и сложными.
Вам просто нужно знать, как расширить ваши знания об умножении и сложении чисел в матрице.
Получение записей в этой матрице преобразования - совсем другое дело. Вам понадобится хорошая книга по математике и компьютерной графике. Вы не найдете этого в учебнике линейной алгебры.
Как указал Даффимо, преобразование матрицы - это не что иное, как (предварительное) умножение вектора (например, трехмерной точки) на матрицу. Однако это чистая математика, и некоторым людям трудно ее представить.
Лучший способ понять матрицы преобразования (по крайней мере, для меня) - это получить пример кода , запустить его и поиграть с числами ]. Попробуйте посмотреть, можете ли вы поместить объект подальше или повернуть на 45 градусов. Попробуйте расположить преобразования в другом порядке и посмотрите, каковы будут результаты.
Все работает? Хороший.
Как только вы это почувствуете и если у вас хватит смелости заняться математикой, вы можете предпринять следующие шаги:
Во-первых, понять, как работает матричное умножение. Некоторые ссылки:
Как только вы научитесь умножать матрицу вручную, вы поймете, почему преобразования записываются именно так. По мере их использования к вам в конечном итоге придет понимание матриц.
Во-вторых, я всегда рекомендую потратить день, пытаясь реализовать собственный класс Matrix
и определить несколько общих операций, например mul (Vector v)
, transpose ()
или даже createTranslationMatrix (float x, float y, float z)
. Проведите несколько тестов и посмотрите, совпадают ли результаты с тем, что вы делали вручную.
Если вы зашли так далеко, попробуйте реализовать собственное преобразование перспективы! Это самое удивительное, что мы никогда не ценим. Здесь можно найти полезное объяснение:
Вы будете очень гордиться собой, выполнив одну из самых трудоемких, но недооцененных задач по реализации матричного объекта. Удачи!