初学P5.js 科幻效果背景
初学P5.js,有好的意见欢迎留下!
近日看了一个dome,分享一下...
JS:
class Rect { constructor() { this.options = [rand(width), rand(height)]; this.size = [rand(100), rand(200)]; this.amt = this.size[1]/200; this.speed = (1-this.amt)*3+1; this.hue = this.amt*.3 + .5; }; render(){ fill(this.hue, 1, 1, pow(1-this.amt, 2)*.1 + .1); for(let d of direction){ pushpop(() => { translate(d[0]*width, d[0]*height, d[0]*height); rect(...this.options, ...this.size); }) }; this.options[1] = (this.options[1]+this.speed)%height ; }; } // 总个数 let rects = []; let rects_num = 200; let direction = [ [-1, 0], [0, 0], [1, 0] ]; // setup()函数 将在程式开始时被调用一次,它可在程序开始时被用来定义初始的环境属性如荧幕大小、背景颜色及媒体加载如图像及字体。每个程序只能有一个 setup() 函数并且他不能在一开始执行后再次被调用 // tips: 请注意:在 setup() 内定义的变量并不能在其他函数内使用,这包括 draw() 。 setup = () => { // 定义元素是否缩放以及缩放值 pixelDensity(1); // 创建画布 createCanvas(); // 改变P5.js 对颜色的解读方式, 可用于颜色渐变; colorMode(HSB, 1, 1, 1); // 更改rect()对画布上方形的解读方式,CORNER、CORNERS、CENTER 或 RADIUS 四个参数 rectMode(CENTER); // 根据所设定的模式在显示窗口内混合像素。具体参数使用可参考文档--->https://p5js.org/zh-Hans/reference/#/p5/blendMode blendMode(ADD); // 设置形状的外形线色; stroke(1,.1); // 浏览器窗口发生改变时可触发 windowResized() }; // 初始函数触发 init = () => { rects = []; for(let i = 0; i <= rects_num; ++i) rects.push(new Rect()); } // 绘制 draw = () => { // 清除历史 clear(); // 逐一绘制 rects.map( r => r.render()); } // 随机函数 let rand = (x) => { return random(x)}; let pushpop = f => { push(); f(); pop();}; // 浏览器屏幕发生改变时 初始重绘 windowResized = () => {resizeCanvas(windowWidth, windowHeight); init();}; // 几何向量 let v2 = (x, y) => {return createVector(x, y)}; // 鼠标点击 mouseClicked = () => {windowResized();}
P5.js 推荐地址:https://p5js.org/zh-Hans/download/
效果图片:
我们不是一群默默无闻的码农,而是推进世界进步的开荒者
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构