左乘&右乘
来源:互联网 发布:易语言vip解析源码 编辑:程序博客网 时间:2024/05/02 06:05
对于变换矩阵R = Rz * Ry * Rx
1) 相对于参考坐标系O(固定)的变换
V’ = R * V = Rz * Ry * Rx V,对于左乘变换矩阵(从右向左进行),其变换为V向量对于参考坐标系(固定)先绕x轴旋转,再绕y轴旋转,最后绕z轴旋转,得到的新向量V’,在整个变 换过程中均是相对于同一坐标系O的x,y,z轴进行的,得到的V’也是同一参考坐标系O中的矢量。
2) 相对于当前坐标系的变换
则每个平移、旋转变换始终相对于当前坐标系(坐标系随着平移、旋转)。变换顺序为从左往右(即右乘矩阵)。对于V’ = R * V = Rz * Ry * Rx V,相当于最初的参考坐标系O,绕z轴旋转(变成O1),再绕y轴旋转(变成O2),最后绕x轴旋转(变成O3)。得到的V’是O3坐标轴中的V在原始坐 标轴O下的矢量。
所以对于同一的变化矩阵R,可以理解为两种不同的变换方法。
OpenGL对模型进行旋转、平移和缩放。用到三个子函数: glTranslate*(x, y, z) 、 glRotate*(x, y, z) 、 glScale*(x, y, z) 。每个函数都会产生一个矩阵,并右乘当前矩阵。
对与变换:
glRotatef(45.0, 0.0, 0.0, 1.0);
glTranslatef(3.0, 0.0, 0.0);
这 两个变换,可以看成:
glMultMatrixf(R);
glMultMatrixf(T);
R,T 都是右乘到CTM(当前变换矩阵):CTM = CTM * R * T
对模型变换的理解有两种:
1) 在固定坐标系下,对物体进行变换。这时候,要以相反的顺序来考虑代码中的变换函数了,它的实际过程是这样 P = CTM *( R*(T* P’))。首先对物体进行平移,平移到坐标(3.0, 0.0, 0.0)。然后,把物体相对原点绕z轴旋转45度。
2) 物体捆绑在局部坐标系下,所有的变换都是在当前坐标系进行的。这时,变换可以看成:
glRotatef(45.0, 0.0, 0.0, 1.0) 产生一个齐次矩阵 R(代表一个局部坐标系),即局部坐标系R 相对刚才开始的坐标系I(单位矩阵)作了旋转变换,绕z轴旋转了45度。
glTranslatef(3.0, 0.0, 0.0) 产生一个齐次矩阵 T (也是代表了一个局部坐标系),相对 R 坐标系沿x轴(R系)平移了3个单位,得到了自己的局部坐标系T,最后在T下进行绘制。
- 左乘&右乘
- 相似变换矩阵 左乘P逆,右乘P
- 三维变换矩阵左乘和右乘分析
- 左乘
- 利用投影算法来计算系统矩阵左乘和右乘
- 利用投影算法来计算系统矩阵左乘和右乘
- 利用投影算法来计算系统矩阵左乘和右乘
- 三维矩阵旋转、平移的左乘与右乘分析
- 矩阵变换,及其矩阵在DirectX和OpenGL中的应用中的问题:左乘/右乘、行优先/列优先
- 矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,...
- shader学习基础之十二矩阵的左乘还是右乘所导致的效果问题
- 【数学】十万个为什么(一) —— 为什么乘法会分为左乘和右乘,除法会分为左除和右除?
- OSG矩阵左乘顺序
- 【快速乘】【乘】【乘!!!!】
- 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,...
- 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,...
- 点乘 叉乘
- DirectX 11 在把矩阵(例如View矩阵)传给shader之前为什么要进行转置(相关引擎坐标系及左乘与右乘的区别总结)
- java报表软件:Oracle数据库厉行计划详解
- floyd算法解xtu_exam 1019(错解……)
- Mongodb快速入门之使用Java操作Mongodb
- php __sleep & __wakeup
- 【转】initialize解析
- 左乘&右乘
- ListView.setOnItemClickListener无效问题的解决
- VC设置静态文本控件的显示字体和显示内容
- centOS下安装五笔输入法
- Project Euler问题82
- xpath的使用
- session方法及hibernate接口
- 思考:矩阵及变换,以及矩阵在DirectX和OpenGL中的运用
- 创业型公司遇管理之殇:IPO泡汤高管作鸟兽散