第四排VP Matrix

时间:2016-06-02 11:20:11

标签: c++ matrix-multiplication glm-math

如果有关于矩阵乘法的问题。 存储在View Projection Matrix第四行的信息是什么? 我认为旋转和缩放信息存储在上面的3x3矩阵中,然后在第四列中进行平移,最后一个元素设置为1。 我很难挣扎,因为我得到了我的VP矩阵的结果:

当不应用旋转且不进行平移时(注意所有值都被舍入):

<td>
                       @foreach (var item in _usrArticleIDs)
                        {
                            _hasUserArticleIDInArticleTemplate = _articleTemplateIDs.Exists(s => item.Equals(s));//valuesToCheck=_articleTemplateIDs
                            if (_hasUserArticleIDInArticleTemplate)
                            {
                                @_hasUserArticleIDInArticleTemplate
                            }
                            else
                            {
                                @_hasUserArticleIDInArticleTemplate
                            }
                        }

按-100应用翻译:

0.34 0 0 0
0 0.61 0 0
0 0 -1 -0.2
0 0 -1 0

通过-100平移,然后在正X轴上旋转30°,然后在正Y轴上旋转180°:

0.34 0 0 0
0 0.61 0 -61.73
0 0 -1 -0.2
0 0 -1 0

它看起来不对我。有趣的部分:它有效。那么这条线的信息是什么?

-0.34 0 -3 0
0 0.53 0.3 -53.46
0 -0.5 0.86 49.8
0 -0.5 0.8 50

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

对我来说,你的矩阵看起来有点奇怪。通常,第四行将包含齐次坐标系的第4个分量,即[x,y,z]/w之类的东西,需要在整行中加起来为仿射变换。我猜你的矩阵是有效的,因为你的第四行中的奇数被分解到矩阵的上3x3部分。您是否尝试更改矩阵连接的顺序,例如M'=M1*M0M'=M0*M1。 Jim Blinn在他的Dirty Pixels和文章中给出了齐次坐标的一个非常好的解释。

Also, this website contains a good walkthrough regarding homogeneous transforms