本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:矩阵 – 行主序矩阵与列主序矩阵
原文链接:https://www.stubbornhuang.com/771/
发布于:2020年03月20日 9:41:57
修改于:2022年07月20日 14:19:37
1 线性代数中矩阵的标准定义
矩阵的标准定义:
矩阵A与B的乘积矩阵C的第i行第j列的元素c(ij)等于A的第i行与B的第j列的对应元素乘积的和。
无论是Direct3D或者OpenGL,所表示的矢量和矩阵都是依据线性代数中的标准定义的。
2 行主序矩阵与列主序矩阵
矩阵的存储方式分为两种,一种是行主序/行优先矩阵,另一种是列主序/列优先矩阵。在Direct3D中采用行主序矩阵存储矩阵,将矩阵每一行存储到数组的每一行中。而在OpenGL中采用列主序矩阵存储,将矩阵的每一列存储到数组的每一行中。
说的有点复杂,将下面矩阵示例:
1. 标准的线性代数矩阵
- Direct3D行主序矩阵
- OpenGL列主序矩阵
3 由矩阵存储顺序引发的矩阵左乘/前乘或者右乘/后乘问题
从根本上来说,矩阵的定义是确定的,但是在不同的引擎的实现过程中对矩阵的存储方式选择了行主序矩阵或者列主序矩阵的存储方式,而由此引发了矩阵左乘或者是右乘的问题。
在线性代数中,矩阵乘法是“行*列”。
而对于行主序矩阵,通常采用前乘。
对于列主序矩阵,通常采用后乘。
4 由矩阵存储顺序引发的变换顺序问题
而这种矩阵乘法的顺序通常影响了对目标物体的变换顺序。
在OpenGL中,因为其实际上是列主序矩阵,采用列向量,所以在OpenGL中,做旋转变换时通常先处理右边的矩阵,然后再处理左边的矩阵。
在Direct3D中,因为其实际上是行主序矩阵,采用行向量,所以在Direct3D中,做旋转变换时通常先处理左边的矩阵,然后在处理右边的矩阵。
当前分类随机文章推荐
- 计算机图形学 - 大白话模型视图投影矩阵(MVP)以及各种变换空间(模型空间、世界空间、相机空间、裁剪空间、屏幕空间) 阅读1516次,点赞1次
- 矩阵 - 行主序矩阵与列主序矩阵 阅读4064次,点赞0次
- 三维旋转 - 欧拉角和旋转矩阵的基本概念以及相互转换 阅读1850次,点赞2次
- 计算机图形学 - 三维空间中的左、右手坐标系旋转矩阵与旋转变换 阅读8403次,点赞4次
- 旋转矩阵与四元数的转换 阅读6932次,点赞4次
- 三维旋转 - 四元数的基本概念以及四元数与欧拉角、旋转矩阵的相互转换 阅读987次,点赞1次
- 计算机图形学 - 常用的3D数学知识备忘,如三角函数、向量运算、矩阵运算、图形学常用的平移缩放旋转矩阵,视图矩阵,投影矩阵 阅读1356次,点赞4次
- 计算机图形学 - 3D数学入门之坐标系 阅读1122次,点赞0次
全站随机文章推荐
- Python - 获取当前时间字符串 阅读1082次,点赞0次
- 资源分享 - Discrete and Computational Geometry 英文高清PDF下载 阅读1709次,点赞0次
- Windows - OneDrive登录出现0x8019001错误 阅读381次,点赞0次
- Python - 获取指定文件夹及其所有子文件夹、孙文件夹下指定文件类型的文件路径 阅读189次,点赞0次
- WordPress - 查看别人的网站是用的WordPress的哪个主题 阅读3227次,点赞0次
- ThreeJS - 获取当前使用的three.js的版本 阅读518次,点赞0次
- 资源分享 - GPU Pro 1 - Advanced Rendering Techniques 英文高清PDF下载 阅读3076次,点赞0次
- UnrealEngine4 - 获取UE4最后的渲染缓存数据BackBuffer 阅读5308次,点赞3次
- 资源分享 - Mathematics for Computer Graphics , Fourth Edition 英文高清PDF下载 阅读1728次,点赞0次
- 资源分享 - Vector Analysis for Computer Graphics , First Edition 英文高清PDF下载 阅读1254次,点赞0次
评论
169