【Canvas与艺术】十角大楼

devtools/2024/9/20 7:28:12/ 标签: canvas 十角大楼

【成图】

【代码】

<!DOCTYPE html>
<html lang="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head><title>十角大楼</title><style type="text/css">.centerlize{margin:0 auto;width:1200px;}</style></head><body οnlοad="init();"><div class="centerlize"><canvas id="myCanvas" width="12px" height="12px" style="border:1px dotted black;">如果看到这段文字说您的浏览器尚不支持HTML5 Canvas,请更换浏览器再试.</canvas></div></body>
</html>
<script type="text/javascript">
<!--
/*****************************************************************
* 将全体代码(从<!DOCTYPE到script>)拷贝下来,粘贴到文本编辑器中,
* 另存为.html文件,再用chrome浏览器打开,就能看到实现效果。
******************************************************************/// canvas的绘图环境
var ctx;// 高宽
const WIDTH=512;
const HEIGHT=512;// 舞台对象
var stage;//-------------------------------
// 初始化
//-------------------------------
function init(){// 获得canvas对象var canvas=document.getElementById('myCanvas');  canvas.width=WIDTH;canvas.height=HEIGHT;// 初始化canvas的绘图环境ctx=canvas.getContext('2d');  ctx.translate(WIDTH/2,HEIGHT/2);// 原点平移// 准备stage=new Stage();    stage.init();// 开幕animate();
}// 播放动画
function animate(){    stage.update();    stage.paintBg(ctx);stage.paintFg(ctx);     // 循环if(true){//sleep(100);window.requestAnimationFrame(animate);   }
}// 舞台类
function Stage(){// 初始化this.init=function(){}// 更新this.update=function(){    }// 画背景this.paintBg=function(ctx){ctx.clearRect(-WIDTH/2,-HEIGHT/2,WIDTH,HEIGHT);// 清屏    }// 画前景this.paintFg=function(ctx){// 白底ctx.fillStyle = "white";ctx.fillRect(-WIDTH/2,-HEIGHT/2,WIDTH,HEIGHT);// L的两端颜色var colors=[["red","rgb(255,181,181)"],["orange","rgb(255,244,193)"],["yellow","rgb(255,255,206)"],["green","rgb(232,255,196)"],["aqua","rgb(217,255,255)"],["blue","rgb(196,225,255)"],["navy","rgb(221,221,255)"],["fuchsia","rgb(255,191,255)"],["purple","rgb(230,202,255)"],["grey","rgb(240,240,240)"],                    ];const N=10;var r=80;for(var i=0;i<N;i++){var theta=Math.PI*2/N*i;var a=createPt(r*Math.cos(theta),r*Math.sin(theta));var alpha=Math.PI/N;var rad=r/4/Math.sin(alpha);var angle=theta+Math.PI/2-alpha;var b=createPt(a.x+rad*Math.cos(angle),a.y+rad*Math.sin(angle));rad=r*3*Math.sin(alpha);angle+=Math.PI/N*2;var c=createPt(b.x+rad*Math.cos(angle),b.y+rad*Math.sin(angle));rad=r*4*Math.sin(alpha)-r/4/Math.sin(alpha);angle+=Math.PI/N*2;var d=createPt(c.x+rad*Math.cos(angle),c.y+rad*Math.sin(angle));rad=r/4/Math.sin(alpha);angle+=Math.PI/N*2;var e=createPt(d.x+rad*Math.cos(angle),d.y+rad*Math.sin(angle));rad=r*3*Math.sin(alpha);angle+=Math.PI-Math.PI/N*2;var f=createPt(e.x+rad*Math.cos(angle),e.y+rad*Math.sin(angle));// 渐变色var gnt=ctx.createLinearGradient(b.x,b.y,d.x,d.y);            gnt.addColorStop(0.4,colors[i][0]);gnt.addColorStop(0.9,colors[i][1]);ctx.fillStyle=gnt;// 填充绘图    ctx.beginPath();ctx.moveTo(a.x,a.y);ctx.lineTo(b.x,b.y);ctx.lineTo(c.x,c.y);ctx.lineTo(d.x,d.y);ctx.lineTo(e.x,e.y);ctx.lineTo(f.x,f.y);ctx.closePath();ctx.fill();}writeText(ctx,WIDTH/2-30,HEIGHT/2-5,"逆火原创","8px consolas","lightgrey");// 版权}
}/*----------------------------------------------------------
函数:创建一个二维坐标点
x:横坐标
y:纵坐标
Pt即Point
----------------------------------------------------------*/
function createPt(x,y){var retval={};retval.x=x;retval.y=y;return retval;
}/*----------------------------------------------------------
函数:延时若干毫秒
milliseconds:毫秒数
----------------------------------------------------------*/
function sleep(milliSeconds) {const date = Date.now();let currDate = null;while (currDate - date < milliSeconds) {currDate = Date.now();} 
}/*----------------------------------------------------------
函数:书写文字
ctx:绘图上下文
x:横坐标
y:纵坐标
text:文字
font:字体
color:颜色
----------------------------------------------------------*/
function writeText(ctx,x,y,text,font,color){ctx.save();ctx.textBaseline="bottom";ctx.textAlign="center";ctx.font = font;ctx.fillStyle=color;ctx.fillText(text,x,y);ctx.restore();
}/*-------------------------------------------------------------
鲁迅说哪里是什么天才,我只是把别人喝咖啡的时间用在了学习上;
我觉得当年自己正好倒过来,把别人学习的时间用在了泡论坛上。与泡论坛类似的,追星,追剧,看电影,逛街购物,刷手机,其实都类似,它们并不关心你花了时间是否离成功近一些,它们只在意把你兜里的钱拿走,至少也要吸引你的注意力,消耗你的时间。人生不过三万天,如果说人真的有所谓敌人,这些时间大盗才真的是,
相比之下,那些侮辱你嘲笑你看不起你的人还真算不得什么。
--------------------------------------------------------------*/
//-->
</script>

END


http://www.ppmy.cn/devtools/88184.html

相关文章

Tomato靶机攻略

1、启动靶机 2、通过nmap -sA 192.168.168.0/24得到靶机IP 3、扫描目录 用dirb http://192.168.49.128扫描敏感目录 4、访问敏感目录 5、通过查看源码&#xff0c;发现其存在文件包含漏洞&#xff0c;利用该漏洞查看日志文件 http://192.168.168.131/antibot_image/antibots/…

拓扑未来物联网平台简介

拓扑未来物联网平台是基于Thingsboard二次开发的面向产业互联和智慧生活应用的物联网PaaS平台&#xff0c;支持适配各种网络环境和协议类型&#xff0c;可实现各种传感器和智能硬件的快速接入。有效降低物联网应用开发和部署成本&#xff0c;满足物联网领域设备连接、智能化改造…

spring boot 实现 Stream 钉钉事件订阅

1: 参考链接 https://open.dingtalk.com/document/orgapp/develop-stream-mode-push-server 2&#xff1a;钉钉开放平台订阅配置 配置之后运行一下上面提供的链接 里面的main方法&#xff0c;验证通道 3&#xff1a;订阅启动方式 EventListenerThread eventListenerThrea…

CF 训练2

688 div2 C Balanced Bitstring 思路&#xff1a;首先对于区间问题 &#xff0c; 我们可以先思考让它滑动滑动。对于[l,r],向后滑动一位后 &#xff0c;[l1 , r1],因为两次的区间中 &#xff0c; [l1 ,r]中所有数都是相同的 &#xff0c; 所以 可以得到s[l] s[r1] &#xff0…

智能语音转Markdown的神器

嘿&#xff0c;技术大咖们&#xff0c;今天我要给你们安利一个超酷炫的智能语音转Markdown笔记系统&#xff0c;它融合了前沿的语音识别技术和强大的AI大模型&#xff0c;绝对是记录和整理信息的神器&#xff01; 打造了一个语音转Markdown的神器 在线体验&#xff1a;智能语音…

Hibernate 继承关系映射

hibernate对类的继承关系的三种策略。以动物&#xff08;Animal、Pig、Bird&#xff09;为例 一、所有类的属性&#xff08;字段&#xff09;放入在一张表中 特点&#xff0c;数据库查询效率高&#xff0c;但粒度比较粗&#xff0c;会有冗余字段&#xff0c;配置特点是在配置…

技术详解:互联网医院系统源码与医保购药APP的整合开发策略

本篇文章&#xff0c;小编将从系统架构、数据安全、用户体验和技术实现等方面详细探讨互联网医院系统与医保购药APP的整合开发策略。 一、系统架构 1.模块化设计 互联网医院系统与医保购药APP的整合需要采用模块化设计。 2.微服务架构 每个功能模块作为一个独立的微服务&am…

Java中的网络编程:从Socket到NIO

Java中的网络编程&#xff1a;从Socket到NIO 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们来探讨Java中的网络编程&#xff0c;从基础的Socket编程到更高级的NIO&#xff08;New Input/Out…

网络安全中的IOC是指的什么?

网络安全中的IOC&#xff08;Indicators of Compromise&#xff09;指的是威胁指标&#xff0c;是网络安全领域中的一个重要概念。它指的是可以用来识别计算机系统、网络或应用程序中已经受到攻击或遭受威胁的特定特征。这些特征可以是恶意文件、恶意域名、已知攻击工具等&…

一文搞懂机器学习!2024.6月最新!(附代码实现)

前言 机器学习入门精品文章 随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文介绍机器学习的基础内容。 机器学习是人工智能的一个分支&#xff0c;它使计算机系统能够从数据中学习并做出决策或预测&am…

硬盘数据丢失不再怕,四大恢复工具帮你轻松逆转局面!

硬盘故障、误删文件、病毒攻击等原因导致数据丢失的情况时有发生。面对这种情况&#xff0c;如何高效、快速地进行硬盘数据恢复呢&#xff1f;接下来几款好用的数据恢复软件推荐给大家。 一、福昕数据恢复&#xff1a;全方位恢复&#xff0c;让数据无遗漏 链接&#xff1a;ww…

Linux第一个小程序-进度条 _git

文章目录 \r&&\n是什么缓冲区进度条代码 \r&&\n是什么 \r:回车的意思 回车&#xff1a;将光标移动到行开头。 \n:回车换行 &#xff08;将光标移动到行开头光标处换到一行&#xff09; 缓冲区 缓冲区&#xff1a;缓冲区先简单理解为一块内存&#xff0c;为显…

springboot项目如何合理分层呢

文章目录 前言一、spring项目如何合理的分层呢1. 常见的分层结构2. 分层设计的原则3. 示例结构 二、如果有第三方请求应该怎么分层呢1. 优点2. 实现示例1&#xff09; 用户信息接口2&#xff09; 订单信息接口 3. 组织结构 三、定义专用的请求和响应实体类的好处1. 避免恶意代码…

数据采集器

目录 1. 采集Redis 2. 采集MySQL 3. 采集容器 1. 采集Redis 出口商和集成 |普罗 米修斯 (prometheus.io) 发布 奥利弗006/redis_exporter (github.com) 在目标机器上安装redis 上传redis采集器包redis_exporter-v1.53.0.linux-amd64.tar.gz [rootharbor opt]# tar -xf …

Scikit-Learn 基础教程

1. 安装 Scikit-Learn 首先&#xff0c;确保你的 Python 环境已安装好。然后&#xff0c;可以通过 pip 或 conda 安装 scikit-learn&#xff1a; pip install -U scikit-learn或者如果你使用的是 Anaconda 发行版&#xff0c;可以运行&#xff1a; conda install scikit-lea…

【时时三省】(C语言基础)函数的声明和定义

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 函数声明 1.告诉编译器有一个函数叫什么&#xff0c;参数是什么&#xff0c;返回类型是什么。但是具体是不是存在&#xff0c;无关紧要。 2.函数的声明一般出现在函数的使用之前。要满足先声…

深入理解CSRF与SSRF攻击原理及防御措施

一、CSRF攻击原理及实例 CSRF简介 CSRF&#xff08;Cross-Site Request Forgery&#xff09;&#xff0c;即跨站请求伪造&#xff0c;是一种常见的网络攻击手段。攻击者利用已登录用户的cookie&#xff0c;在用户不知情的情况下&#xff0c;伪造请求执行特定操作。 CSRF攻击实…

论文笔记:InternImage—基于可变形卷积的视觉大模型,超越ViT视觉大模型,COCO 新纪录 64.5 mAP!

文章信息 Title&#xff1a;InternImage: Exploring Large-Scale Vision Foundation Models with Deformable ConvolutionsPaper Link&#xff1a;https://arxiv.org/abs/2211.05778 Code Link&#xff1a;https://github.com/OpenGVLab/InternImage 写在前面 拿到文章之后先看…

乐乐音乐Kotlin版

简介 乐乐音乐Kotlin版&#xff0c;主要是基于ExoPlayer框架开发的Android音乐播放器&#xff0c;它支持lrc歌词和动感歌词(ksc歌词、krc歌词、trc歌词、zrce歌词和hrc歌词等)、多种格式歌词转换器及制作动感歌词、翻译歌词和音译歌词。 编译环境 Android Studio Jellyfish | …

React 函数式组件在更新渲染时,整个函数体都会执行吗?

在 React 函数式组件更新渲染时,整个函数体都会重新执行。这是 React 函数式组件的一个重要特性。以下是一些关键点: 完整重新执行: 每次组件重新渲染时,函数组件的整个函数体都会从头到尾重新执行。 状态保留: 尽管函数体重新执行,但 React 会保留组件的状态。这是通过 Hooks…