gpt4 book ai didi

graphics - 4x4矩阵最后一个元素的意义?

转载 作者:行者123 更新时间:2023-12-02 10:09:30 29 4
gpt4 key购买 nike

我希望在传输的 4x4 矩阵上搭载一个浮点值。所讨论的矩阵用于各种 xyz 向量变换。据我了解,矩阵的前 3x3 有助于旋转和缩放变换,前 3 行的第 4 个值偏移变换的枢轴,底行的前 3 个元素执行位置偏移,但最后一行的作用是什么元呢?据我所知,它始终为 1 并且完全没有任何作用,充分利用它对我有什么坏处吗?

最佳答案

如果(正如您的问题所示)约定是点是列向量,并且前 3 行的最后一个元素决定平移,那么底行的前 3 个元素不是位置偏移:变换矩阵的第 4 行用于透视投影,这是相机将 3D 点映射到 2D 视口(viewport)的方式。 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 屏幕映射的最后一步是除以第四个 (w') 坐标 - 因此,对于标准几何变换,最后一行通常应为 [0,0,0,1],使 w 坐标保持不变。

如果底行的前 3 个元素不是 0,则矩阵通常会生成奇怪的、不均匀的 3D 空间扭曲。而且,虽然可以使用最后一个元素作为统一的逆缩放因子,但最好使用左上角的 3x3 子矩阵进行缩放,并将底行专门留给相机。

关于graphics - 4x4矩阵最后一个元素的意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094634/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com