Flash与3D编程探秘(四)- 摄像机旋转基础知识
2008-11-12 11:51:27 来源:WEB开发网反三角函数
在Flash里,我们可以通过直角三角形的两个边的比率得到角度,用下面的代码即可:
angle=Math.atan2(object.y,object.x);
angle=Math.atan(y/x);
还有一个要说明的那就是勾股定理:
hypotenuse=Math.sqrt(x*x+y*y);
那么你现在已经具备2D旋转的基本知识了,我们再看一下3D,3D旋转中加进了z轴,hum,那么我们就把xy平面,yz平面,zx平面的旋转组合起来,就得到摄像机的全方位旋转。不过指得注意的是,三角法不能直接运用到我们的摄像机旋转中,我们可以在横向旋转摄像机的时候保持摄像机的旋转角度不变,取而代之我们旋转x和z轴,要旋转180度的话,我们可是使z旋转到x的位置然后再转到z的位置,同时保持y轴不动。
旋转x和z轴
横向旋转摄像机
上面讲述了一些旋转摄像机的原理,我们更关心的是如何使用这些原理来解决问题。联想一下实际,对于摄像机的横向旋转来说,摄像机的所在位置的高度y,深度z和横向x都是保持不变的,唯一改变的就是摄像机的旋转角度。也就是说当一个空间中的物体在位置不变的情况下,摄像机与它的距离是不变的,于是我们的问题转化成在角度变化的情况下保证它们的距离不变。我们设旋转后的角度为a,那么物体所在的x和y(以摄像机为原点建立坐标系)就是:
x=distance*Math.cos(a);
y=distance*Math.sin(a);
如果我们摄像机所在的坐标为(x0,y0)的话,我们就可以得到物体所在的坐标(还是上面讲过的公式):
x=x0+distance*Math.cos(a);
y=y0+distance*Math.sin(a);
以上所述的仅是对一个物体的操作,同样道理我们对所有舞台上的物体进行操作,那么我们所看到的就是我们摄像机旋转后的景象。
对比旋转物体和旋转摄像机
在上面的动画中,我们俯瞰整个场景,对比一下旋转摄像机和旋转舞台上所有物体的差异。当然对于其他的平面(纵向旋转摄像机)来说,我们可以运用相同的理论对物体进行操作。那么,你应该有种感觉你已经具备所有摄像机旋转的理论知识了,不过还有一小点,我们将在下一篇文章进行分析。
相关文章:
Flash与3D编程探秘(七)- 3D物体框架
Flash与3D编程探秘(六)- 全方位旋转摄像机
Flash与3D编程探秘(一)- Flash与3D空间
Flash与3D编程探秘(五)- 摄像机旋转和移动
Flash与3D编程探秘(四)- 摄像机旋转基础知识
Flash与3D编程探秘(三)- 摄像机(Camera)
作者:YangZhou
出处:http://yangzhou1030.cnblogs.com/
感谢:Yunqing
- ››flash文件的压缩方法(swf文件压缩瘦身)
- ››Flash鼠绘教程:临摹徐悲鸿的骏马图
- ››Flash实例:AS3制作茶杯震动动画
- ››Flash AS 3.0实例教程:Main类打造发散效果
- ››Flash cs3仿真艺术设计3.6:运用遮罩打造焦点效果...
- ››Flash cs3仿真艺术设计4.1:阴影的基本运用
- ››Flash CS4教程:3d工具实例和骨骼工具
- ››flash加载外部文本文件的3种方法
- ››flash在有限的页面内制作大的地图
- ››Flash教程:AS代码制作计时器方法
- ››Flash AS教程:propertydata问题解决
- ››FlashFXP v4.0.0 Build 1486 RC2 [烈火汉化]
更多精彩
赞助商链接