Im look to piggyback значение float на матрице 4x4, передающей. Соответствующая матрица используется для различных векторных преобразований xyz. Насколько я понимаю, первые 3x3 матрицы облегчают поворот и масштабные преобразования с 4-м значением первых трех строк смещают ось преобразования, а первые 3 элемента нижней строки выполняют позиционное смещение, но что делает последний элемент делать? Насколько я видел, это всегда 1 и ничего не делает, есть ли какой-нибудь вред во мне, который хорошо его использует?4x4 матрица значение последнего элемента?
ответ
Если (как ваш вопрос предлагает), то соглашение состоит в том, что точки являются векторами столбцов, а последние элементы первых трех строк определяют перевод, тогда первые 3 элемента нижней строки: не позиционное смещение: 4-я строка матрицы преобразования используется для перспективной проекции, то есть как камера отображает 3D-точки на 2D-окно просмотра. Эскиз, как матрица 4x4 используется для отображения пунктов:
result = 4x4 matrix * point
[ x' ] [ Rxx Rxy Rxz Tx ] [ x ]
[ ] [ ] [ ] -> R** is the rotation/scaling matrix
[ y' ] [ Ryx Ryy Ryz Ty ] [ y ]
[ ] = [ ] * [ ] T* is the translation vector
[ z' ] [ Rzx Rzy Rzz Tz ] [ z ]
[ ] [ ] [ ] P* fixes the camera projection plane
[ w' ] [ Px Py Pz Pw ] [ w ]
-> x' = dot_product3([Rxx,Rxy,Rxz], [x,y,z]) + Tx * w
-> y' = dot_product3([Ryx,Ryy,Ryz], [x,y,z]) + Ty * w
-> z' = dot_product3([Rzx,Rzy,Rzz], [x,y,z]) + Tz * w
-> w' = dot_product4([Px,Py,Pz,Pw], [x,y,z,w])
Заключительный шаг в 3D точки -> отображение 2D экран разделить на 4 (w'
) координат - так, для стандартных геометрических преобразований , последняя строка должна быть [0,0,0,1]
, что оставляет координату w
без изменений.
Если первые 3 элемента нижней строки не являются 0
, матрица, как правило, генерирует странное, неоднородное искажение трехмерного пространства. И, хотя можно использовать последний элемент как единый обратный масштабный коэффициент, вероятно, лучше сделать свое масштабирование с помощью верхней левой 3х3 субматрицы и оставить нижний ряд исключительно для камеры.
- 1. Эффективная матрица 4x4 обратная (аффинное преобразование)
- 2. Как работает матрица 4x4 в 3d графике?
- 3. Как получить значение атрибута последнего элемента?
- 4. Как получить значение последнего элемента массива?
- 5. Получить значение из последнего элемента LinkedList C#
- 6. Android: OnItemClickListener возвращает значение последнего элемента
- 7. LISP автомобиль последнего элемента?
- 8. 4x4 3D Matrix Manipulation
- 9. Выбор и настройка значение предыдущего элемента последнего элемента
- 10. Захват последнего элемента xpath
- 11. Захват последнего элемента вектора
- 12. looping matrix ordo 4X4
- 13. Отрицательное вращение матрицы 3D 4x4
- 14. Идентификация последнего элемента
- 15. Добавить без последнего элемента
- 16. Достигая последнего элемента XML
- 17. Получение последнего элемента
- 18. Извлечение последнего элемента priority_queue
- 19. Получение последнего созданного элемента
- 20. RecyclerView отключение последнего элемента
- 21. Получение последнего элемента коллекции
- 22. Удаления сюжетных последнего элемента
- 23. Удаление последнего элемента списка
- 24. Изменение последнего элемента массива
- 25. multi_index_container удаления последнего элемента
- 26. Достигнуть последнего элемента иерархии
- 27. Выбор значения атрибута последнего элемента
- 28. Матрица SWI-Prolog. Как найти значение элемента по индексам?
- 29. Изменить ключ последнего элемента Hashmap
- 30. Инвертирование алгоритма матрицы 4x4
какой объект/инструмент/API/и т. Д. вы используете это для? Это не стандарт математики/матрицы, это соглашение того, что вы передаете этой матрице. – RBarryYoung
Хотя мое предубеждение было бы в том, что он контролирует масштабирование. – RBarryYoung
матрицы создаются с использованием функций d3dx и применяются в среде hlsl, масштабирование также было моей первой мыслью, но я попытался использовать 100 случайных матриц на случайных векторах, а изменение последнего значения ничего не сделало –