OpenGL中的矩阵相乘的顺序

转载 2012年03月27日 09:14:24

原文来自:

http://blog.csdn.net/dizuo/article/details/2325279

1,在OpenGL中所有的视图变换,模型变换 都是4×4矩阵,每个后续的glMultiMatrix*(N),或者变换函数,glTranslate*(),glRotate*(),等都是把一个新的4×4矩阵与当前的矩阵M相乘,不同的是:变换函数glTranslate*(),glRotate*()等会根据函数参数构造一个4×4矩阵,也设为N,两种情况产生相同的结果:M×N。注意这里的顺序,后续的矩阵是右乘当前矩阵。


2,因为在opengl中坐标表示形式是:[x,y,z]T(表示转置),或者齐次坐标下:[x,y,z,w]T标准化后[x/w,y/w,z/w,1.0]T 这就决定了矩阵也是列优先表示的。将上面的两个矩阵作用于点V,则表示为:M×N×V;满足矩阵相乘的条件:[4×4 ] * [4×1].
举个例子:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glMultMatrixf(M);           //glScale*();
glMultMatrixf(N);           //glRotate*()
glMultMatrixf(L);           //glTranslate*();
glBegin(GL_POINTS);
glVertex3f(V);
glEnd();

    按照上面的语句,经过变换的顶点是:M×N×L×V, 始终是右乘.
注意下面的例子:

glMatrixMode(L_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, 1.0, 1.0, 20.);   //创建投影矩阵Mp;
glMultMatrixf(Ms);

    产生的结果是:Mp×Ms×V(顶点);
    但是如果你想要结果是:Ms×Mp×V(顶点);代码是:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMultMatrixf(Ms);
gluPerspective(45.0, 1.0, 1.0, 20.);   //创建投影矩阵Mp;

openGL中矩阵相乘的顺序

http://blog.csdn.net/ryfdizuo/article/details/2325279 1,在OpenGL中所有的视图变换,模型变换 都是4×4矩阵,每个后续的glMul...

OpenGL数学基础之矩阵

三维空间物体的运动使用变换来表示,包括三种:平移变换(translate),旋转变换(rolate),伸缩变换(scale),变换量可以使用4x4的矩阵(Matrix)表示,变换过程就是对物体的所有顶...

详解MVP矩阵之齐次坐标和ModelMatrix

其次坐标(Homogeneous Coordinates)其次坐标这个概念在第一次看real-time rendering 这本书的时候就有提起到,但当时看的一头雾水,只知道其次坐标在某些计算中比较方...

OpenGL 矩阵变换(讲的太好了~!)

Overview 几何数据——顶点位置,和标准向量(normal vectors),在OpenGL 管道raterization 处理过程之前可通过顶点操作(Vertex Operation)和基本...

动态规划--矩阵连乘的最优乘法顺序

载自:蓝飞技术部落格 最优矩阵连乘积 Accepted: 10 Total Submit: 18 Time Limit: 1000ms Memony Limit: 32768KB Descri...
  • cs064
  • cs064
  • 2013年10月03日 10:46
  • 2957

矩阵链乘法确定矩阵的最佳计算顺序

对于4个矩阵的乘法: A   *   B   *   C   *   D     20*2   2*30    30*12   12*8 由于矩阵的乘法无关紧要,对上述的乘法可以产生5种不同的顺序,每...
  • winycg
  • winycg
  • 2017年03月30日 23:24
  • 663

动态规划算法——矩阵乘法的顺序安排

动态是解决递归过程的大量冗余计算的缺点,其采用把子问题的答案系统的记录在一个表中,当计算后面的问题是用到前面的结果可以直接到表中查找,而无需再递归重新计算。     比如:斐波那契数是一个常见的递归计...

[OpenGL]矩阵乘法引发的血案

最近被矩阵乘法折腾的死去活来,感觉要打回去重新学线代了。Matrix定义OpenGL中Matrix被定义成一个列主序的矩阵,大小为3x3或者4x4/** * Matrix math utilitie...

行逻辑链接的顺序表实现稀疏矩阵的相乘(Java语言描述)

行逻辑链接,带行链接信息。程序有空指针BUG,至今
  • wxisme
  • wxisme
  • 2014年10月16日 22:11
  • 818
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenGL中的矩阵相乘的顺序
举报原因:
原因补充:

(最多只允许输入30个字)