




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HTML5实现3D球效果 曲终人即散,每当看到这个词汇总是略感的伤感。现在的我们周围的生活节奏是如此之快,尤其是生活在北京这个经济高速发展的地方。有时曲可能尚未终,可是人已经散!当我们下班后漫步在繁华都市的夜幕之下,总是略感孤独和伤感。或许是由于工作压力,也或许是因为亲人爱人不在身边,更或许是自己的心一次次的被冲击。京城周末的夜晚丝毫没有因为是夜晚而变得静谧,而我总是急匆匆的上了回家的夜班车。或许我应该停下脚步去聆听、去感受、去享受,但是我却找不到一个这样的地方,唯独小区里的那张长长的木椅。喧嚣的夜幕总是让我想起电视上看见的迪厅里悬挂的那个水晶球,如此的耀眼,如此的抢眼。人们在球的衬托下排遣着自己的疲惫,宣泄着自己的寂寞,放纵着自己的形态 作为IT小生制造那支能够在头顶上旋转的球有一定难度,但可以让其在电脑中为人们表演。 这篇博客描述的是如何实现一个3D球的效果,主要是通过HTML5里面的canvas来实现。整片文章属于原创若有相同纯属有缘,在做这个效果之前简略的学习了一下3D数学基础收获颇丰,因为大学里面学的数学基本上都还给了老师。闲话少说,先看实现的效果如图一:图一 要想使得整个球动起来,需要先激活。然后再改变他的旋转方向或者改变这个小球的半径。看启动后的效果,如图二:图二 这里为什么要设定一个2秒冻结,因为如果立刻冻结的话整个求的样式就无法及时改变所以就采取了这样一个迂回之策。详见代码如下:再回首,那只小球已停止转动HTML5实现3D球效果 #box border:2px solid #f60; margin:0 auto; var spaceX = 30; /X方向的密度var spaceY = 30; /Y方向的密度var PI = Math.PI; /数学角度var radius = 200; /球的半径var radian = PI / 180; /弧度var speedX = 0; /X方向的速度var speedY = 0; /Y方向的速度var offsetX = 300; /X方向的偏移量相当于将球的中心X坐标移之到画布中央var offsetY = 300; /Y方向的偏移量相当于将球的中心Y坐标移之到画布中央var spheres = new Array(); /存储像素点var canvas; /画布var context; /上下文var focalLength = 300; /控制球距离屏幕的距离var start = true; /是否启动var sx = 0; /sinxvar cx = 0; /cosxvar sy = 0; /sinyvar cy = 0; /cosyvar sz = 0; /sinzvar cz = 0; /coszvar innerStaColor = GREEN; /表示内部颜色var outerStaColor = RED; /外部颜色var objectRadius = 10; /绘制原点半径var scaleRatio = 0;var cameraView = x: 0,y: 0,z: 0,rotX: 0,rotY: 0,rotZ: 0; /视角角度/*author:qingfeileedate:2012-03-28description:初始化系统画布信息*/function initCanvas() try canvas = document.getElementById(sphere);context = canvas.getContext(2d);catch(e) document.getElementById(tip_info).innerHTML = 您的浏览器不支持!; /*author:qingfeileedate:2012-03-28description:初始化小球实体*/function initSphere() for (var i = spaceY; i 180; i += spaceY) for (var angle = 0; angle .5) object.glow -= .02;var sphereStyle = context.createRadialGradient(offsetX + object.x * scaleRatio, offsetY + object.y * scaleRatio, scaleRatio * .5, offsetX + object.x * scaleRatio, offsetY + object.y * scaleRatio, scaleRatio * objectRadius * .5);sphereStyle.addColorStop(0, innerStaColor);sphereStyle.addColorStop(object.glow, outerStaColor);sphereStyle.addColorStop(1, rgba(0,0,0,0);context.fillStyle = sphereStyle;context.fillRect(offsetX + object.x * scaleRatio - scaleRatio * objectRadius * .5, offsetY + object.y * scaleRatio - scaleRatio * objectRadius * .5, scaleRatio * objectRadius, scaleRatio * objectRadius); document.getElementById(tip_info).innerHTML = 当前速度:+speedX+ + speedY+ 小球半径:+objectRadius; /*author:qingfeileedate:2012-03-28description:冻结/激活真个大球状态*/function startOrPause() if (start) setTimeout(function() start = false;,2000);document.getElementById(swi).innerHTML = 激活;innerStaColor = GREEN;outerStaColor = RED; else start = true;document.getElementById(swi).innerHTML = 2秒后冻结;innerStaColor = RED;outerStaColor = GREEN;/*author:qingfeileedate:2012-03-28description:改变球的大小*/function changeObjectRadius(val) this.objectRadius = val;window.addEventListener(load, init, true); 激活向东向西向南向北小球大小:详情见阿飞blog 仅仅看代码可能一时半会看不出端倪,下面将这块儿的几何图形贴上供参考,由于非常外行所以图形画的比较粗糙,如下图三:图三通过上面的图形我们很容易得出initSphere函数里面的一些计算。这样就可以将球的各个点进行了初始化。 然后就是旋转,我们以绕Y轴旋转为例。假设当前时刻某点P(X,Y,Z)绕Y轴旋转度,到P1(X1,Y1,Z1)这两者有何关系呢?不再赘述直接给出公式:X1 = X*cos + Z*sin;Y1 = Y;Z1=-X*sin+Z*cos不懂的复习一下高等书写,O(_)O哈哈。绕其他轴旋转同理,这样就得到了update方法里面的算法。当然在3D中还存在一个视角角度,就相当于摄像机一样,本例子中默认是是0,0,0。 由代码注释较详细,具体就不再赘述。哪位大牛有好
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第四单元 多姿多彩的乐音世界 第3课时《红梅赞》教学设计-2025-2026学年湘艺版(2024)初中音乐八年级上册
- 船舶水性水线漆项目可行性研究报告
- 涂膜市场竞争态势分析报告
- 防汛救灾知识培训课件
- 防汛抢险基本知识培训课件
- 语文9哲学家的思考
- 医疗服务合同
- 建设项目全过程造价咨询服务合同4篇
- 家具买卖合同样本2篇
- 河北省秦皇岛市实验中学2025-2026学年高二上学期开学考试物理试卷
- 《资治通鉴》与为将之道知到课后答案智慧树章节测试答案2025年春武警指挥学院
- 劳动合同范本合同模板
- 2025-2030年口红色彩创新设计行业跨境出海战略研究报告
- 2025年个体经营户劳务合同(五篇)
- 2025年公务员遴选结构化面试万能修订稿
- 《母婴店促销方案》课件
- 《异种钢焊接问题》课件
- 电商行业农产品电商运营与推广策略方案
- 手术室的5s管理
- 安全注射院感
- 急性肠梗阻病人的护理
评论
0/150
提交评论