快速业务通道

3D球棍模型

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-11
;
// 创建一个空MC,并画一直线作为小棍
a = this.createEmptyMovieClip("gun"+min_m, j++);
a.lineStyle(3, 0xaaaaaa, 50);
a.moveTo((gun[min_m].svx+ox), (gun[min_m].svy+oy));
a.lineTo((gun[min_m].evx+ox), (gun[min_m].evy+oy));
}
// 从vdot中删去最小点,以便于下一轮寻找min点
deeps.splice(min_n, 1);
}
}
//
//
// 清除所有小球和小棍
function cl_all() {
var i,a;
for (i=0; ia = this["dot"+i];
removeMovieClip(a);
}
for (i=0; ia = this["gun"+i];
removeMovieClip(a);
}
}
//
// 主调程序段:
this.onEnterFrame = function() {
// 绕x轴的转角
theta_x = (_ymouse-oy)/20;
// 绕z轴的转角
theta_z = (_xmouse-ox)/20;
// 旋转物体
rotate(theta_x, theta_z);
// 显示
get_v();
};
//
可能不少人觉得上面的代码很吓人,不要急。
其实我在一年前对3d的东东也是一无所知,后来看到有人用Flash搞分子结构式,于是我也开始构思,谁让我是搞化学的呢,看了些图形学的书,可是数学基础不好,看了也不太明了,直到前几天,总算勉强把程序搞出来了,至今都还有些地方不太明了,最开始只有小球,不知道怎么解决小棍的消隐问题,后来又慢慢改进,扩充功能,最后就变成这个样子了。最开始时照着书上的方法用矩阵变换做,后来觉得矩阵计算效率低,就直接用变换公式。对于消隐,书上是将深度进行排序,而我是找出深度最大值,用完后即刻删除,好在Flash里面的"数组"不是什么真数组,元素是可以删除的。另外数据的结构也是经过了多次修改和扩充,现在觉得有些太浪费空间,也懒得管了。

综上,这个程序不是一步到位的,是走了很多弯路才实现的,看不懂的人不要急,先理解大致思路,然后逐步细分,各个击破。
扩充功能
1。提供3种显示方式:V1--鼠标跟随,V2--绕Z轴匀速旋转,V3--固定不动
2。可以进行编辑操作:点击小球可选中小球,点击右下角的空白按钮可取消选择。在输入框中输入数据,然后点击一个操作按钮:dx,dy,dz分别是将小球的x,y,z值加上输入值;X,Y,Z分别是将小球的x,y,z值直接变为输入值;Rx,Rz则是分别将输入值作为x,z轴的旋转角。
点击浏览该文件
源文件:
点击浏览该文件
优化之后
对消隐部分作了根本性的改变,使执行效率有大大提高。另外,小棍也添加了雾化效果。 源文件(2004版)中有很详细的注释。
点击浏览该文件
点击浏览该文件 关键词:3D

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号