PV3d_三个旋转函数的讲解:pitch()、yaw()、roll()

来源:互联网 发布:lee淘宝代购是真的吗 编辑:程序博客网 时间:2024/06/03 19:34

替代本地旋转-pitch()、yaw()、roll()
本地旋转与以下三个方法是同行:
? pitch():将物体绕X轴旋转(localRotationX)
? yaw():将物体绕Y轴旋转(localRotationY)
? roll():将物体绕Z轴旋转(localRotationZ)
每个方法需要接收一个指明旋转角度的参数。除了一个是方法,另一个是属性外,它们之间还有另一个重要的不同点。
 每当本地属性被设置成新值的时候,旋转的值是绝对的。比如你要将do3D对象绕y轴旋转,Flash执行以下两行时,只会旋转10度而不是45度:
--code
 do3D.localRotationY = 35;
 do3D.localRotationY = 10;

--code
 然后对于localRotationY的同行yaw()来说,旋转的值总是相对于当前的旋转值来说的,比如在init()方法中的以下两行来说,它就会让do3D对象旋转45度:
--code
 do3D.yaw(35);
 do3D.yaw(10);

******************************************************************************************************************************************************************************************************

  *********    (localRotationX,localRotationZ,localRotationY和flash里rotationX rotationY rotationZ一样,意思距(x=0,y=0,z=0)轴所旋转的角度)  即他们的值对应的角度是确定的!(相当于坐标一样确定)

  *********     pitch()、yaw()、roll()则是在原来的基础上继续增加角度(即 nowAngle+=参数角度)


******************************************************************************************************************************************************************************************************
--code

 
 pitch()、yaw()和roll()方法当然也可以在render方法中使用。那样的话,当前的旋转值会通过传入的参数值每一帧产生相应的变化。将下面的代码加到render方法中会使do3D对象每一帧旋转一度。
--code
 do3D.yaw(1);
--code
 这和将下一行代码加入到render方法中的效果一样:
--code
 plane.localRotationY++;
--code
 pitch()和localRotationX、roll()和localRotationZ之间的区别和上面提到的是一样的。

原创粉丝点击