WebGL中使用rotate(mvMatrix,[0,1,0])函数进行旋转操作,其旋转总是以自身为中心轴进行。使用translate(mvMatrix,[x,y,z])函数进行移动操作,其移动也是以当前物体变换后的坐标轴为基础。物体进行旋转后,其坐标轴的方向也发生了变化,其自身坐标系与物体坐标系已经不同,其移动方向以变化后的自身坐标系方向为基准。
使用两种操作时,一定要考虑两种操作的先后顺序:1、先移动后旋转mat4.translate(mvMatrix,[5,0,0]);mat4.rotate(mvMatrix,degToRad(moonAngle),[0,1,0]);
物体先移动到指定位置(此时,自身坐标系与世界坐标系相同),然后在变换后的位置绕自身坐标轴自转。其结果类似于地球的自转2、先旋转后移动mat4.rotate(mvMatrix,degToRad(moonAngle),[0,1,0]);
mat4.translate(mvMatrix,[5,0,0]);未旋转前,物体的自身坐标系与世界坐标系方向相同,旋转后,其自身坐标系方向发生了变化。这时进行移动操作,变换以当前的自身坐标系为基准进行。其结果类似于地球绕太阳公转。
本人是新手,有什么不对的地方还请大家多多指正啊!
相关文章
- 深入理解PyTorch中的train()、eval()和no_grad()
- node中的fs模块和http模块的学习
- 文本左右对齐(字符串、模拟)、螺旋矩阵 II(数组、矩阵)、二叉树中的最大路径和(树、深度优先搜索)
- Object类中equals,hashCode和toString方法的学习
- Java中Object类的equals()和hashCode()方法深入解析
- 常见数据库mysql、oracle和DB2中is null 和 =null 的区别
- android中sqlite数据库的基本使用和添加多张表
- python中的静态成员方法 和 类成员方法
- 集合中的工具类Collections和Arrays
- scala中nothing和null的区别