0

我查看了几个资源,例如http://antongerdelan.net/teaching/3dprog1/maths_cheat_sheet.pdf

我发现我应该使用列主要排序,当我发现这个问题的答案时就会出现混乱

为什么我的翻译矩阵需要转置?

答案显示了列主要排序中的翻译矩阵,但先前的资源显示了列主要排序中的翻译矩阵,它似乎是此答案中显示的转置矩阵。

我知道这个答案中的矩阵是正确的,因为我已经尝试过了并且我的转换有效。我试图找到的是列主要比例、旋转和透视矩阵,也是用这种 c++ 数组样式表示法编写的,而不是第一个资源中的那个。

4

1 回答 1

2

根据仔细阅读

为什么我的翻译矩阵需要转置?

不同之处在于您正在查看的第一页向您展示了矩阵的数学符号,其中每一列都沿垂直线排列;而您正在查看的另一个符号是一系列字符,类似于您的 C++ 代码中可能出现的内容。还有许多其他差异,例如数学符号中的高方括号(无法在 C++ 代码中精确再现,因为没有跨越多行的字符),以及数字之间没有逗号的事实数学符号。

但主要的是,由于矩阵以列优先顺序存储,如果您按照它们的存储顺序初始化条目(例如通过使用符号从逗号分隔列表中初始化数组),那么x, y, z, 和1将是您将在矩阵中设置的最后四个条目。并且由于 C++ 总是被解析为从左到右读取的线性字符串(当您查看列表时,解析器不关心哪个数字恰好位于其他数字的正下方),如果您碰巧格式化了一个包含 16 个值的列表4 行,每行 4 个值,列表中的最后四个值是格式最后一行的值。

于 2014-04-08T17:53:42.510 回答