<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
這次用到了一個名叫p5.js的框架:
p5.js 是一個JavaScript的函數庫,它在製作之初就和Processing有同樣的目標。就是讓藝術家,設計師,教育工作者和程式設計初學者能夠很容易,很輕鬆地學習和使用程式設計。並且它也能給現在的網頁帶來一些新的東西
它的結構:
//初始化,只執行一次 function setup () {} //繪製圖形,每一幀都讀取 function draw() {}
一個小案例
function setup() { createCanvas(400, 400); } function draw() { if(mouseIsPressed){ stroke(220); }else{ stroke(0); } line(300,300,mouseX,mouseY); }
效果是這樣的
* { margin:0; padding:0; } html, body { width:100%; height:100%; overflow: hidden; background:black;} canvas { display:block; } #controls { z-index: 2; margin: 20px; position: absolute; top: 0; left: 0; color: white; }
let size = 150; class Flower{ constructor(s, a1, a2){ let l = pow(random(), 2)*size; let l2 = random(); this.l2 = l2; this.x = cos(a1)*(l + l2*size/2); this.y = sin(a1)*(l + l2*size/2); this.hue = random(); this.goalX = this.x; this.goalY = this.y; this.dx = 10; this.dy = 10; this.s = s*(l2*.5 + .5); this.a = a1; this.squash = 1 - (l/size)*.8; this.weights = []; for (let i = 0; i < 5; i++){ this.weights[i] = random()*.5 + .5; } } update(){ this.x += this.dx; this.y += this.dy; this.dx *= .95; this.dy *= .95; let mx = (width/2 + this.x) - mouseX; let my = (height/2 + this.y) - mouseY; let d = dist(width/2 + this.x, height/2 + this.y, mouseX, mouseY); let a = atan2(my, mx); if (d > 1){ this.dx += cos(a)*size/d; this.dy += sin(a)*size/d; } this.x = (this.goalX + this.x)/2; this.y = (this.goalY + this.y)/2; } renderStem(){ pushPop(() => { noFill(); strokeWeight(this.l2*2 + 1); stroke(.35, 1, this.l2*.5 + .5); translate(this.x, size); let a = PI; if (this.x <= 0) a += PI/2; arc(0, 0, this.x*2, (this.y)*2 - size*2, a, a+PI/2); }) } render(){ pushPop(() => { noStroke(); fill(this.l2*.2 + .8); translate(this.x, this.y); rotate(this.a); scale(this.s*this.squash, this.s); for (let j = 0; j < 2; j++) for (let i = 0; i < 5; i++){ let a = i*TAU/5; let s = this.weights[i]; let b = (this.l2*.2 + .8)*(s*.1 + .9) fill(this.hue, .1*this.l2, b); if (j == 0){ s += .05; fill(0); } ellipse(cos(a)*.7*s, sin(a)*.7*s, 1); } fill(0); ellipse(0, 0, .7*(this.weights[0] + .05)); fill(.15, 1, 1*(this.l2*.2 + .8)); ellipse(0, 0, .7*this.weights[0]); }) } } function setup (){ pixelDensity(1); createCanvas(); colorMode(HSB, 1, 1, 1); windowResized(); } function init(){ flowers = []; for (let i = 0; i < 50; i++){ flowers.push( new Flower(random(20) + 20, random(PI*.8) + PI + PI*.1) ); } flowers = flowers.sort((a, b) => a.s - b.s); } function draw(){ background(0); translate(width/2, height/2); flowers.map(f => f.update()); flowers.map(f => f.renderStem()); flowers.map(f => f.render()); } function windowResized(){ resizeCanvas(windowWidth, windowHeight); init(); } let pushPop = f => {push();f();pop();}
以上就是基於JavaScript繪製動態花束的範例程式碼的詳細內容,更多關於JavaScript繪製花束的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45