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://www.rhkb.cn/news/277829.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

llm综述

1、语言模型进程 1.1、语言模型概述 语言模型从统计语言模型&#xff08;SLM&#xff09;逐步发展为神经语言模型&#xff08;NLM&#xff09;&#xff1b;近年&#xff0c;通过在大规模语料库上对 Transformer 模型进行预训练&#xff0c;预训练语言模型(Pre-training Langu…

国际前十正规外汇实时行情走势app软件最新排名(综合版)

外汇交易&#xff0c;作为当今世界金融市场上一个重要的板块&#xff0c;备受关注和热议。随着金融市场的日益发展&#xff0c;外汇交易也发展成为一个新兴的投资交易渠道。为了更好地满足投资者对外汇市场的需求&#xff0c;外汇实时行情走势app软件应运而生&#xff0c;它为投…

MyFileServer

靶场下载地址 https://download.vulnhub.com/myfileserver/My_file_server_1.ova 信息收集 # nmap -sn 192.168.56.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-24 22:07 CST Nmap scan report for 192.168.56.2 (192.168.56.2) Host is up (0.…

外包干了9天,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;2018年我通过校招踏入了南京一家软件公司&#xff0c;开始了我的职业生涯。那时的我&#xff0c;满怀热血和憧憬&#xff0c;期待着在这个行业中闯出一片天地。然而&#xff0c;随着时间的推移&#xff0c;我发现自己逐渐陷入…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Tabs)

通过页签进行内容视图切换的容器组件&#xff0c;每个页签对应一个内容视图。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 该组件从API Version 11开始默认支持安全区避让特性(默认值为&#x…

在Linux中进行OpenSSH升级

由于OpenSSH有严重漏洞&#xff0c;因此需要升级OpenSSH到最新版本。 OpenSSL和OpenSSH都要更新&#xff0c;OpenSSH依赖于OpenSSL。 第一步&#xff0c;查看当前的OpenSSH服务版本。 命令&#xff1a;ssh -V 第二步&#xff0c;安装、启动telnet&#xff0c;关闭安全文件&a…

【Linux】基础 IO(文件描述符)-- 详解

一、前言 1、文件的宏观理解 文件在哪呢&#xff1f; 从广义上理解&#xff0c;键盘、显示器、网卡、声卡、显卡、磁盘等几乎所有的外设都可以称之为文件&#xff0c;因为 “Linux 下&#xff0c;一切皆文件”。 从狭义上的理解&#xff0c;文件在磁盘&#xff08;硬件&#…

Win10系统使用IIS服务搭建WebDAV网站结合内网穿透公网访问本地文件

文章目录 推荐1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结&#xff1a; 推荐 前些天发现了一个巨牛的人工智能…

HTML万字学习总结

html文本标签特殊符号图片音频与视频超链接表单列表表格语义标签(布局) html文本标签 标签简介<html></html>根目录<head></head>规定文档相关的配置信息&#xff08;元数据<body></body>元素表示文档的内容<meta></meta>表示…

Postman请求API接口测试步骤和说明

Postman请求API接口测试步骤 本文测试的接口是国内数智客&#xff08;www.shuzike.com&#xff09;的API接口手机三要素验证&#xff0c;验证个人的姓名&#xff0c;身份证号码&#xff0c;手机号码是否一致。 1、设置接口的Headers参数。 Content-Type&#xff1a;applicati…

使用canvas实现图纸标记及回显

图纸 图纸标记后的效果图 最近做的一个qms项目里面&#xff0c;需要前端在图纸上实现标记及标记后的内容还要能够回显&#xff0c;然后后端通过标记的点&#xff0c;去读取标记图纸的内容&#xff0c;如一些公式、数据之类的&#xff0c;目前实现的功能有 在图纸上面进行矩形…

让el-input与其他组件能够显示在同一行

让el-input与其他组件能够显示在同一行 说明&#xff1a;由于el-input标签使用会默认占满一行&#xff0c;所以在某些需要多个展示一行的时候不适用&#xff0c;因此需要能够跟其他组件显示在同一行。 效果&#xff1a; 1、el-input标签内使用css属性inline 111<el-inp…

水泵房远程监控物联网系统

随着物联网技术的快速发展&#xff0c;越来越多的行业开始利用物联网技术实现设备的远程监控与管理。水泵房作为城市供水系统的重要组成部分&#xff0c;其运行状态的监控与管理至关重要。HiWoo Cloud作为专业的物联网云服务平台&#xff0c;为水泵房远程监控提供了高效、稳定、…

html--bug

文章目录 html html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>老师</title><style>body {background-color: #008000;margin: 0px;cursor: none;overflow: hidden;}</style></head><bod…

简易版 RPC 框架实现 1.0 -http实现

RPC 是“远程过程调用&#xff08;Remote Procedure Call&#xff09;”的缩写形式&#xff0c;比较通俗的解释是&#xff1a;像本地方法调用一样调用远程的服务。虽然 RPC 的定义非常简单&#xff0c;但是相对完整的、通用的 RPC 框架涉及很多方面的内容&#xff0c;例如注册发…

Web核心,HTTP,tomcat,Servlet

1&#xff0c;JavaWeb技术栈 B/S架构:Browser/Server&#xff0c;浏览器/服务器架构模式&#xff0c;它的特点是&#xff0c;客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器&#xff0c;获取Web资源&#xff0c;服务器把Web资源…

【C++刷题】优选算法——动态规划第一辑

1.状态表示是什么&#xff1f;简答理解是dp表里的值所表示的含义怎么来的&#xff1f;题目要求经验题目要求分析问题的过程中&#xff0c;发现重复子问题 2.状态转移方程dp[i]......细节问题&#xff1a;3.初始化控制填表的时候不越界4.填表顺序控制在填写当前状态的时候&#…

Kotlin:为什么创建类不能被继承

一、为什么创建类不能被继承 class或data class 默认情况下&#xff0c;Kotlin 类是最终&#xff08;final&#xff09;的&#xff1a;它们不能被继承。 示例&#xff1a;data class PsersonBean 反编译data class PsersonBean 生成 public final class PsersonBean 示例&…

产品推荐 - 基于FPGA XC7K325T+DSP TMS320C6678的双目交汇视觉图像处理平台

一、产品概述 TES601是一款基于FPGA与DSP协同处理架构的双目交汇视觉图像处理系统平台&#xff0c;该平台采用1片TI的KeyStone系列多核浮点/定点DSP TMS320C6678作为核心处理单元&#xff0c;来完成视觉图像处理算法&#xff0c;采用1片Xilinx的Kintex-7系列FPGA XC7K325T作为视…

【前端Vue】Vue3+Pinia小兔鲜电商项目第1篇:认识Vue3,1. Vue3组合式API体验【附代码文档】

全套笔记资料代码移步&#xff1a; 前往gitee仓库查看 感兴趣的小伙伴可以自取哦&#xff0c;欢迎大家点赞转发~ 全套教程部分目录&#xff1a; 部分文件图片&#xff1a; 认识Vue3 1. Vue3组合式API体验 通过 Counter 案例 体验Vue3新引入的组合式API vue <script> ex…