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; i removeMovieClip(a); } for (i=0; 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 蝴蝶飞舞的效果下一篇: 4个数字的混合运算得固定结果的可能性
关于3D球棍模型的所有评论