3D标签云
一、圆的坐标表达式
for(var i = 0;i < len;i++){
degree = (2*(k+1)-1)/len - 1;
a = Math.acos(degree);//这样取得弧度数生成的点在球体上式均匀分布的
b = a*Math.sqrt(len*Math.PI);
x = radiu * Math.sin(a) * Math.cos(b);
y = radiu * Math.sin(a) * Math.sin(b);
z = radiu * Math.cos(a);
label_item[k].style.transform = "translateZ("+z+"px) translateX("+x+"px) translateY("+y+"px)";//设置x,y,z坐标
}
//x轴旋转
//核心代码
{
y' = y*cos(θ) - z*sin(θ);
z' = z*cos(θ) + y*sin(θ);
}
function rotateX(elements,degreeX){
var label_item = elements;
var degree = degreeX;
// console.log(getSpeed())
var cos = Math.cos(degree);
var sin = Math.sin(degree);
var x, y,z;
for(var i = 0;i < label_item.length;i++){
x = label_item[i].dataset.x;
y = label_item[i].dataset.y;
z = label_item[i].dataset.z;
var y1 = y*cos - z*sin;
var z1 = z*cos + y*sin;
label_item[i].dataset.y = y1;
label_item[i].dataset.z = z1;
if(label_item[i].dataset.z < 0){
label_item[i].style.opacity = '0.5';
label_item[i].style.fontSize = '4px';
}else{
label_item[i].style.fontSize = '14px';
}
if(z > 0){
label_item[i].style.opacity = "1";
}else{
label_item[i].style.opacity = "0.5";
}
label_item[i].style.transform = "translateZ("+z1+"px) translateX("+x+"px) translateY("+y1+"px) rotateX(0deg)";
}
}
//y轴旋转
//核心代码
{
x' = x*cos(θ) - z*sin(θ);
z' = z*cos(θ) + x*sin(θ);
}
function rotateY(elements,degreeY){
var label_item = elements;
var degree = degreeY;
var cos = Math.cos(degree);
var sin = Math.sin(degree);
var x, y,z;
for(var i = 0;i < label_item.length;i++){
x = label_item[i].dataset.x;
y = label_item[i].dataset.y;
z = label_item[i].dataset.z;
var x1 = x*cos - z*sin;
var z1 = z*cos + x*sin;
label_item[i].dataset.x = x1;
label_item[i].dataset.z = z1;
if(label_item[i].dataset.z < 0){
label_item[i].style.opacity = '0.5';
label_item[i].style.fontSize = '4px';
}else{
label_item[i].style.fontSize = '14px';
}
if(z > 0){
label_item[i].style.opacity = "1";
}else{
label_item[i].style.opacity = "0.5";
}
label_item[i].style.transform = "translateZ("+z1+"px) translateX("+x1+"px) translateY("+y+"px) rotateX(0deg)";
}
}
3D标签云的更多相关文章
- css3实践之摩天轮式图片轮播+3D正方体+3D标签云(perspective、transform-style、perspective-origin)
本文主要通过摩天轮式图片轮播的例子来讲解与css3 3D有关的一些属性. demo预览: 摩天轮式图片轮播(貌似没兼容360 最好用chrome) 3D正方体(chrome only) 3D标签云(c ...
- SP2010 3D标签云Web部分--很酷的效果,强烈推荐!!
SP2010 3D标签云Web部分--很酷的效果.强烈推荐! ! 项目描述叙事 基于简单Flash的3D标签云Web部件.SP Server 2010使用. 建立在内置标签云Web部件 ...
- 解析3D标签云,其实很简单
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 最近开始用canvas搞3D了,搞得也是简单的东西,就是球体转圈.做出来后,突然想起以前看过的3D标签云,在以前觉得真心狂拽酷炫叼啊,当时 ...
- 纯JS实现的3D标签云,不依赖不论什么第三方库,支持移动页面
<span style="font-family: Arial, Helvetica, sans-serif;"><!DOCTYPE html PUBLIC &q ...
- jquery 3D 标签云
http://www.gbin1.com/technology/jquerynews/20111205tagcloudbyjquery/index.html 相关选项 zoom: 90 初始的缩放度 ...
- 3d标签云(JS版)
http://www.miaov.com/miaov_demo/3dLable/miaov_demo.html http://www.lijian.net/p/windstagball/index.h ...
- vue实现标签云效果
闲扯两句 最近想给自己的博客上加上一个3D标签云的效果,用来表示自己博客文章的分组,网上找到了canvas实现的,还有a元素实现的解析3D标签云,我想让标签可以选择和点击,又不想在标签数量较多时操作a ...
- 3D球状标签云(兼容IE8)
看见一个很有趣的标签云,3D球状,兼容 IE 8,亲测可用!其他版本没有测试.觉得挺有意思就拿来记录下来,学习学习,本文下方会放出我看的文章地址,先看一下效果: 接下来是代码,html + css + ...
- 分享一个3D球面标签云
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
随机推荐
- 【react native】有关入坑3个月RN的心路历程
由于一些原因,笔者最近变更到了RN的团队,回归到了hybrid app的开发的圈子中,固然是有蛮多新鲜感和新机遇的,不过遥想起以前在hybrid中各种view之前跳转的头疼等各种问题,笔者怀着忐忑的心 ...
- OpenCV+VS开发环境配置
最近跑C程序,头文件中用到了OpenCV中的文件,找了很多篇OpenCV+VS的环境配置,发现如下这篇写的最为详细,特转载来自己的博客中留存,并附上原博客地址如下 OpenCV学习笔记(一)——Ope ...
- 树莓派 VNC 远程桌面 同一个桌面
如何在ssh登录的情况下配置好vino 1.传输文件 2.ssh sudo dpkg -i ~/swap/deb/tight* sudo cp ~/swap/vino.desktop /etc/xdg ...
- Oracle 的备份和恢复
Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备 份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利 ...
- PHP + ORACLE 远程连接数据库环境配置
在ORACLE官网下载instantclient_11_2,放在D盘 把instantclient_11_2目录下的所有dll文件复制到C:\Windows\SysWOW64 和 D:\phpS ...
- jq判断上下滚动
$(document).ready(function(){ var p=0,t=0; $(window).scroll(function(e){ p = $(this).scrollTop(); if ...
- ES5之变量
什么是变量:存放物体的一个容器,以便后续利用该容器存放的物体. 变量的声明及赋值: 声明变量关键字var; 变量名的规范:变量名由英文字母.数字.下划线.美元符号组成,但是首字母只能是英文字母.下划线 ...
- 老潘 - ListView分析 - 学以致用篇(一)
ListView分析学以致用篇(1) 在我们查看别人的博客的时候,一个人是一个风格的.先说下我的风格,我喜欢思想类比,然后介绍知识,不太喜欢填鸭式的灌输.如果只是想单纯的从我的博客中直接看到代码,我个 ...
- 微信小程序组件解读和分析:六、progress进度条
progress进度条组件说明: 进度条,就是表示事情当前完成到什么地步了,可以让用户视觉上感知事情的执行.progress进度条是微信小程序的组件,和HTML5的进度条progress类似. pro ...
- nginx for ubuntu
1.创建文件夹 :mkdir nginx 2.解压nginx: tar zxvf nginx.gz.tar 3.nginx 初始化:在nginx的路径下执行:./configure 有可能会报错: . ...