前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数学笔记(一)之列主序矩阵

数学笔记(一)之列主序矩阵

作者头像
用户2615200
发布2018-08-02 16:57:44
1.1K0
发布2018-08-02 16:57:44
举报
文章被收录于专栏:tkokof 的技术,小趣及杂念

* 引子 数学相关的东西,随便记记 :)~

对于矩阵,OpenGL采用列主序(column-major order)存储,之前对于这个概念有些模糊,后来又了解了一些相关知识,在此一记~

首先是数学概念上的矩阵,这是根据标准定义的,譬如一个4*4的矩阵,可表示为:

  而采用列主序存储,则可以理解为一种矩阵在计算机中的实现方式,或者更确切的说,是存储方式,即虽然在数学上明确定义了矩阵的表示方式,但是在计算机中怎么实现(或者说存储)则是另一个问题,列主序存储就是这个问题的一种解决方法~(感觉颇像UnicodeUTF-8的关系:))

  而所谓列主序的方式,就是以矩阵列为优先来存储矩阵元素,拿C/C++中的数组举例,如果要存储上述的4*4矩阵,那么内存中的布局应该是这个样子的~

  更具体的例子可以参考Cocos2d-x中的Mat4类(来自于GamePlay3D),譬如矩阵变换(列)向量:

代码语言:javascript
复制
inline void MathUtilC::transformVec4(const float* m, const float* v, float* dst)
{
    // Handle case where v == dst.
    float x = v[0] * m[0] + v[1] * m[4] + v[2] * m[8] + v[3] * m[12];
    float y = v[0] * m[1] + v[1] * m[5] + v[2] * m[9] + v[3] * m[13];
    float z = v[0] * m[2] + v[1] * m[6] + v[2] * m[10] + v[3] * m[14];
    float w = v[0] * m[3] + v[1] * m[7] + v[2] * m[11] + v[3] * m[15];
    
    dst[0] = x;
    dst[1] = y;
    dst[2] = z;
    dst[3] = w;
}

  拿上面 x 的计算来说,其所取的矩阵元素索引分别为0,4,8,12,正是m11,m12,m13以及m14 ~

  That's it ~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年11月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档