前言 使用HTML5,通过创建cache manifest文件,可轻松创建web应用的离线版本;HTML5引入了应用程序缓存,这意味着web应用可进行缓存,并可在没有网络时进行访问。...应用程序缓存为应用带来三个优势 离线浏览—用户可在离线时使用 速度—已经缓存的资源加载的更快 减少服务器负载—浏览器将只从服务器下载更改过的资源 原理和环境 如上面提到的HTML5的离线存储是基于一个新建的...就像cookie一样,html5的离线存储也需要服务器环境。 解析清单 在开始之前要先了解下 manifest(即.appcache文件),上面的解析清单要怎么写。...login.asp 可以使用*来指示所有其他资源/文件都需要因特网连接: NETWORK: * FALLBACK 下面的 FALLBACK 小节规定如果无法建立因特网连接,则用 “offline.html” 替代 /html5.../ 目录中的所有文件: ALLBACK:/html5/ /404.html 第一个 URI 是资源,第二个是替补。
今天我想跟大家谈一谈HTML5的设计。主要分两个方面:一方面,当然了,就是HTML5。...这话听起来有点搞笑:这会子你一直在说HTML5,难道我们还不知道什么是HTML5吗?大家知道,有一个规范,它的名字叫HTML5。我所说的HTML5,指的就是这个规范。...这些恐怕是第一次出现在小说中的针对软件的设计原理了。虽然基于这三个设计原理的软件运行在虚构的机器人的“正电子脑”中,但我想这应该是软件设计原理的事实开端。...HTML5 之后,就到了HTML5,但HTML5并不是由W3C直接制定的。...结果,我们不仅看到了一份规范,也就是W3C站点上公布的那份文档,即HTML5语言规范,还在W3C站点上看到了另一份文档,也就是HTML设计原理。
而按照HTML5的另一个设计原理,它必须向前向后兼容,兼容未来的HTML版本——不管是HTML6、HTML7,还是其他什么——都要与当前的HTML版本,HTML5,兼容。...我说过,因为浏览器必须支持已有的内容,HTML5自然也不能例外。归根结底还是伯斯塔尔法则。我们始终离不开伯斯塔尔法则。 解决现实的问题 HTML5的另一个设计原理是解决现实的问题。...显而易见的是,解决各种问题的格式和规范已经比比皆是了,因此在我看来,这个原理其实是要解决理论问题,而非解决现实的问题。这条设计原理是要从理论上承认人们普遍存在的问题,消除敏感问题。 下面我来举个例子。...所以,说HTML5解决现实的问题,其本质还是“你都这样写了很多年了吧?现在我们把标准改了,允许你这样写了。” 求真务实 在所有设计原理中,这一条恐怕是最响亮的了——求真务实。...HTML5中新的语义元素就是遵循求真务实原理的反映。新增的元素不算多,谈不上无限的扩展性,但却不失为一件好事。尽管数量屈指可数,但意义却非同一般。
平稳退化 下一条原理大家应该都很熟悉了,那就是平稳退化。毕竟,我们已经遵守这条规则好多年了。渐进增强的另一面就是平稳退化。 有关HTML5遵循这条原理的例子,就是使用type属性增强表单。...首先,他们所说的HTML5对Flash,并不是指的HTML5,也不是指的Flash。而是指HTML5的一个子集和Flash的一个子集。具体来说,他们指的是视频。...因此,我认为无论你做什么,不管是构建像HTML5这样的格式,还是构建一个网站,亦或一个内容管理系统,明确你的设计原理都至关重要。 软件,就像所有技术一样,具有天然的政治性。...我觉得像这样的设计原理都非常好。而有了设计原理,我认为才更有希望设计出真正有价值的产品。设计原理是Web发展背后的驱动力,也是通过HTML5反映出来的某种思维方式。...我想,下面这条原理你绝对不会陌生: 大多数人的意见和运行的代码。 对不对?这句话经常在我脑际回响,它囊括了Web的真谛,触及了HTML5的灵魂。
前言 用 WebGL 渲染的 3D 机房现在也不是什么新鲜事儿了,这篇文章的主要目的是说明一下,3D 机房中的 eye 和 center 的问题,刚好在项目中用上了,好生思考了一番,最终觉得这个例子最符合我的要求..._node, arguments);//设置节点的 3d 坐标 } }); 创建 Editor.Cabinet 类 ?.../设置图元在3D拓扑中的z轴长度 door.setTall(s3[1]);//控制Node图元在y轴的长度 door.setElevation(0);//设置图元中心在3D坐标系中的y坐标...场景创建 如果熟悉的同学应该知道,用 HT 创建一个 3D 场景只需要 new 一个 3D 组件,再将通过 addToDOM 函数将这个场景添加进 body 中即可: var g3d = E.main...= new ht.graph3d.Graph3dView(); //3d 场景 main.js 文件中主要做的是在 3D 场景中一些必要的元素,比如墙面,地板,门,空调以及所有的机柜的生成和排放位置,还有非常重要的交互部分
http://www.hightopo.com/demo/Plucker/ 代码实现 创建场景 首先是创建一个三维场景(https://hightopo.com/guide/guide/core/3d...window.addEventListener('resize', function () { self.iv(); }, false);//窗口大小改变事件,调用刷新函数 } 整个大环境搭建好了后,我们需要向场景中添加 3D
看到有一个网站上在卖的图表,感觉挺好看的,就用 HT for Web 3D 做了一个小例子,挺简单的,也挺好看的,哈哈~ Demo 地址: http://www.hightopo.com/demo/WireframeAnim.../index.html 这个例子用 HT 实现真的很容易,首先创建一个 HT 中最基础的 dm 数据模型,然后将数据模型添加进 g3d 3d 组件中,再设置 3d 中的视角并把 3d 组件添加进 body...]/2, p3[2]]); node.s3(s3); dm.add(node); 其中要说明的是,'shape3d':cylinderModel 这个样式的设置,首先,shape3d 属性指定显示为 3d...最后是 3d 文字,呈现 3d 文字需要一个 json 格式的 typeface 字体,然后通过 ht.Default.loadFontFace 来加载 json 格式的字体到内存中,详情请参考 HT...for Web 3D 手册: ht.Default.loadFontFace('.
上个月我们发布了一篇文章《基于HTML5 WebGL 构建智能城市 3D 场景》,大体介绍了如何使用ht.js 快速3D 建模,展示了良好的可视化效果,今天继续探讨智慧城市的应用。 ...上图主要以 2/3D联动的方式,依次展示了在面对突发情况下,城市应急救援的响应过程。...现场方案启动->人员进场->作业中) 实现思路:首先对模型进行分组,并在相应的图元上标记tag,使用ht.Default.startAnim() 来完成每一步的动画效果,然后拼接动画即可实现上图中的3D...常规的2D 效果图已经不满足于当下的需求了,伴随着大数据、云计算、5G、AI、边缘计算等技术的发展成熟,3D 可视化更能直观的、有效的反馈信息。当然,3D可视化离不开一款强大的图形引擎。...3D 漫游可以提供很好的用户交互体验,所以本demo 也展示了这一功能。 借助于HT,漫游功能的实现只要几行代码就可以实现了。
/guide/lib/plugin/ht-form.js"> ht.layout.Force3dLayout 类提供 3D 弹力布局,构造函数可传入 DataModel 和 Graph3dView...var ran = Math.random() * colorLen; return colorList[Math.floor(ran)];//随机6种颜色 }; 接着创建弹力球,简单生成一个 3D...,s3 是 HT 封装的设置 3D 节点大小的 setSize3d 函数的简写,最后将这个节点添加进数据模型 dataModel 中: var createNode = function(dm) {//...环形模型,将其命名为‘custom’: ht.Default.setShape3dModel(//创建模型 根据xy平面的曲线,环绕一周形成3D模型。...: [(p1[0]+p2[0])/2, (p1[1]+p2[1])/2, (p1[2]+p2[2])/2] }); }; 基础配件全部定义完毕,接着就是将“shape3d”属性设置为自定义的 3D
在上一篇《基于HT for Web矢量实现2D叶轮旋转》中讲述了叶轮旋转在2D拓扑上的应用,今天我们就来讲讲叶轮旋转在3D上的应用。...在3D拓扑上可以创建各种各样的图元,在HT for Web系统中提供了一些常规的3D模型,但是对于那些比较复杂的模型,比如汽车、人物等模型就无能为力了,那再项目中需要用到这样的模型该肿么办呢?...模型后,我们马上创建了一个3D图元,并将其添加到了dataModel容器中,这时我们需要一个3D拓扑来显示这个3D图元,具体的创建代码如下: var dataModel = new ht.DataModel...到这里,模型就算完成了,接下来要做的就是让螺旋桨动起来,和2D叶轮旋转类似,在3D模型上也可以做数据绑定,要想让螺旋桨旋转起来,我们就需要设置螺旋桨的rotation属性,和3D上的图元不同的是,设置3D...图元的rotation属性需要设置一个数组,定义3D上三个方向的旋转值。
在搞清楚3D立体原理之前我们先了解什么是“真3D”: 我们肉眼所看到的景像是一种具有层次、深度的立体影像。...一般我们所谓3D游戏或电影,实际上并非真正的3D;因为屏幕先天即是2D,并且拍摄电影也是使用单镜头的摄影机,所以就算用3D技术制作的动画电影,输出到显示屏也是平面的,我们称呼这种3D为「平面3D」。...他的原理是,在影片的制作过程是使用特殊的双镜头(多镜头)摄影机进行影片的拍摄,每个镜头分别记录了我们肉眼的左眼和右眼的图像,然后在播放电影时也使用特殊的双投影机,同时将左右图像投影在银幕上,这样我们看到的图像是一组两幅影像叠在一起的叠影影像...,当然这样是不够的,此时还要戴上特殊的“偏光镜”,他的作用是将银幕上重叠的两组影像通过偏光镜的偏光原理让两只眼睛分别得到一组影像,这样就达到了左右眼个看到一组不同的影像,我们就可以体验真正的3D影像了,...3D液晶眼镜通常被用在计算机上,可以通过这种眼镜玩真正3D游戏和看3D电影,原理是通过软件将原来的3D游戏分成2组不同角度的影像,通过3D液晶眼镜看到不同的画面,液晶眼镜用一根电线连接到计算机(也有无线产品
本 demo 使用 HT for Web 产品轻量化 HTML5/WebGL 建模的方案。...整理思路: 场景部分: 这里把 3D 当做背景嵌套在 2D 场景中。 这样在初始化图纸的时候,直接反序列化 2D 图纸即可。...事件部分: 2D 图纸中有很多的按钮,通过它们来控制 3D 中的一些动画。 ...实现思路是在反序列化图纸的时候把 2D、3D 的 模型和视图对象挂载到 window 上,这样在不同的场景中都可以获取到相应的数据模型。...环境部分: 风速、风向、变桨角度这些会在 2D、3D 中所表现,所以可以把他们放到数据池里面,方便管理。
我是用 HT 做的整个例子,首先创建 3D 场景,HT 有 3D 组件,可以直接通过 new ht.graph3d.Graph3dView 3D 组件来创建一个实例,然后通过 getView() 函数获取组件的底层...ht.DataModel();//数据容器,可以将显示在界面上的所有数据通过 dataModel.add 存储在数据容器中 g3d = new ht.graph3d.Graph3dView(dm);//3D...组件 g3d.addToDOM();//将 3D 组件的底层 div 添加到 body 中 HT 的组件一般都会嵌入 BorderPane、SplitView 和 TabView 等容器中使用,而最外层的...no-repeat; 上面还有一个部分没有提及,就是点击按钮后调用的 btnClick 函数: function btnClick(imageName){ if(flag === 1){//做的判断是根据3d...setIcon('symbols/隧道用图标/'+imageName+'.json');//设置id为105的item内容显示的图标为form表单上点击的交通灯的按钮的图标 } 最后就是点击事件了,一个是点击 3D
./3d/index'; 我们将页面上的每个部分分开来放在不同的 js 文件中,就是上面加载的 js export 的部分,根层容器 BorderLayout(整体最外层的 div),整张图上的部分都是基于...from './3d/index'; ?...从这个 3d 场景中可以看到,我们需要“地板”、“墙面”、“货架”、“叉车”、“货物”以及 3d 场景。.../g3d';//3d场景 import { getCargoById } from '..../G'; 在 src\view\3d\cargo.js 文件中,定义了一个“货物”类,这个类中声明了很多方法,比较基础,有需要的自己可以查看这个文件,这里我不过多解释。
在HT for Web中2D和3D应用都支持树状结构数据的展示,展现效果各异,2D上的树状结构在展现层级关系明显,但是如果数据量大的话,看起来就没那么直观,找到指定的节点比较困难,而3D上的树状结构在展现上配合...所以这时候结构清晰的3D树的需求就来了,那么这个3D树具体长成啥样呢,我们来一起目睹下~ ? 要实现这样的效果,该从何下手呢?接下来我们就将这个问题拆解成若干个小问题来解决。 1....在2D拓扑下模拟3D树状结构每层的半径计算 在3D下的树状结构体最大的问题就在于,每个节点的层次及每层节点围绕其父亲节点的半径计算。...搞定,就是这样子了,2D拓扑上面的布局搞定了,那么接下来该出动3D拓扑啦~ 3....加入z轴坐标,呈现3D下的树状结构 3D拓扑上面布局无非就是多加了一个坐标系,而且这个坐标系只是控制节点的高度而已,并不会影响到节点之间的重叠,所以接下来我们来改造下我们的程序,让其能够在3D上正常布局
本系统采用 Hightopo 的 HT for Web 产品来构造轻量化的 3D 可视化场景。...Solar System 这套系统主要用于两种场景: 1.作为科研成果、新发现的载体,做 3D 太空数据可视化呈现,用于向普通民众科普太阳系的构成、各行星组织结构等知识,可置于博物馆大屏、学校大屏,...2.作为宇航局、航空航天相关研究机构的驾驶舱,在 3D 可视化界面中对行星相对位置、星体状态、星体气象、星体地形有一个直观快速的了解,在宇宙空间探索越来越成功的当下,在数据传输技术得到速度和质量上的突破后...点选右侧对应检测点,会触发右侧点的缩放动画,同时左侧对应的 3D 点位也会同步变化,其它的点则调用 setAnimation(null) //......对象进行关联,并采用 3D 拓扑可视化呈现,相对位置清晰直观,3D 地形与等高线图对应,海拔高度和相互遮挡关系都可以准确把握。
上篇将HT for Web的3D拓扑弹力布局的算法运行在Web Workers后台(http://www.hightopo.com/blog/70.html),这篇我们将进一步折腾,将算法运行到真正的后台
我们来看看如何操作这个 3d 交互模型,可以直接滑动“Rotation”的滑动条,你会看到 3d 和左下角的 2d 上的图元都会旋转,接着点击“Axis”中的任意一个值,然后点击“Animate”,你会看到中间这个图元会旋转...左下角的是整个 3d 场景内的俯视图,这样我们可以非常直观地看清图元的移动方向和位置。 可能你会好奇这个是怎么俯视图是怎么放上去的?如果 3d 中的图元变化,这个俯视图中的图元也会跟着变化么?...如何只移动 3d 二把这两个固定在这边?或者你可能还有别的问题,在这里我会尽量清楚地解答,实在找不到答案可以去官网 HT for Web 查找你的问题。...好了,基础就是先布局,布 3d 场景,HT 在提供方法方面算是非常细致的了,平时我们生成网格可能就要花费一段时间,又是基础代码,新手开发人员都能很快上手呢~短短几行代码就能创建一个 3d 场景,简直太快...只要将这个值设置得比 setNear 设置的大,我们就不会看到 3d 图元的内部中去了。 我们还注意到似乎是“废代码”的一行: cs.push(cs[0])。这个完全不是废代码啊,帮了很大忙呢!
领取专属 10元无门槛券
手把手带您无忧上云