我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用Canvas怎么绘制一个波浪花环

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用Canvas怎么绘制一个波浪花环

使用Canvas怎么绘制一个波浪花环?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>body {  background: #111;  padding:0;  margin:0;overflow:hidden;}</style></head><body><div id="wrapper"></div></body><script>(function(){'use strict';let wrapper, canvas, ctx, width, height, Tau=Math.PI*2, PI180=Math.PI/180,systems=[];let PlanetarySystem = function(id='pSys'){Object.defineProperty(this, 'id',               { value:id, writable:true} );Object.defineProperty(this, 'x',                { value:0, writable:true });Object.defineProperty(this, 'y',                { value:0, writable:true });Object.defineProperty(this, 'allBodies',        { value:[], writable:true });Object.defineProperty(this, 'allBodiesLookup',  { value:{}, writable:true });    // fast id lookup for childrenObject.defineProperty(this, 'numBodies',        { value:0, writable:true });}PlanetarySystem.prototype.addBody = function(vo) {vo.parentSystem = this;vo.parentBody = vo.parentBody === null ? this : this.allBodiesLookup[vo.parentBody];let body = new PlanetaryBody(vo);body.update();this.allBodies.push(body);this.allBodiesLookup[vo.id] = body;this.numBodies += 1;}PlanetarySystem.prototype.setSpeedFactor = function(value){let body;for(let i=0; i<this.numBodies; i++){body = this.allBodies[i];body.setSpeedFactor(value);}}PlanetarySystem.prototype.update = function(){let body;for(let i=0; i<this.numBodies; i++){body = this.allBodies[i];body.update();}}let PlanetaryBody = function(vo){Object.defineProperty(this, 'id',{ value:vo.id, writable:true} );Object.defineProperty(this, 'diameter',{ value:vo.diameter, writable:true });Object.defineProperty(this, 'colour',{ value:vo.colour, writable:true });Object.defineProperty(this, 'x',{ value:0, writable:true });Object.defineProperty(this, 'y',{ value:0, writable:true });Object.defineProperty(this, 'vx',{ value:0, writable:true });Object.defineProperty(this, 'vy',{ value:0, writable:true });Object.defineProperty(this, 'degrees',{ value:vo.degrees, writable:true });Object.defineProperty(this, 'speedBase',{ value:vo.speed, writable:true });Object.defineProperty(this, 'speed',{ value:vo.speed , writable:true });Object.defineProperty(this, 'orbitalRadius',{ value:vo.orbitalRadius, writable:true });Object.defineProperty(this, 'parentSystem',{ value:vo.parentSystem, writable:true });Object.defineProperty(this, 'parentBody',{ value:vo.parentBody, writable:true });return this;}PlanetaryBody.prototype.update = function(){let angle = this.degrees * PI180;this.degrees += this.speed;this.vx = this.orbitalRadius * Math.cos(angle);this.vy = this.orbitalRadius * Math.sin(angle);// update positionif(this.parentBody != null){this.x = this.vx + this.parentBody.x;this.y = this.vy + this.parentBody.y;}}function init(){wrapper = document.querySelector('#wrapper');canvas = createCanvas('canvas', width, height);wrapper.appendChild(canvas);ctx = canvas.getContext('2d');setupEvents();resizeCanvas();let system1 = new PlanetarySystem('pSys1');systems.push(system1);system1.x = width * .5;system1.y = height * .5;system1.addBody({id:'sun', diameter:5, degrees:0, speed:0, colour:'#FDFE1D', orbitalRadius:0, parentBody:null});for(let loop=30, i=0; i<loop; i+=1){system1.addBody({id:'ball'+i,diameter:5,degrees:0,speed:2 + (loop * 0.15) - (i* 0.2),colour:'#FDFE1D',orbitalRadius:7*(i+1),parentBody:'sun'});}}function createCanvas(id, w, h){let tCanvas = document.createElement('canvas');tCanvas.width = w;tCanvas.height = h;tCanvas.id = id;return tCanvas;}function setupEvents(){window.onresize = resizeCanvas;}function resizeCanvas(){let rect = wrapper.getBoundingClientRect();width = window.innerWidth;height = window.innerHeight - rect.top -2;canvas.width = width;canvas.height = height;for(let i=0; i<systems.length; i++){systems[i].x = width * .5;systems[i].y = height * .5;}}function update(){for(let loop=systems.length, i=0; i<loop; i++){systems[i].update();}}function draw(){let system;let prev = null;for(let i=0; i<systems.length; i++){system = systems[i];let planetaryBody;for(let loop=system.numBodies, j=1; j<loop; j+=1) {planetaryBody = system.allBodies[j];ctx.beginPath();ctx.arc(planetaryBody.x, planetaryBody.y, planetaryBody.diameter, 0, Tau, false);ctx.fillStyle = planetaryBody.colour;ctx.fill();if(j>1){ctx.strokeStyle = planetaryBody.colour;ctx.lineWidth = 2;ctx.beginPath();ctx.moveTo(planetaryBody.x, planetaryBody.y);ctx.lineTo(prev.x, prev.y);ctx.stroke();}prev = {x:planetaryBody.x, y:planetaryBody.y};}}}function animate(){ctx.fillStyle = 'rgba(0,0,0, .05)';ctx.fillRect(0, 0, width, height);update();draw();requestAnimationFrame(animate);}init();animate();}());</script></html>

关于使用Canvas怎么绘制一个波浪花环问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用Canvas怎么绘制一个波浪花环

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用Canvas怎么绘制一个波浪花环

使用Canvas怎么绘制一个波浪花环?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
2023-06-09

使用canvas怎么绘制一个烟花效果

这期内容当中小编将会给大家带来有关使用canvas怎么绘制一个烟花效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。目录结构目录结构大致如下我们将烟花分为两个阶段,一个是未炸开持续上升时期,另一个是炸开后
2023-06-09

怎么用Android贝塞尔曲线绘制一个波浪球

本篇内容介绍了“怎么用Android贝塞尔曲线绘制一个波浪球”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果如下所示:先来总结下 Wave
2023-06-30

使用canvas怎么绘制一个心电图

这期内容当中小编将会给大家带来有关使用canvas怎么绘制一个心电图,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。思路:1.模拟点(如果你有真实的数据,那就是把数据幻化成canvas对应的坐标点)模拟点时
2023-06-09

使用canvas怎么绘制一个表情包

使用canvas怎么绘制一个表情包?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。var canvas = document.getElementById(canvas);var
2023-06-09

使用canvas怎么绘制一个太极图

今天就跟大家聊聊有关使用canvas怎么绘制一个太极图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。css样式代码.animation{ width: 800px; height
2023-06-09

怎么在html5中利用canvas绘制一个圆环

今天就跟大家聊聊有关怎么在html5中利用canvas绘制一个圆环,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实现过程:首先:html部分代码如下:2023-06-09

vue怎么使用canvas绘制圆环

这篇文章主要介绍“vue怎么使用canvas绘制圆环”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue怎么使用canvas绘制圆环”文章能帮助大家解决问题。效果图:// html
2023-06-29

使用JavaScript怎么绘制一个烟花效果

这期内容当中小编将会给大家带来有关使用JavaScript怎么绘制一个烟花效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。HTML
2023-06-14

使用canvas怎么绘制一个圆角头像

使用canvas怎么绘制一个圆角头像?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先, 拿到头像在画布上的坐标和宽高:(具体怎么获取不在此做具体介绍)let
2023-06-09

使用Canvas怎么绘制一个下雨动画

今天就跟大家聊聊有关使用Canvas怎么绘制一个下雨动画,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用方法如下:function anim() { ctx.fillStyl
2023-06-09

使用canvas怎么绘制一个连线动画

这篇文章将为大家详细讲解有关使用canvas怎么绘制一个连线动画,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。step1:绘制点首先创建个标签
2023-06-09

使用CSS怎么实现一个波浪效果

本篇文章为大家展示了使用CSS怎么实现一个波浪效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,
2023-06-08

使用Canvas怎么绘制一个旋转的太极

今天就跟大家聊聊有关使用Canvas怎么绘制一个旋转的太极,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。cssbody{ background: #ddd;}#canvas{
2023-06-09

使用canvas怎么绘制一个刮刮卡效果

使用canvas怎么绘制一个刮刮卡效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码 2023-06-07

使用canvas怎么绘制一个DVD待机动画

本篇文章给大家分享的是有关使用canvas怎么绘制一个DVD待机动画,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 HTML
2023-06-09

使用Canvas怎么绘制一个未闭合的带进度条圆环

这期内容当中小编将会给大家带来有关使用Canvas怎么绘制一个未闭合的带进度条圆环,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、定义变量定义半径,定义圆环厚度,定义圆心位置、定义默认填充颜色let r
2023-06-09

利用canvas怎么绘制一个多边形

利用canvas怎么绘制一个多边形?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 初始化js代码 //初始化 (function(){ var canvas =
2023-06-09

使用Canvas如何绘制一个多边形

使用Canvas如何绘制一个多边形?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。function drawPolygonPath(sideNum, radius
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录