WEB开发网
开发学院图形图像Flash Flash与3D编程探秘(四)- 摄像机旋转基础知识 阅读

Flash与3D编程探秘(四)- 摄像机旋转基础知识

 2008-11-12 11:51:27 来源:WEB开发网   
核心提示: 反三角函数 在Flash里,我们可以通过直角三角形的两个边的比率得到角度,Flash与3D编程探秘(四)- 摄像机旋转基础知识(3),用下面的代码即可:angle=Math.atan2(object.y,object.x);angle=Math.atan(y/x);还有一个要说明的那就是勾

反三角函数

在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

上一页  1 2 3 

Tags:Flash 编程 探秘

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接