特效描述:利用HTML5实现 绘制3D 线条延伸 动画特效。利用HTML5实现雷达地区扫描动画特效

代码结构

1. HTML代码

;(function() {

'use strict';

var c = document.getElementById('c');

var ctx = c.getContext('2d');

var w = c.width = window.innerWidth;

var h = c.height = window.innerHeight;

var cx = w / 2;

var cy = h / 2;

var fl = 1000;

function prj(obj) {

var cz = obj.z + fl;

if(cz === 0) return;

var scl = fl / cz;

obj.p.x = cx + obj.x * scl;

obj.p.y = cy + obj.y * scl;

obj.s = scl;

}

var P = function(x, y, z) {

this.x = x;

this.y = y;

this.z = z;

this.s = 1;

this.cl = 0;

this.p = {

x: 0,

y: 0

};

};

P.prototype = {

constructor: P,

update: function() {

this.z -= 30;

},

render: function(ctx) {

if(this.z <= -fl) return;

ctx.save();

ctx.translate(this.p.x, this.p.y);

ctx.scale(this.s, this.s);

ctx.fillStyle = 'hsla(' + this.cl + ', 100%, 50%, 0.5)';

ctx.beginPath();

ctx.arc(0, 0, 2, 0, Math.PI * 2);

ctx.fill();

ctx.restore();

}

};

var M = function(x, y, z) {

this.list = [];

this.max = 100;

this.x = x;

this.y = y;

this.z = z;

this.s = 1;

this.p = {

x: 0,

y: 0

};

this.ax = Math.random() * (Math.PI * 2);

this.ay = Math.random() * (Math.PI * 2);

this.rx = Math.random() * 100;

this.ry = Math.random() * 100;

this.cl = Math.random() * 360;

this.cls = Math.random();

};

M.prototype = {

constructor: M,

update: function() {

this.cl += this.cls;

this.ax += Math.random() * 0.1 - 0.02;

this.ay += Math.random() * 0.1 - 0.02;

this.x = Math.cos(this.ax) * 100;

this.y = Math.sin(this.ay) * 100;

this.z += 10;

if(this.z > fl) this.z = fl;

if(this.list.length < this.max) {

if(Math.random() * 100 < 50) {

var pp = new P(this.x, this.y, this.z);

pp.cl = this.cl;

this.list.push(pp);

}

} else {

var pp = this.list.shift();

pp.x = this.x;

pp.y = this.y;

pp.z = this.z;

pp.cl = this.cl;

this.list.push(pp);

}

},

render: function(ctx) {

if(this.z <= -fl) return;

ctx.save();

ctx.translate(this.p.x, this.p.y);

ctx.fillStyle = 'green';

ctx.beginPath();

ctx.arc(0, 0, 2, 0, Math.PI * 2);

ctx.fill();

ctx.restore();

}

};

function update(mv, list) {

for(var i = 0; i < list.length; i++) {

var p = list[i];

p.update();

prj(p);

p.render(ctx);

}

for(var i = list.length-1; i >= 0; i--) {

var p = list[i];

if(p.z <= -fl) continue;

if(i === list.length - 1) {

ctx.lineWidth = Math.random();

ctx.strokeStyle = 'hsl(' + mv.cl + ', 100%, 50%)';

ctx.beginPath();

ctx.moveTo(p.p.x, p.p.y);

} else {

ctx.lineTo(p.p.x, p.p.y);

}

}

ctx.stroke();

}

var ms = [];

for(var i = 0; i < 10; i++) {

ms.push(new M(

Math.random() * 400 - 200,

Math.random() * 400 - 200,

Math.random() * 400 - 200));

}

requestAnimationFrame(function loop() {

requestAnimationFrame(loop);

ctx.clearRect(0, 0, w, h);

for(var i = 0; i < ms.length; i++) {

var m = ms[i];

m.update();

prj(m);

update(m, m.list);

}

});

})();

html 延长直线,利用HTML5实现绘制3D线条延伸动画特效相关推荐

  1. 如何用html制作一个动态烟花,利用HTML5实现庆祝2018年烟花动画特效

    特效描述:利用HTML5实现庆祝2018年烟花动画特效.利用HTML5实现庆祝2018年烟花动画特效 代码结构 1. HTML代码 2018 var ctx = document.querySelec ...

  2. html5网站粒子时钟,利用HTML5实现SVG多边形粒子时钟动画特效

    特效描述:利用HTML5实现 SVG 多边形 粒子时钟 动画特效.利用HTML5实现SVG多边形粒子时钟动画特效 代码结构 1. 引入JS 2. HTML代码  svg { position: ab ...

  3. html5 可旋转的三维树形结构,利用HTML5实现勾股树植物生长动画特效

    特效描述:利用HTML5实现 勾股树 植物生长 动画特效.利用HTML5实现勾股树植物生长动画特效 代码结构 1. HTML代码 const canvas = document.querySelect ...

  4. logo像闪电的html编译器,基于Html5 Canvas绘制逼真的闪电动画特效

    Canvas绘制闪电动画特效 canvas, body{ padding: 0; margin: 0; overflow: hidden; } var width, height var step = ...

  5. html 衣服特效,详细介绍HTML5 3D衣服摇摆动画特效如何实现

    这又是一款基于HTML5 Canvas的3D动画杰作,它是一个可以随风飘动的3D衣服摇摆动画特效,非常逼真.当我们将鼠标滑过衣服时,衣服将会出现摇摆的动画,点击鼠标时,衣服将会更加剧烈地摆动. 在线演 ...

  6. html5 canvas酷炫3D背景打开动画特效

    html5 canvas酷炫3D背景打开动画特效 点击跳转到演示地址 点击进入资源下载地址

  7. html5立体照片墙效果,HTML5特效可以 14种jQuery超酷3D网格照片墙动画特效源码

    效果图 各位长友大家好, 今天 给大家带来的是14种jQuery超酷3D网格照片墙动画特效源码! 大家可以按照自己的意愿做成 个人喜欢的样子! 想要文件版源码的,请加穷581549454 废话不多说. ...

  8. html5可折叠面板,纯CSS3炫酷3D折叠面板动画特效

    这是一款纯 CSS3 制作的炫酷3D折叠面板动画特效.这个效果使用3D CSS animations 来制作折叠面板的动画,纯CSS,没有使用javascript. HTML结构 折叠面板的html结 ...

  9. html5列表菜单特效,HTML5 SVG汉堡包菜单按钮分段动画特效

    这是一款效果非常炫酷的HTML5 SVG汉堡包菜单按钮分段动画特效.该菜单按钮特效在用户点击汉堡包按钮时,按钮会分割为多段,并旋转变形为关闭按钮的状态.当再次点击该按钮时,它会逆向变形为汉堡包图标. ...

最新文章

  1. 今晚20:00 | 港科大郑光廷院士详解人工视觉技术发展及应用
  2. oracle varchar2转date_Oracle基础包之三 DBMS_PIPE
  3. Oracle里default什么意思,ORACLE中默认值default的使用方法.doc
  4. Android 第十四课 使用LitePal添加数据(更新数据)
  5. Maven实战. 3.7NetBeans Maven插件简单使用
  6. linux下dds软件,【数据库】Linux 单实例环境下实现Oracle数据库和DDS软件的开机自动重启...
  7. ~~分解质因数法求组合数
  8. 网站如何集成支付宝!原来要给钱的
  9. 腾讯网课下载.m3u8下载器流媒体下载
  10. 利用学生身份“白嫖”-教育优惠
  11. VR/AR/MR/CR/XR概念及应用
  12. C#中操作Word(7)—— 如何向Word中插入表格
  13. nsis升级包_NSIS:制作软件升级安装包
  14. 惠州东江威立雅的全方位文件安全管理
  15. 如何在保持营养均衡的同时不长肉
  16. 力扣每日一题2021-12-24中等题:吃苹果的最大数目
  17. EXCEL获取今天是今年的第几周
  18. 查询电话号码归属地的PHP接口(处理过可供前端使用的)
  19. 科普直播,或将成为金融企业引流获客的渠道
  20. 各种依赖库(转载地址:https://blog.csdn.net/as89751)

热门文章

  1. 个性至上 美学反击 创新BMW X2
  2. MySQL最后一步四勾都没√解决办法
  3. LDR伪指令和LDR指令及MOV指令的区别
  4. Python生成器、迭代器
  5. ubuntu18+ros安装
  6. 为了让你体验人工智能设计的强大,我找了这个在线神器…
  7. 魅族MX5data目录下不显示
  8. 适用于 Type-C接口PD应用的智能二极管保护开关
  9. iOS开屏广告解决方案XHLaunchAd 3.0
  10. Android系统升级 Recovery模式(02)Recovery升级过程