Rhzhi.Net 主页 | 访问新版
rhzhi.net
网站首页 | 软件新闻 | 操作系统 | 工具软件 | 办公软件 | 网站设计 | 组网专栏 | 平面设计 | 多 媒 体 | 程序开发 | 硬件资料 | 聊天软件
栏 目 索 引
首页 -> 网站设计-> Flash-->文章正文
FLASH_3D教程——从头开始
eNet
2005-8-11 文/kianxin




利用数学中的正弦、余弦公式得出

  x1=r*cos(a+b),而cos(a+b)=sina*cosb+cosa*sinb

  推出:x1=r(cosa*cosb-sina*sinb)

  又因为x=r*cosa,y=r*sina

  所以x1=x*cosb-y*sinb

  同样推出:y1=y*cosb+x*sinb

  这就是z旋转的公式。用同样的方法可推出x旋转,y旋转的公式。总结如下:

给定点:(x,y,z)

绕x轴旋转后的点(x1,y1,z1)
绕y轴旋转后的点(x2,y2,z2)
绕z轴旋转后的点(x3,y3,z3)

 x旋转(x不变)
 x1=x
 y1=y*cosb-z*sinb
 z1=z*cosb+y*sinb

注:x旋转要注意,在FLASH中x1=x
 y1=y*cosb+z*sinb
 z1=z*cosb-y*sinb

是先加后减,因为FLASH里的Y轴是反的,箭头向下的。










 y旋转(y不变)
 x2=x*cosb-z1*sinb
 y2=y1
 z2=z1*cosb+x*sinb

 z旋转(z不变)
 x3=x2*cosb-y1*sinb
 y3=y1*cosb+x2*sinb
 z3=z2

 从以上公式可看出,在flash要实现旋转,先要求x轴的旋转点,再求y轴的旋转点,最后再求出z轴的旋转点。最后我们来一个x旋转的应用

三、制作x轴旋转的正方体

  1、在场景中画一小球,并按F8转换为mc,实例命名为qiu。

  2、增加一层,命名为as,接下去我们来写as,如下:

_root.onLoad = function() {
shumu = 8;
// 定义复制小球的数目
qiu._x = 6000;
// 让原始小球消失
for (var i = 0; iduplicateMovieClip("qiu", "qiu"+i, i);
}
// 复制小球,作为正方体的八个顶点
qiu_pos_x = new Array(100, 0, 0, 100, 100, 0, 0, 100);
qiu_pos_y = new Array(100, 100, 100, 100, 0, 0, 0, 0);
qiu_pos_z = new Array(50, 50, -50, -50, 50, 50, -50, -50);
// 从三维坐标中取正方体的8个顶点的坐标,保存在数组中
D = 200;
// 观察者与屏幕的距离
hutu = 0.001;
// 控制旋转的速度
b = hutu*180/Math.PI;
// 角、弧度的转换
};
_root.onEnterFrame = function() {

for (var i = 0; ix1 = qiu_pos_x[i];
y1 = qiu_pos_y[i]*Math.cos(b)-qiu_pos_z[i]*Math.sin(b);
z1 = qiu_pos_z[i]*Math.cos(b)+qiu_pos_y[i]*Math.sin(b);
// 按公式计算
qiu_pos_x[i] = x1;
qiu_pos_y[i] = y1;
qiu_pos_z[i] = z1;
// 更新数组元素
ratio = D/(D+z1);
perspective_x = x1*ratio;
perspective_y = y1*ratio;
// 按公式计算
_root["qiu"+i]._x = 275+perspective_x;
_root["qiu"+i]._y = 200-perspective_y;
/ 设置球的坐标
_root["qiu"+i]._xscale = _root["qiu"+i]._yscale=50*ratio;
// 球的大小
_root["qiu"+i].swapDepths(10000-qiu_pos_z[i]);
// 球的层次
_root["qiu"+i]._alpha=100*ratio;//设置透明度

}
};

文章页数:[1] [2] [3] [4] [5] [6] [7] 



相关文章
打印此页 投稿与建议 返回顶部
关于我们 - 联系方式 - 合作伙伴 - 网站大事记 - 网站地图 - 我要投稿
Copyright © 1997-2008 先创网 All Rights Reserved.
先创科技 版权所有