WebGL中的旋转和移动

来源:互联网 发布:淘宝店铺扣分 编辑:程序博客网 时间:2024/05/16 15:06
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]);
未旋转前,物体的自身坐标系与世界坐标系方向相同,旋转后,其自身坐标系方向发生了变化。这时进行移动操作,变换以当前的自身坐标系为基准进行。其结果类似于地球绕太阳公转。

本人是新手,有什么不对的地方还请大家多多指正啊!