很早就有人做3D网页版的化学元素周期表了,酷炫效果和新鲜技巧一度被众多粉丝奉为神明,争相研究和效仿。甚至有人放弃一切扑向这颗蜡烛,不由总是想到那个OPPO广告女主角拽拽的鄙视道:“辞职去旅游!你敢吗?”
俺不敢,不过用TWaver做一个也没用几个小时。所以就老在想:不就旅个游么,至于嘛?
这个3D元素周期表做了一些改进:卡片上增加了汉字及拼音读音,原因你懂得——各位程序猿没几个敢大声读这些汉字的。还好每个字的主要部分还大都认识,多少可以小声蒙一下,加上拼音就少了许多尴尬。另外在形状布局和特效上也丰富了一点,具体可以看下方视频连接。
技术上来说,用TWaver 3D来做的思路略有不同。最开始网上这个程序是使用HTML5、CSS3、WebGL、THREE.js、TWEEN.js等技术做的。使用TWaver就不用这么麻烦了,直接一个mono.js就差不多搞定了。技术上依旧是WebGL+js,但没有使用CSS3和其他框架。效果和效率都很好。
实现上难度不大,大概思路如下:
- 用数组定义好化学元素周期表的数据。包括编号、汉字、拼音、数值、英文等等。然后在内存中动态生成每个元素对应的图片卡,并转成base64格式的内存url字符串。注意图片的格式、透明度、颜色等细节;
- 为每个化学元素new一个3D立方体,并把内存图片贴图到立方体正面。立方体的厚度0就行了,其他面都透明即可;
- 监听鼠标事件。当鼠标over每个物体时,让立方体发光;点击物体时,让立方体动画反转一圈;
- 计算好几个形状布局对应的空间坐标,并事先记录到每个立方体的client属性表中。例如:node.setClient(‘grid’,{x:100,y:340});
- 放几个按钮,每个按钮点击后,让所有的立方体到对应的形状的位置上去,同时启用动画机制;
实际代码中,也要留意一些注意事项:
- 动画:当第一次动画尚未执行完毕,用户又点击其他按钮执行新动画时,需要先判断当前有无正在运行的动画,并及时让动画停止。同时还要判断是否需要把数值恢复成初始值或动画正常结束所设定的值。这里如不仔细处理,可能会导致动画将卡片的位置、角度错乱。
- 布局:球形、螺旋、随机等空间点其实都很好计算。尤其球形布局,开始大家可能会去寻找“在一个半径为r的球形表面均匀散布n个点,求每个点的坐标?”这样的题目。这样就把问题复杂化了。因为简单的视觉布局并不需要特别严谨的位置数值,所以大致把球进行径向和横向切片进行数值插入即可;
- 贴图:最开始,我们可能会觉得程序是使用了100张小图片进行贴图。但实际上,由于每个卡片的区别仅仅是文字,所以完全可以在内存动态生成。这样速度快节省了网络下载图片的时间以及维护图片的麻烦,同时文字和图片等样式也更容易控制。这也都是HTML5的canvas技术为大家带来的好处。
- 物体朝向:在布局过程中,每个卡片的旋转和朝向是一个要考虑的问题。例如球形,每个卡片要面向球形圆心发射线的外方向,螺旋形卡片则朝向水平外方向,等等。计算这些坐标和角度需要很多数学运算,光是求坐标系和直角坐标系转换之类的就够大家忙活一阵子了。而用TWaver就简单了:每个物体直接lookAt一个点就行了。例如球形卡片,每帧动画只要执行:node.lookAt(0,0,0)就行了,对吗?还不完全对。这样lookAt到中心点,不就“屁股”朝外了吗?用户看到的字是卡片的背面,是反的。要解决也简单,应当让它lookAt自己坐标两倍的地方,也就是圆心放射线的外面:node.lookAt(x*2, y*2, z*2),这样就对了。
- 发光。鼠标over每个物体,都会看到发光。而鼠标over在光晕位置,却不会触发over事件。这是怎么做到的呢?其实也是小技俩,大家可以看看程序,自己研究吧。
生成内存图片代码片段:
1 |
var url = canvas.toDataURL( "image/png" );
|
2 |
node.setStyle( 'front.m.texture.image' ,url);
|
球形布局坐标计算代码片段:
1 |
var radius= 1000 ;
|
2 |
var phi = Math.acos( - 1 + ( 2 * index ) / total );
|
3 |
var theta = Math.sqrt( total * Math.PI ) * phi; |
4 |
var x = radius * Math.cos( theta ) * Math.sin( phi ); |
5 |
var y = radius * Math.sin( theta ) * Math.sin( phi ); |
6 |
var z = radius * Math.cos( phi ); |
程序和源代码都已经在TWaver的MONO DESIGN产品中,感兴趣的朋友可以登录在线网址www.mono-design.cn或下载产品包。赶紧试试吧!
相关推荐
化学元素周期表中文版-2024年更新至最新-PDF可高清打印
在实际应用中,3D元素周期表不仅可以作为教育工具,帮助学生更直观地理解元素周期性的规律,还可以激发他们对化学的兴趣。同时,对于化学教师来说,这种交互式的学习资源可以提高课堂的互动性,提升教学效果。 总的...
化学元素周期表口诀10分钟全背 本文将详细解释化学元素周期表口诀的相关知识点,该知识点可以帮助学生快速记忆化学元素周期表。 周期表的重要性 化学元素周期表是化学领域的基础知识之一,对于化学学习和研究具有...
3D元素周期表是化学教育中的一个创新工具,它通过立体的方式呈现化学元素,使学习者能更直观地理解元素之间的关系和排列规律。下面将详细探讨这一知识点。 首先,3D元素周期表的设计通常基于WebGL技术,这是HTML5的...
化学元素周期表是1869年俄国科学家门捷列夫(Dmitri Mendeleev)首创的,他将当时已知的63种元素依原子量大小并以表的形式排列,把有相似化学性质的元素放在同一行,就是元素周期表的雏形,在周期表中,元素是以元素的...
2. 化学元素周期表:化学元素周期表是化学领域中用于展示元素之间关系的一种图表,它按照原子序数递增的顺序排列,且根据元素的电子层结构和化学性质把它们分为若干个周期和族。元素周期表是化学、物理学、材料科学...
"BatFor_3D元素周期表.zip"是一个创新性的项目,它将化学元素周期表与前沿的Web技术相结合,为用户带来了全新的学习体验。这个项目不仅是一个实用的教学工具,更是一个展示JavaScript(Js)和three.js库强大功能的...
化学元素周期表exe版本,使用更方便。
HTML5超炫3D元素周期表三维图片墙模板源码,代码上手简单,代码独立,可以直接使用。也可直接预览效果。别再犹豫了,一起加入这个源码的世界吧!博主提供各种支持,欢迎合作共赢。 效果演示地址: ...
适合所有人
《炫酷的化学元素周期表》是一个以特效和JavaScript技术实现的互动学习工具,它将传统的化学元素周期表以一种动态、引人入胜的方式展现出来,为学习化学的用户提供了全新的体验。在这个项目中,JavaScript作为主要的...
化学元素周期表是根据核电荷数从小至大排序的化学元素列表。列表大体呈长方形,某些元素周期中留有空格,使特性相近的元素归在同一族中,如碱金属元素、碱土金属、卤族元素、稀有气体等。这使周期表中形成元素分区且...
元素周期表.exe 可以显示所有化学元素的所有性质
Excel版元素周期表,可打印
周期表通常分为周期和族,周期是元素电子壳层结构变化的反映,而族则基于元素化学性质的相似性。 在JavaScript中创建动态元素周期表,我们首先需要准备元素的数据结构。这个数据结构可以是一个JSON对象数组,每个...
分享一个超高级的元素周期表页面html源码,如果不显示自行替换里面JS文件
元素周期表是化学科学中一个极为重要的工具,它按照原子序数(即核内质子数)递增的顺序排列了所有已知的化学元素,并根据元素的化学性质将它们分组到不同的族和周期之中。这种排列方式揭示了元素间内在的联系以及...
IUPAC(国际纯粹与应用化学联合会)发布的最新版元素周期表是学习化学不可或缺的资源,它不仅包含了目前已发现的所有元素,还更新了部分元素的相对原子质量等信息。 #### 二、关键知识点详解 ##### 1. 原子序数与...