html--宠物

文章目录

  • html
  • js
  • css

html

<!DOCTYPE html>
<html lang="en" >
<head><meta charset="UTF-8"><title>CodePen - Spaceworm</title><script>
window.requestAnimFrame = (function() {return (window.requestAnimationFrame ||window.webkitRequestAnimationFrame ||window.mozRequestAnimationFrame ||window.oRequestAnimationFrame ||window.msRequestAnimationFrame ||function(callback) {window.setTimeout(callback);});
});function init(elemid) {let canvas = document.getElementById(elemid),c = canvas.getContext("2d"),w = (canvas.width = window.innerWidth),h = (canvas.height = window.innerHeight);c.fillStyle = "rgba(30,30,30,1)";c.fillRect(0, 0, w, h);return {c:c,canvas:canvas};
}
</script><link rel="stylesheet" href="css/style.css"></head>
<body><canvas id="canvas"></canvas><script src="js/script.js"></script></body>
</html>

js

window.onload = function () {//functions definition//class definitionclass segm {constructor(x, y, l) {this.b = Math.random()*1.9+0.1;this.x0 = x;this.y0 = y;this.a = Math.random() * 2 * Math.PI;this.x1 = this.x0 + l * Math.cos(this.a);this.y1 = this.y0 + l * Math.sin(this.a);this.l = l;}update(x, y) {this.x0 = x;this.y0 = y;this.a = Math.atan2(this.y1 - this.y0, this.x1 - this.x0);this.x1 = this.x0 + this.l * Math.cos(this.a);this.y1 = this.y0 + this.l * Math.sin(this.a);}}class rope {constructor(tx, ty, l, b, slq) {this.res = l / slq;this.l = l;this.segm = [];this.segm.push(new segm(tx, ty, this.l / this.res));for (let i = 1; i < this.res; i++) {this.segm.push(new segm(this.segm[i - 1].x1, this.segm[i - 1].y1, this.l / this.res));}this.b = b;}update(t) {this.segm[0].update(t.x, t.y);for (let i = 1; i < this.res; i++) {this.segm[i].update(this.segm[i - 1].x1, this.segm[i - 1].y1);}}show(t) {if(t == "l"){c.beginPath();for (let i = 0; i < this.segm.length; i++) {c.lineTo(this.segm[i].x0, this.segm[i].y0);}c.lineTo(this.segm[this.segm.length - 1].x1,this.segm[this.segm.length - 1].y1);c.strokeStyle = "white";c.lineWidth = this.b;c.stroke();c.beginPath();c.arc(this.segm[0].x0, this.segm[0].y0, 1, 0, 2 * Math.PI);c.fillStyle = "white";c.fill();c.beginPath();c.arc(this.segm[this.segm.length - 1].x1,this.segm[this.segm.length - 1].y1,2,0,2 * Math.PI);c.fillStyle = "white";c.fill();}else{for (let i = 0; i < this.segm.length; i++) {c.beginPath();c.arc(this.segm[i].x0, this.segm[i].y0, this.segm[i].b, 0, 2*Math.PI);c.fillStyle = "white";c.fill();}c.beginPath();c.arc(this.segm[this.segm.length - 1].x1,this.segm[this.segm.length - 1].y1,2, 0, 2*Math.PI);c.fillStyle = "white";c.fill();}}}//setting up canvaslet c = init("canvas").c,canvas = init("canvas").canvas,w = (canvas.width = window.innerWidth),h = (canvas.height = window.innerHeight),ropes = [];//variables definitionlet nameOfVariable = "value",mouse = {},last_mouse = {},rl = 50,randl = [],target = { x: w/2, y: h/2 },last_target = {},t = 0,q = 10,da = [],type = "l";for (let i = 0; i < 100; i++) {ropes.push(new rope(w / 2,h / 2,(Math.random() * 1 + 0.5) * 500,Math.random() * 0.4 + 0.1,Math.random()*15+5));randl.push(Math.random() * 2 - 1);da.push(0);}//place for objects in animationfunction draw() {if (mouse.x) {target.errx = mouse.x - target.x;target.erry = mouse.y - target.y;} else {target.errx =w / 2 +(h / 2 - q) *Math.sqrt(2) *Math.cos(t) /(Math.pow(Math.sin(t), 2) + 1) -target.x;target.erry =h / 2 +(h / 2 - q) *Math.sqrt(2) *Math.cos(t) *Math.sin(t) /(Math.pow(Math.sin(t), 2) + 1) -target.y;}target.x += target.errx / 10;target.y += target.erry / 10;t += 0.01;for (let i = 0; i < ropes.length; i++) {if (randl[i] > 0) {da[i] += (1 - randl[i]) / 10;} else {da[i] += (-1 - randl[i]) / 10;}ropes[i].update({x:target.x +randl[i] * rl * Math.cos((i * 2 * Math.PI) / ropes.length + da[i]),y:target.y +randl[i] * rl * Math.sin((i * 2 * Math.PI) / ropes.length + da[i])});if(randl[i] > -0.5){type = "l";}else{type = "o";}ropes[i].show(type);}last_target.x = target.x;last_target.y = target.y;}//mouse positioncanvas.addEventListener("mousemove",function (e) {last_mouse.x = mouse.x;last_mouse.y = mouse.y;mouse.x = e.pageX - this.offsetLeft;mouse.y = e.pageY - this.offsetTop;},false);canvas.addEventListener("mouseleave", function(e) {mouse.x = false;mouse.y = false;});//animation framefunction loop() {window.requestAnimFrame(loop);c.clearRect(0, 0, w, h);draw();}//window resizewindow.addEventListener("resize", function () {(w = canvas.width = window.innerWidth),(h = canvas.height = window.innerHeight);loop();});//animation runnerloop();setInterval(loop, 1000 / 60);
};

css

body,
html {margin: 0px;padding: 0px;position: fixed;background: rgb(30, 30, 30);cursor: none;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2871077.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

粤嵌6818开发板触摸屏应用

一、触摸屏应用 1.触摸屏设备的名字 在Linux下&#xff0c;一切皆文件&#xff0c;触摸屏也是一个文件。 触摸屏设备的名字&#xff1a;/dev/input/event0 2.触摸屏的两个专业术语 事件 ->event0 当一些外接控制设备(鼠标、键盘&#xff0c;wifi&#xff0c;触摸屏&am…

4.1_7 文件共享

文章目录 4.1_7 文件共享&#xff08;一&#xff09;基于索引结点的共享方式&#xff08;硬链接&#xff09;&#xff08;二&#xff09;基于符号链的共享方式&#xff08;软链接&#xff09; 总结 4.1_7 文件共享 注意&#xff1a;多个用户共享同一个文件&#xff0c;意味着系…

单片机第四季-第二课:uCos2源码-BSP

1&#xff0c;初始uCos2 文件中uC开头的为uCos相关的。 2&#xff0c;uCos2源码工程建立 建立Source Insight工程 寻找main函数 (1)RTOS其实就是一个大的裸机程序&#xff0c;也是从main开始运行的 (2)main之前也是有一个汇编的启动文件的 (3)main中调用了很多初始化函数 bsp部…

《你就是孩子最好的玩具·升级版》笔记(一)尊重孩子的感受

目录 简介 经典摘录 简介 作者是&#xff08;美&#xff09;金伯莉布雷恩。奠定父母与孩子一生亲密关系的情感引导书。 什么是情感引导&#xff1f; 情感引导式教育的核心&#xff0c;就是教我们的孩子如何去合理地认知以及表达自己的感受&#xff0c;书中更侧重于在这方面为…

【NBUOJ刷题笔记】递推_递归+分治策略2

0. 前言 PS&#xff1a;本人并不是集训队的成员&#xff0c;因此代码写的烂轻点喷。。。本专题一方面是巩固自己的算法知识&#xff0c;另一方面是给NBU学弟学妹们参考解题思路&#xff08;切勿直接搬运抄袭提交作业&#xff01;&#xff01;&#xff01;&#xff09;最后&…

【matlab】如何批量修改图片命名

【matlab】如何批量修改图片命名 (●’◡’●)先赞后看养成习惯😊 假如我的图片如下,分别是1、2、3、4、5的命名 需求一:假如现在我需要在其后面统一加上_behind字符串,并且保留原命名,同时替换掉原先的图片,也就是不copy新的一份,直接在原文件夹中处理,我们可以进行…

软件杯 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

openEuler学习总结1(仅供学习参考)

华为的openEuler内核是源于Linux。 openEuler操作系统安装流程 第一步&#xff1a;开启虚拟化 第二步&#xff1a;安装一个虚拟化软件virtualbox 第三步&#xff1a;镜像 第四步&#xff1a;配置 设置虚拟机所在的目录 把网卡类型选择成桥接网卡 挂载镜像 设置完成&#xff0…

YOLOv9详解

1.概述 在逐层进行特征提取和空间转换的过程中&#xff0c;会损失大量信息&#xff0c;例如图中的马在建模过程中逐渐变得模糊&#xff0c;从而影响到最终的性能。YOLOv9尝试使用可编程梯度信息PGI解决这一问题。 具体来说&#xff0c; PGI包含三个部分&#xff0c;&#xff0…

【你也能从零基础学会网站开发】Web建站之jQuery进阶篇 jQuery常见属性和方法概述与使用

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 jQuery创建新的…

vulhub中Apache Shiro 认证绕过漏洞复现(CVE-2010-3863)

Apache Shiro是一款开源安全框架&#xff0c;提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用&#xff0c;同时也能提供健壮的安全性。 在Apache Shiro 1.1.0以前的版本中&#xff0c;shiro 进行权限验证前未对url 做标准化处理&#xff0c;攻击者可以构造/、//、…

交流互动系统|基于springboot框架+ Mysql+Java+Tomcat的交流互动系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

redis学习-String类型的命令介绍以及特殊情况分析

目录 1. set key value 2. get key 3. append key string 4. strlen key 5. incr key 和 decr key 6. incrby key num 和 decrby key num 7. getrange key start end 8. setrange key start string 9. setex key time value 10. setnx key value 11. mset key1 val…

【Web开发】CSS教学(超详细,满满的干货)

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【Web开发】CSS教学(超详细,满满的干货) &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 CSS一. 什么是CSS?1.1 基本语法规范1.2 引入方式1.3 规范 二. CSS选…

【第三章-1】面向对象——类与对象基本概念

目录 1.引例 2.类class 3. 面向对象中什么是对象&#xff1f; 4.类和对象的关系 5.面向对象编程 6.IDEA创建类与对象 7.成员变量 8.IDEA上代码练习成员变量 9.什么是方法 10.包Package&#xff08;详细参考&#xff09; 11.访问修饰符 12.面向对象与面向过程 1.引例…

Docker入门二(应用部署、迁移与备份、DockerFile、docker私有仓库、Docker-Compose)

文章目录 一、应用部署1.MySQL部署2.Redis部署3.Nginx部署 二、迁移与备份1.容器做成镜像2.镜像备份和恢复(打包成压缩包&#xff09; 三、DockerFile0.镜像从哪里来&#xff1f;1.什么是DockerFile2.DockerFile 构建特征3.DockerFile命令描述4.构建一个带vim的centos镜像案例5…

PC-DARTS: PARTIAL CHANNEL CONNECTIONS FOR MEMORY-EFFICIENT ARCHITECTURE SEARCH

PC-DARTS&#xff1a;用于内存高效架构搜索的部分通道连接 论文链接&#xff1a;https://arxiv.org/abs/1907.05737 项目链接&#xff1a;https://github.com/yuhuixu1993/PC-DARTS ABSTRACT 可微分体系结构搜索(DARTS)在寻找有效的网络体系结构方面提供了一种快速的解决方案…

[java基础揉碎]断点调试

一个实际需求: 1.在开发中&#xff0c;新手程序员在查找错误时&#xff0c;这时老程序员就会温馨提示&#xff0c;可以用断点调试&#xff0c; 一步一步的看源码执行的过程&#xff0c;从而发现错误所在。 2.重要提示:在断点调试过程中&#xff0c;是运行状态&#xff0c;是以…

TCP-IP 知识汇总

开放式系统互联模型------国际化标准组织ISO提出----协议组&#xff08;协议模型&#xff09; 应用层&#xff1a;接收用户数据&#xff0c;人机交互的接口 表示层&#xff1a;将编码转换为二进制&#xff08;加密、解密&#xff09;---统一格式 会话层&#xff1a;针对传输…

一维差分(模板)

差分是前缀和的逆运算&#xff0c;对于一个数组a&#xff0c;其差分数组b的每一项都是a [ i ]和前一项a [ i − 1 ]的差。 注意&#xff1a;差分数组和原数组必须分开存放&#xff01;&#xff01;&#xff01;&#xff01; #include <iostream> using namespace std;t…